users can be registered and logged in
parent
2002d3ebd7
commit
54b65bc3da
|
@ -108,7 +108,7 @@ module.exports = {
|
|||
} else {
|
||||
// make sure the server always returns a response to the client
|
||||
// i.e passport-local bad username/email or password
|
||||
res.status(403).json({
|
||||
res.status(401).json({
|
||||
'error': err.toString()
|
||||
})
|
||||
}
|
||||
|
|
|
@ -12,7 +12,9 @@ module.exports = {
|
|||
create: async function (req, res, next) {
|
||||
const passportHelper = await sails.helpers.passport()
|
||||
passportHelper.protocols.local.register(req.body, function (err, user) {
|
||||
if (err) return res.negotiate(err)
|
||||
if (err) return res.status(500).json({
|
||||
error: err.toString()
|
||||
})
|
||||
|
||||
res.json(user)
|
||||
})
|
||||
|
@ -21,7 +23,9 @@ module.exports = {
|
|||
update: async function (req, res, next) {
|
||||
const passportHelper = await sails.helpers.passport()
|
||||
passportHelper.protocols.local.update(req.body, function (err, user) {
|
||||
if (err) return res.negotiate(err)
|
||||
if (err) return res.status(500).json({
|
||||
error: err.toString()
|
||||
})
|
||||
|
||||
res.json(user)
|
||||
})
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// api/helpers/passport.js
|
||||
// from https://github.com/trailsjs/sails-auth/blob/master/api/services/passport.js
|
||||
|
||||
const url = require('url')
|
||||
|
||||
module.exports = {
|
||||
|
@ -17,8 +18,19 @@ module.exports = {
|
|||
}
|
||||
}
|
||||
|
||||
function PassportHelper () {
|
||||
const passport = require('passport')
|
||||
passport.serializeUser(function (user, next) {
|
||||
next(null, user.id)
|
||||
})
|
||||
passport.deserializeUser(function (id, next) {
|
||||
return User.findOne({id: id})
|
||||
.then(function (user) {
|
||||
next(null, user || null)
|
||||
return user
|
||||
}).catch(next)
|
||||
})
|
||||
|
||||
function PassportHelper () {
|
||||
this.protocols = sails.config.protocols
|
||||
|
||||
this.loadStrategies = function () {
|
||||
|
|
|
@ -52,15 +52,17 @@ module.exports = {
|
|||
/**
|
||||
* callback run before creating a Passport
|
||||
*/
|
||||
beforeCreate: async function (passport) {
|
||||
return hashPassword(passport)
|
||||
beforeCreate: async function (passport, next) {
|
||||
await hashPassword(passport)
|
||||
return next()
|
||||
},
|
||||
|
||||
/**
|
||||
* callback run before updating
|
||||
*/
|
||||
beforeUpdate: async function (passport) {
|
||||
return hashPassword(passport)
|
||||
beforeUpdate: async function (passport, next) {
|
||||
await hashPassword(passport)
|
||||
return next()
|
||||
},
|
||||
|
||||
// methods
|
||||
|
|
|
@ -34,6 +34,8 @@ module.exports.protocols = {
|
|||
const res = await Passport.validatePassword(password, passport)
|
||||
if (!res) throw new Error('incorrect password')
|
||||
return next(null, user, passport)
|
||||
} else {
|
||||
throw new Error('that account does not have password login enabled')
|
||||
}
|
||||
} catch (e) {
|
||||
return next(e)
|
||||
|
@ -54,11 +56,12 @@ module.exports.protocols = {
|
|||
user: newUser.id,
|
||||
accessToken: token
|
||||
})
|
||||
return next(null, newUser)
|
||||
} catch (e) {
|
||||
console.log(newUser)
|
||||
await User.destroy(newUser.id)
|
||||
throw e
|
||||
}
|
||||
return next(null, newUser)
|
||||
} catch (e) {
|
||||
return next(e)
|
||||
}
|
||||
|
|
|
@ -31,6 +31,7 @@ module.exports.routes = {
|
|||
'GET /register': {
|
||||
view: 'pages/login'
|
||||
},
|
||||
'GET /app': 'TargetController.show',
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
|
|
Loading…
Reference in New Issue