UNPKG

@qelos/auth

Version:

Express Passport authentication service

105 lines (104 loc) 4.69 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 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) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.setMe = exports.getMe = void 0; const users_1 = require("../services/users"); const workspaces_1 = require("../services/workspaces"); function getImpersonate(req, res) { return __awaiter(this, void 0, void 0, function* () { const userId = req.headers['x-impersonate-user']; const workspaceId = req.headers['x-impersonate-workspace']; const [user, workspace] = yield Promise.all([ (0, users_1.getUser)({ username: req.headers['x-impersonate-user'], tenant: req.userPayload.tenant }).catch(), workspaceId ? (0, workspaces_1.getWorkspaceForUser)(req.headers.tenant, userId, workspaceId).catch() : Promise.resolve() ]); if (!user) { return res.status(403).json({ message: 'user not exist' }).end(); } if (workspaceId && !workspace) { return res.status(403).json({ message: 'workspace not exist' }).end(); } const firstName = user.firstName; const lastName = user.lastName; const fullName = user.fullName || `${firstName} ${lastName}`; res.status(200).json({ _id: user._id, username: user.username, email: user.email, name: fullName, firstName, lastName, fullName, roles: user.roles, profileImage: user.profileImage, metadata: user.metadata, workspace }).end(); }); } function getMe(req, res) { return __awaiter(this, void 0, void 0, function* () { if (req.userPayload.isPrivileged && req.headers['x-impersonate-user']) { return getImpersonate(req, res); } let metadata = {}; try { metadata = yield (0, users_1.getUserMetadata)(req.userPayload.sub, req.headers.tenant); } catch (_a) { // } const firstName = req.userPayload.firstName; const lastName = req.userPayload.lastName; const fullName = req.userPayload.fullName || req.userPayload.name || `${firstName} ${lastName}`; res.status(200).json({ _id: req.userPayload.sub, username: req.userPayload.username, email: req.userPayload.email, name: fullName, firstName, lastName, fullName, profileImage: req.userPayload.profileImage, roles: req.userPayload.roles, metadata, workspace: req.activeWorkspace }).end(); }); } exports.getMe = getMe; function setMe(req, res) { return __awaiter(this, void 0, void 0, function* () { const { username, password, name, fullName, firstName, lastName, birthDate, profileImage, metadata } = req.body || {}; try { yield (0, users_1.updateUser)({ _id: req.userPayload.sub, tenant: req.userPayload.tenant }, { password, fullName: fullName || name, firstName, lastName, birthDate, profileImage, metadata }, req.authConfig); res.status(200).json({ _id: req.userPayload.sub, username: username || req.userPayload.username, email: req.userPayload.email, phone: req.userPayload.phone, name: name || req.userPayload.name, fullName: fullName || req.userPayload.fullName, firstName: firstName || req.userPayload.firstName, lastName: lastName || req.userPayload.lastName, birthDate: birthDate || req.userPayload.birthDate, roles: req.userPayload.roles, profileImage: profileImage || req.userPayload.profileImage, metadata, workspace: req.activeWorkspace }).end(); } catch (e) { res.status(500).json({ message: 'failed to update your user information' }).end(); } }); } exports.setMe = setMe;