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 { } else {
// make sure the server always returns a response to the client // make sure the server always returns a response to the client
// i.e passport-local bad username/email or password // i.e passport-local bad username/email or password
res.status(403).json({ res.status(401).json({
'error': err.toString() 'error': err.toString()
}) })
} }

View File

@ -12,7 +12,9 @@ module.exports = {
create: async function (req, res, next) { create: async function (req, res, next) {
const passportHelper = await sails.helpers.passport() const passportHelper = await sails.helpers.passport()
passportHelper.protocols.local.register(req.body, function (err, user) { 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) res.json(user)
}) })
@ -21,7 +23,9 @@ module.exports = {
update: async function (req, res, next) { update: async function (req, res, next) {
const passportHelper = await sails.helpers.passport() const passportHelper = await sails.helpers.passport()
passportHelper.protocols.local.update(req.body, function (err, user) { 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) res.json(user)
}) })

View File

@ -1,5 +1,6 @@
// api/helpers/passport.js // api/helpers/passport.js
// from https://github.com/trailsjs/sails-auth/blob/master/api/services/passport.js // from https://github.com/trailsjs/sails-auth/blob/master/api/services/passport.js
const url = require('url') const url = require('url')
module.exports = { module.exports = {
@ -17,8 +18,19 @@ module.exports = {
} }
} }
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 () { function PassportHelper () {
const passport = require('passport')
this.protocols = sails.config.protocols this.protocols = sails.config.protocols
this.loadStrategies = function () { this.loadStrategies = function () {
@ -110,7 +122,7 @@ function PassportHelper () {
let user let user
if (!req.user) { if (!req.user) {
if (!passport) { // new user signing up, create a new user if (!passport) { // new user signing up, create a new user
user = await User.create(userAttrs).fetch() user = await User.create(userAttrs).fetch()
await Passport.create({ await Passport.create({
...q, ...q,

View File

@ -52,15 +52,17 @@ module.exports = {
/** /**
* callback run before creating a Passport * callback run before creating a Passport
*/ */
beforeCreate: async function (passport) { beforeCreate: async function (passport, next) {
return hashPassword(passport) await hashPassword(passport)
return next()
}, },
/** /**
* callback run before updating * callback run before updating
*/ */
beforeUpdate: async function (passport) { beforeUpdate: async function (passport, next) {
return hashPassword(passport) await hashPassword(passport)
return next()
}, },
// methods // methods

View File

@ -34,6 +34,8 @@ module.exports.protocols = {
const res = await Passport.validatePassword(password, passport) const res = await Passport.validatePassword(password, passport)
if (!res) throw new Error('incorrect password') if (!res) throw new Error('incorrect password')
return next(null, user, passport) return next(null, user, passport)
} else {
throw new Error('that account does not have password login enabled')
} }
} catch (e) { } catch (e) {
return next(e) return next(e)
@ -54,11 +56,12 @@ module.exports.protocols = {
user: newUser.id, user: newUser.id,
accessToken: token accessToken: token
}) })
return next(null, newUser)
} catch (e) { } catch (e) {
console.log(newUser)
await User.destroy(newUser.id) await User.destroy(newUser.id)
throw e throw e
} }
return next(null, newUser)
} catch (e) { } catch (e) {
return next(e) return next(e)
} }

View File

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