123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- var passport = require('passport');
- var LocalStrategy = require('passport-local').Strategy;
- var encrypt = require('../encrypt');
- var models = require('../models');
- var User = models.User;
- var userSafeParams = ['id', 'name', 'username', 'bio', 'twitter_handle', 'site'];
- passport.serializeUser(function(user, done) {
- done(null, user.id);
- });
- passport.deserializeUser(function(id, done) {
- User.find({where: {id: id}, attributes: userSafeParams}).success(function(user) {
- done(null, user);
- }).error(function(err) {
- done(err, null);
- });
- });
- passport.use(new LocalStrategy(
- function(username, password, done) {
-
- User.find({ where: { username: username }}).success(function(user) {
- var encryptedPassword = encrypt.encryptPassword(password).encryptedPassword
- if (!user) {
- done(null, false, { message: 'Unknown user' });
- } else if (encryptedPassword != user.password) {
- done(null, false, { message: 'Invalid password'});
- } else {
- done(null, user);
- }
- }).error(function(err) {
- done(err);
- });
- }
- ));
- module.exports = function(app) {
- app.get('/sign_in', function(req, res) {
- res.render('session/sign_in', {});
- });
- app.get('/sign_up', function(req, res) {
- res.render('session/sign_up', {});
- });
-
-
-
-
- app.get('/sign_out', function(req, res) {
- req.logout();
- res.redirect('/');
- });
-
-
-
- app.post('/session', passport.authenticate('local', {
- successRedirect: '/',
- failureRedirect: '/sign_in'
- }));
-
-
- app.get('/session', function(req, res) {
- res.json(req.user);
- });
-
-
- app.post('/registration', function(req, res) {
- var password = req.param('password');
- if(password === req.param('password_confirm')) {
-
- var encryptedPassword = encrypt.encryptPassword(password).encryptedPassword;
-
-
- User.findOrCreate({name: req.param('name'), username: req.param('username'), password: encryptedPassword}).success(function(user) {
- req.login(user, function(err) {
- return res.redirect('/');
- });
- });
- } else {
- res.redirect('/sign_up');
- }
- });
- };
|