users can be registered and logged in
parent
2002d3ebd7
commit
54b65bc3da
|
@ -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()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
})
|
})
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,7 @@ module.exports.routes = {
|
||||||
'GET /register': {
|
'GET /register': {
|
||||||
view: 'pages/login'
|
view: 'pages/login'
|
||||||
},
|
},
|
||||||
|
'GET /app': 'TargetController.show',
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* *
|
* *
|
||||||
|
|
Loading…
Reference in New Issue