From c251396987dcffa38d421303162661b68443314f Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Wed, 9 Jul 2014 16:59:22 -0400 Subject: got some datamodels --- server/auth/index.js | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 68 insertions(+), 2 deletions(-) (limited to 'server/auth/index.js') diff --git a/server/auth/index.js b/server/auth/index.js index 3b02ec9..709fd0d 100644 --- a/server/auth/index.js +++ b/server/auth/index.js @@ -1,2 +1,68 @@ -module.exports = { -} \ No newline at end of file +/* jshint node: true */ + +var passport = require('passport'), + LocalStrategy = require('passport-local').Strategy, + _ = require('lodash'), + util = require('../util'), + config = require('../../../config.json'), + User = require('../models/User'); + +var auth = { + + init: function () { + passport.serializeUser(auth.serializeUser); + passport.deserializeUser(auth.deserializeUser); + + passport.use(new LocalStrategy(auth.verifyLocalUser)) + }, + + loggedInLocal: function (req, res, next) { + passport.authenticate("local", function(err, user, info){ + if (err) { + return res.json({ error: err }); + } + if (! user) { + return info ? res.json(info) : res.redirect("/login"); + } + + user.last_ip = util.ip2num( req.ip ) + user.save(function(err, data){ if (err) console.err('error setting ip for user') }) + + req.logIn(user, function(err) { + if (err) { return next(err); } + var returnTo = req.session.returnTo + delete req.session.returnTo + return res.json({ status: "OK", returnTo: returnTo || "/profile" }) + }); + })(req, res, next); + }, + + logout: function (req, res) { + req.logout(); + res.redirect('/'); + }, + + serializeUser: function (user, done) { + done(null, user.id); + }, + + deserializeUser: function (id, done) { + User.find({ id: id }, function (err, user) { + done(err, user) + }); + }, + + verifyLocalUser: function (username, password, done) { + User.findByUsername(username, function(err, user){ + if (err) { return done(err); } + if (! user) { + return done(null, false, { error: { errors: { username: { message: 'No such username.' } }}}) + } + if (! user.validPassword(password)) { + return done(null, false, { error: { errors: { password: { message: 'Incorrect password.' } }}}) + } + return done(null, user); + }); + } + +} -- cgit v1.2.3-70-g09d2