UNPKG

angoose

Version:

Angoose is a Remote Method Invocation module that comes with built-in mongoose/angular support. Now you can call server side module in browser just like you're in the server side!

55 lines (46 loc) 1.98 kB
/** @module LoginService */ var angoose =require('../../lib/angoose'); //@TODO: should be able to use require("angoose") if the extension is individual module var crypto = require("crypto"); var UserModel = require("./user-model"); var service = {}; function logger(){ return angoose.getLogger("angoose-users"); } /** * User login * */ service.signin = function(username, password, $callback){ var $context = angoose.getContext(); if (! username || ! password) return $callback("Must provide username/password"); UserModel.findOne({"email": username }, function(err, user) { if (err) return $callback(err); if(!user){ logger().debug("user ", username, "does not exist"); return $callback("Username/password do not match."); } logger().debug("User login: ", username, password && password.length, user.get("password.salt")) //var hashedPassword = require("crypto").pbkdf2Sync(password); var hashedPassword = password; if(user.password !== hashedPassword){ logger().debug("user ", username, "password did not match"); return $callback("Username/password do not match."); } // A login module must: 1) Implement a signin method 2) callback with an object with userId and roles properties user.userId = user._id; user.roles = user.roles; // keep user in session, optional $context.getRequest().session.user = user; $callback(false, user); }); // end inContext } /** * Signout * */ service.signout = function( $callback){ var $context = angoose.getContext(); $context.getRequest().session.user = null; $callback(false); } module.exports = angoose.module('LoginService', service);