@qelos/auth
Version:
Express Passport authentication service
53 lines (52 loc) • 2.02 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const user_1 = __importDefault(require("../models/user"));
const users_1 = require("../services/users");
const config_1 = require("../../config");
const passport_local_1 = require("passport-local");
const dates_1 = require("../services/dates");
/**
* Return the Passport Local Strategy object.
*/
module.exports = new passport_local_1.Strategy({
usernameField: 'username',
passwordField: 'password',
session: false,
passReqToCallback: true,
}, (req, username = '', password, done) => {
var _a, _b;
const { name, fullName, firstName, lastName, birthDate } = req.body || {};
const newUser = new user_1.default({
tenant: req.headers.tenant,
username: username.toLowerCase().trim() || ((_b = (_a = req.body) === null || _a === void 0 ? void 0 : _a.email) === null || _b === void 0 ? void 0 : _b.toLowerCase().trim()),
password: password.trim(),
fullName: fullName || name || (`${firstName} ${lastName}`),
firstName,
lastName,
birthDate: birthDate ? (0, dates_1.getAbsoluteDate)(birthDate) : undefined,
roles: [config_1.defaultRole],
});
const authType = req.body.authType || config_1.defaultAuthType;
(0, users_1.setToken)({ user: newUser }, authType)
.then(({ user, token, refreshToken, cookieToken }) => {
done(null, {
tenant: req.headers.tenant,
token,
refreshToken,
cookieToken,
user: {
username: user.username,
email: user.email,
name: user.fullName,
fullName: user.fullName,
firstName: user.firstName,
lastName: user.lastName,
roles: user.roles,
},
});
})
.catch(done);
});