%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/opti/workflow/
Upload File :
Create Path :
Current File : /home/opti/workflow/passport.js

var passport = require("passport");
var con = require('./config');
var LocalStrategy = require('passport-local').Strategy;
var bcrypt = require('bcrypt');
// used to serialize the user for the session
passport.serializeUser(function (user, done) {
    user.id = user.insertId || user.id
    done(null, user.id);
});

// used to deserialize the user
passport.deserializeUser(function (id, done) {
    let sql = `SELECT * FROM Users WHERE id= '${id}'`;

    con.query(sql, function (err, user) {
        user = user[0];
        done(err, user);

    })
});

passport.use('local-signup', new LocalStrategy({
    usernameField: 'email',
    passwordField: 'password',
    passReqToCallback: true
},
    function (req, email, password, done) {
        let userId = '';
        let globalOrgId ='';
        var company = {
            name: req.body.name,
            address: req.body.address,
            description: req.body.description
        };
        let sql = `INSERT INTO Companies (name, address, description) VALUES ('${company.name}','${company.address}', '${company.description}' )`;

        con.query(sql, function (err, result) {
            if (err) {
                return done(err)
            }

            var orgId = result.insertId
            globalOrgId = result.insertIid

            var salt = bcrypt.genSaltSync(10);
            var hash = bcrypt.hashSync(req.body.password, salt);

            var today = new Date();

            let obj = {
                firstName: req.body.firstName,
                lastName: req.body.lastName,
                phone: req.body.phone,
                email: req.body.email,
                orgId: orgId,
                //companyId, orgId,
                status: 1,
                roleId: 'isAdmin',
                password: hash,
                createdAt: today
            }
            

            let sql2 = `INSERT INTO Users (firstName, lastName, phone, email, password, orgId, roleId) VALUES ('${obj.firstName}', '${obj.lastName}', '${obj.phone}', '${obj.email}', '${obj.password}', '${obj.orgId}', '${obj.roleId}')`;

            con.query(sql2, function (err, result) {
                if (err) {
                    return done(err);
                }
                userId = result.id;
                return done(null, result);
            });
            
            
        });
        

    }
));

passport.use('local-login', new LocalStrategy({
    usernameField: 'email',
    passwordField: 'password',
    passReqToCallback: true
},
    function (req, email, password, done) {


        let sql2 = `SELECT * FROM Users WHERE email='${email}'`;

        con.query(sql2, function (err, result) {

            if (err)
                return done(err);
            // if no user is found, return the message
            if (result.length < 1) {
                return done(null, false, req.flash('loginMessage', 'Wrong Credentials!'));

            } else if (result.length > 0) {
                if (bcrypt.compareSync(password, result[0].password)) {

                    return done(null, result[0]);
                }

            }
        })

    }
));


module.exports = passport;

Zerion Mini Shell 1.0