Complete passport setup
This commit is contained in:
52
api/controllers/SessionController.js
Normal file
52
api/controllers/SessionController.js
Normal file
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
* SessionController
|
||||
*
|
||||
* @module :: Controller
|
||||
* @description :: A set of functions called `actions`.
|
||||
*
|
||||
* Actions contain code telling Sails how to respond to a certain type of request.
|
||||
* (i.e. do stuff, then send some JSON, show an HTML page, or redirect to another URL)
|
||||
*
|
||||
* You can configure the blueprint URLs which trigger these actions (`config/controllers.js`)
|
||||
* and/or override them with custom routes (`config/routes.js`)
|
||||
*
|
||||
* NOTE: The code you write here supports both HTTP and Socket.io automatically.
|
||||
*
|
||||
* @docs :: http://sailsjs.org/#!documentation/controllers
|
||||
*/
|
||||
var passport = require('passport');
|
||||
|
||||
module.exports = {
|
||||
|
||||
create: function(req,res) {
|
||||
passport.authenticate('local', function(err, user, info) {
|
||||
if(err || !user) {
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
req.logIn(user, function(err) {
|
||||
if (err) {
|
||||
res.redirect('/login');
|
||||
}
|
||||
return res.redirect('/');
|
||||
});
|
||||
})(req, res);
|
||||
},
|
||||
|
||||
destroy: function(req, res) {
|
||||
req.logout();
|
||||
res.send('logout successful');
|
||||
},
|
||||
|
||||
/**
|
||||
* Overrides for the settings in `config/controllers.js`
|
||||
* (specific to SessionController)
|
||||
*/
|
||||
_config: {
|
||||
blueprints: {
|
||||
shortcuts: false,
|
||||
rest: false
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
@@ -11,7 +11,7 @@ module.exports = function(req, res, next) {
|
||||
|
||||
// User is allowed, proceed to the next policy,
|
||||
// or if this is the last policy, the controller
|
||||
if (req.session.authenticated) {
|
||||
if (req.isAuthenticated()) {
|
||||
return next();
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,11 @@ module.exports.policies = {
|
||||
'find': true,
|
||||
'create': true,
|
||||
'update': true
|
||||
},
|
||||
|
||||
SessionController: {
|
||||
'create': true,
|
||||
'destroy': 'isAuthenticated'
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
@@ -35,10 +35,13 @@ module.exports.routes = {
|
||||
'/': {
|
||||
view: 'home/index'
|
||||
},
|
||||
'/about': {
|
||||
controller: 'staticPagesController',
|
||||
action: 'about'
|
||||
},
|
||||
|
||||
// static pages
|
||||
'get /about': 'StaticPagesController.about',
|
||||
|
||||
// session
|
||||
'post /login': 'SessionController.create',
|
||||
'post /logout': 'SessionController.destroy',
|
||||
|
||||
/*
|
||||
// But what if you want your home page to display
|
||||
|
||||
Reference in New Issue
Block a user