@greenpress/auth
Version:
Express Passport authentication service
104 lines (103 loc) • 4 kB
JavaScript
;
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,
};