fme-tradechat-server
Version: 
tradechat server
61 lines • 3.18 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
Object.defineProperty(exports, "__esModule", { value: true });
// config/passport.js
// load all the things we need
var LocalStrategy = require('passport-local').Strategy;
const fme_logger_1 = require("fme-logger");
var L = new fme_logger_1.Log("Passport");
// load up the user model
// var Code              = require('../../tradechat-db/models/codes.js');
var valid = require('validator');
var ObjectId = require('mongodb').ObjectId;
class PassportController {
    constructor(tradechatServer, passport) {
        passport.serializeUser((user, done) => {
            L.info("In passport serailizer", user._id);
            done(null, user._id);
        });
        passport.deserializeUser((id, done) => __awaiter(this, void 0, void 0, function* () {
            //	L.info("###############Deserial",id,done);
            var user = yield tradechatServer.users.getById(id);
            if (!user) {
                L.error("deserialze user not found 0", id);
                done("no user id, " + id, null);
            }
            done(null, user);
        }));
        passport.use('local-login', new LocalStrategy({
            // by default, local strategy uses username and password, we will override with email
            usernameField: 'email',
            passwordField: 'password',
            passReqToCallback: true // allows us to pass back the entire request to the callback
        }, (req, email, password, done) => __awaiter(this, void 0, void 0, function* () {
            L.info("logging in", email);
            let cleanEmail = email.toLowerCase().trim();
            var users = yield tradechatServer.users.userDb.find({ 'local.email': cleanEmail }).toArray();
            if (users.length == 0) {
                L.error("local-login: no user found", cleanEmail);
                return done(null, false, req.flash("message", "no user by that name found"));
            }
            if (users.length > 1) {
                L.error("multiple users with this email!", cleanEmail);
            }
            var user = users[0];
            if (!tradechatServer.users.checkPassword(password.trim(), user)) {
                L.info("user", email, "attempted to sign in with incorrect password");
                return done(null, false, req.flash("message", 'Oops! Wrong password.')); // create the loginMessage and save it to 
            }
            return done(null, user);
        })));
    }
}
exports.PassportController = PassportController;
//# sourceMappingURL=passport.js.map