UNPKG

@greenpress/auth

Version:

Express Passport authentication service

104 lines (103 loc) 4 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()); }); }; 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 { Types: { ObjectId } } = require('mongoose'); const UsersService = require('../services/users'); const { isObjectId } = require('../../helpers/mongo-utils'); const privilegedUserFields = 'email name roles'; function getUsers(req, res) { const isPrivileged = !!(req.userPayload && req.userPayload.isPrivileged); const users = (req.query.users || '') .split(',') .map(id => { const val = id.trim(); if (isObjectId(val)) { return ObjectId(val); } return false; }) .filter(Boolean); if (!(isPrivileged || users.length)) { res.status(200).json([]).end(); return; } const query = isPrivileged && !users.length ? {} : { _id: { $in: users } }; query.tenant = req.headers.tenant; user_1.default.find(query) .select(isPrivileged ? privilegedUserFields : 'name') .lean() .then((users) => { res.status(200).json(users || []).end(); }) .catch(() => res.status(404).json({ message: 'could not load users' }).end()); return; } function getUser(req, res) { const isPrivileged = !!(req.userPayload && req.userPayload.isPrivileged); user_1.default.findOne({ _id: req.params.userId, tenant: req.headers.tenant }) .select(isPrivileged ? privilegedUserFields : 'name') .lean() .then((user) => { if (!user) { return Promise.reject(null); } res.status(200).json(user).end(); }) .catch(() => res.status(404).json({ message: 'user not exists' }).end()); return; } function createUser(req, res) { return __awaiter(this, void 0, void 0, function* () { const user = new user_1.default(req.body); user.tenant = req.headers.tenant; try { const { _id, name, email, roles } = yield user.save(); res.status(200).json({ _id, name, email, roles }).end(); } catch (e) { res.status(400).json({ message: 'user creation failed' }).end(); } }); } function updateUser(req, res) { return __awaiter(this, void 0, void 0, function* () { const { email, roles, name, password } = req.body || {}; try { yield UsersService.updateUser({ _id: req.params.userId, tenant: req.headers.tenant }, { email, roles, name, password }); res.status(200).json({ email, name, roles, _id: req.params.userId }).end(); } catch (e) { res.status(400).json({ message: 'user update failed' }).end(); } }); } function removeUser(req, res) { return __awaiter(this, void 0, void 0, function* () { try { yield UsersService.deleteUser(req.params.userId, req.headers.tenant); res.status(200).json({ _id: req.params.userId }).end(); } catch (e) { res.status(400).json({ message: 'user deletion failed' }).end(); } }); } exports.default = { getUsers, createUser, getUser, updateUser, removeUser, };