users can be registered and logged in

pull/13/head
unknown 2018-10-31 21:17:57 -04:00
parent 2002d3ebd7
commit 54b65bc3da
6 changed files with 32 additions and 10 deletions

View File

@ -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()
})
}

View File

@ -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)
})

View File

@ -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 () {

View File

@ -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

View File

@ -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)
}

View File

@ -31,6 +31,7 @@ module.exports.routes = {
'GET /register': {
view: 'pages/login'
},
'GET /app': 'TargetController.show',
/***************************************************************************
* *