@greenpress/auth
Version:
Express Passport authentication service
34 lines (33 loc) • 1.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const config_1 = require("../../config");
const users_1 = require("../services/users");
const passport_local_1 = require("passport-local");
module.exports = new passport_local_1.Strategy({
usernameField: 'email',
passwordField: 'password',
session: false,
passReqToCallback: true,
}, (req, email, password, done) => {
const query = { email: email.trim(), tenant: req.headers.tenant };
const authType = req.body.authType || config_1.defaultAuthType;
if (req.body.roles && req.body.roles instanceof Array) {
query.roles = { $in: req.body.roles };
}
(0, users_1.getUser)(query)
.then((user) => (0, users_1.comparePassword)(user, password))
.then((user) => (0, users_1.setToken)(user, authType))
.then(({ user, token, refreshToken, cookieToken }) => {
done(null, {
token,
refreshToken,
cookieToken,
user: {
email: user.email,
name: user.name,
roles: user.roles,
},
});
})
.catch(done);
});