sails-generate-auth
Advanced tools
Comparing version 0.1.2 to 0.1.3
{ | ||
"name": "sails-generate-auth", | ||
"version": "0.1.2", | ||
"version": "0.1.3", | ||
"description": "Generate a Passport.js authentication layer for your Sails app that will Rock Your Socks™.", | ||
@@ -5,0 +5,0 @@ "author": "Kasper Isager <kasperisager@gmail.com>", |
@@ -5,3 +5,3 @@ ![image_squidhome@2x.png](http://i.imgur.com/RIvu9.png) | ||
[![NPM version](https://badge.fury.io/js/sails-generate-auth.png)](http://badge.fury.io/js/sails-generate-auth) [![Code Climate](https://codeclimate.com/github/kasperisager/sails-generate-auth.png)](https://codeclimate.com/github/kasperisager/sails-generate-auth) [![Dependency Status](https://gemnasium.com/kasperisager/sails-generate-auth.png)](https://gemnasium.com/kasperisager/sails-generate-auth) | ||
[![Release](http://img.shields.io/npm/v/sails-generate-auth.svg?style=flat)](https://www.npmjs.org/package/sails-generate-auth) [![Code Climate](http://img.shields.io/codeclimate/github/kasperisager/sails-generate-auth.svg?style=flat)](https://codeclimate.com/github/kasperisager/sails-generate-auth) [![Dependency Status](http://img.shields.io/gemnasium/kasperisager/sails-generate-auth.svg?style=flat)](https://gemnasium.com/kasperisager/sails-generate-auth) [![Downloads](http://img.shields.io/npm/dm/sails-generate-auth.svg?style=flat)](https://www.npmjs.org/package/sails-generate-auth) | ||
@@ -36,2 +36,8 @@ | ||
In order to use a generator you will need the latest Sails, ~0.10, which can be installed with: | ||
```sh | ||
npm install sails@beta -g | ||
``` | ||
<!-- | ||
@@ -75,2 +81,6 @@ ```sh | ||
module.exports = { | ||
// Enforce model schema in the case of schemaless databases | ||
schema: true, | ||
attributes: { | ||
@@ -77,0 +87,0 @@ username : { type: 'string', unique: true }, |
@@ -126,3 +126,3 @@ /** | ||
if (err) { | ||
res.redirect('/login'); | ||
res.redirect(req.param('action') === 'register' ? '/register' : '/login'); | ||
} | ||
@@ -129,0 +129,0 @@ // Upon successful login, send the user to the homepage were req.user |
@@ -27,3 +27,3 @@ var bcrypt = require('bcrypt'); | ||
// party service (e.g. 'oauth', 'oauth2', 'openid'). | ||
protocol: { type: 'string', required: true }, | ||
protocol: { type: 'alphanumeric', required: true }, | ||
@@ -47,3 +47,3 @@ // Local field: Password | ||
// and a `refreshToken` will be issued. | ||
provider : { type: 'string' }, | ||
provider : { type: 'alphanumericdashed' }, | ||
identifier : { type: 'string' }, | ||
@@ -59,3 +59,3 @@ tokens : { type: 'json' }, | ||
// https://github.com/balderdashy/waterline | ||
user: { model: 'User' }, | ||
user: { model: 'User', required: true }, | ||
@@ -62,0 +62,0 @@ /** |
@@ -21,3 +21,3 @@ /** | ||
* @param {Object} req | ||
* @param {Obecjt} res | ||
* @param {Object} res | ||
* @param {Function} next | ||
@@ -24,0 +24,0 @@ */ |
@@ -92,6 +92,6 @@ var passport = require('passport') | ||
provider : profile.provider | ||
, identifier : query.identifier | ||
, identifier : query.identifier.toString() | ||
}) | ||
.populate('user') | ||
.done(function (err, passport) { | ||
.exec(function (err, passport) { | ||
if (err) return next(err); | ||
@@ -104,3 +104,3 @@ | ||
if (!passport) { | ||
User.create(user).done(function (err, user) { | ||
User.create(user, function (err, user) { | ||
if (err) return next(err); | ||
@@ -110,3 +110,3 @@ | ||
Passport.create(query).done(function (err, passport) { | ||
Passport.create(query, function (err, passport) { | ||
// If a passport wasn't created, bail out | ||
@@ -123,3 +123,13 @@ if (err) return next(err); | ||
else { | ||
next(null, passport.user); | ||
// If the tokens have changed since the last session, update them | ||
if (query.hasOwnProperty('tokens') && query.tokens !== passport.tokens) { | ||
passport.tokens = query.tokens; | ||
} | ||
user = passport.user; | ||
// Save any updates to the Passport before moving on | ||
passport.save(function (err, passport) { | ||
next(err, user); | ||
}); | ||
} | ||
@@ -133,3 +143,3 @@ } else { | ||
Passport.create(query).done(function (err, passport) { | ||
Passport.create(query, function (err, passport) { | ||
// If a passport wasn't created, bail out | ||
@@ -249,4 +259,3 @@ if (err) return next(err); | ||
Object.keys(strategies).forEach(function (key) { | ||
var Strategy = require('passport-' + key).Strategy | ||
, options = { passReqToCallback: true }; | ||
var options = { passReqToCallback: true }, Strategy; | ||
@@ -259,9 +268,17 @@ if (key === 'local') { | ||
// Only load the local strategy if it's enabled in the config | ||
if (strategies[key]) { | ||
if (strategies.local) { | ||
Strategy = strategies[key].strategy; | ||
self.use(new Strategy(options, self.protocols.local.login)); | ||
} | ||
} else { | ||
var protocol = strategies[key].protocol | ||
, callback = path.join('auth', key, 'callback'); | ||
var protocol = strategies[key].protocol | ||
, callback = strategies[key].callback; | ||
if (!callback) { | ||
callback = path.join('auth', key, 'callback'); | ||
} | ||
Strategy = strategies[key].strategy; | ||
switch (protocol) { | ||
@@ -295,5 +312,5 @@ case 'oauth': | ||
passport.deserializeUser(function (id, next) { | ||
User.findOne(id).done(next); | ||
User.findOne(id, next); | ||
}); | ||
module.exports = passport; |
@@ -48,3 +48,3 @@ var validator = require('validator'); | ||
, email : email | ||
}).done(function (err, user) { | ||
}, function (err, user) { | ||
if (err) { | ||
@@ -59,3 +59,3 @@ req.flash('error', 'Error.Passport.User.Exists'); | ||
, user : user.id | ||
}).done(function (err, passport) { | ||
}, function (err, passport) { | ||
next(err, user); | ||
@@ -84,3 +84,3 @@ }); | ||
, user : user.id | ||
}).done(function (err, passport) { | ||
}, function (err, passport) { | ||
if (err) return next(err); | ||
@@ -93,3 +93,3 @@ | ||
, user : user.id | ||
}).done(function (err, passport) { | ||
}, function (err, passport) { | ||
next(err, user); | ||
@@ -127,3 +127,3 @@ }); | ||
User.findOne(query).done(function (err, user) { | ||
User.findOne(query, function (err, user) { | ||
if (err) return next(err); | ||
@@ -141,6 +141,6 @@ | ||
Passport.findOne().where({ | ||
Passport.findOne({ | ||
protocol : 'local' | ||
, user : user.id | ||
}).done(function (err, passport) { | ||
}, function (err, passport) { | ||
if (passport) { | ||
@@ -147,0 +147,0 @@ passport.validatePassword(password, function (err, res) { |
@@ -19,5 +19,5 @@ /** | ||
// In case you wish to turn off local authentication, simply | ||
// set this to false and remove any related routes and endpoints. | ||
local: true, | ||
local: { | ||
strategy: require('passport-local').Strategy | ||
}, | ||
@@ -27,2 +27,3 @@ twitter: { | ||
protocol: 'oauth', | ||
strategy: require('passport-twitter').Strategy, | ||
options: { | ||
@@ -37,2 +38,3 @@ consumerKey: 'your-consumer-key', | ||
protocol: 'oauth2', | ||
strategy: require('passport-github').Strategy, | ||
options: { | ||
@@ -47,2 +49,3 @@ clientID: 'your-client-id', | ||
protocol: 'oauth2', | ||
strategy: require('passport-facebook').Strategy, | ||
options: { | ||
@@ -56,5 +59,6 @@ clientID: 'your-client-id', | ||
name: 'Google', | ||
protocol: 'openid' | ||
protocol: 'openid', | ||
strategy: require('passport-google').Strategy | ||
} | ||
}; |
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
44274
950
158
0