Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *
- * Module dependencies
- */
- var User = require('../models/user')
- , UserValidator = require('../validators/user-validator')
- , Promise = require('everyauth').Promise;
- //Everyauth configuration
- module.exports = function(everyauth, repository){
- var validator = new UserValidator(repository);
- everyauth.everymodule.logoutPath('/user/logout');
- everyauth.everymodule.logoutRedirectPath('/');
- everyauth.everymodule.findUserById( function (userId, callback) {
- repository.get(userId, callback);
- // callback has the signature, function (err, user) {...}
- });
- everyauth.password
- .getLoginPath('/user/login') //Uri of path to login page
- .postLoginPath('/user/login') //Uri of path to login page form submission
- .loginView('user/login.jade')
- .loginLocals({
- title: 'Login'
- })
- .authenticate(function(login, password){
- var promise = this.Promise();
- validator.validateLoginForm(login, password, function(error){
- if(error) promise.fulfill(error);
- repository.get(login, function(error, user){
- //Fail the promise if we get an error or can't find the user
- if(error) return promise.fail(error);
- if(!user) return promise.fulfill(['user _'+ login + '_ does not exist.']);
- User.verifyPassword(user.password, user.salt, password, function(error){
- //Fail if we get an error during password validation
- if(error) return promise.fail(error);
- //Otherwise, we can fulfill our promise
- promise.fulfill(user);
- });
- });
- });
- return promise;
- })
- .loginSuccessRedirect('/')
- .getRegisterPath('/user/register') //Uri of path to registration
- .postRegisterPath('/user/register') //Uri of path for registration form submission
- .registerView('user/register.jade')
- .registerLocals({
- title: 'Register'
- })
- .extractExtraRegistrationParams(function(req){
- return{
- email:req.body.email,
- confirmPassword:req.body.confirmPassword
- };
- })
- .validateRegistration(function(newUserAttributes){
- var promise = this.Promise();
- validator.validateRegistrationForm(convertNewUserAttributes(newUserAttributes), function(error){
- if(error) return promise.fulfill(error);
- promise.fulfill();
- });
- return promise;
- })
- .registerUser( function (newUserAttributes) {
- var promise = this.Promise();
- repository.save(convertToUserObject(newUserAttributes), function(error, data){
- if(error) return promise.fail(error);
- if(!data) return promise.fulfill(['Unable to save registration']);
- promise.fulfill(data);
- });
- return promise;
- })
- .registerSuccessRedirect('/'); // Where to redirect to after a successful registration
- };
- function convertNewUserAttributes(newUserAttributes){
- return {username:newUserAttributes.login, email:newUserAttributes.email, password:newUserAttributes.password, confirmPassword:newUserAttributes.confirmPassword};
- }
- function convertToUserObject(newUserAttributes){
- var user = new User(newUserAttributes.login, newUserAttributes.email, newUserAttributes.password);
- user.password = User.encryptPassword(user.password, user.salt);
- return user;
- }
Add Comment
Please, Sign In to add comment