Files
project.linkedcorp.net/backend/src/modules/users/controller.js
T
2026-10-26 16:42:19 -05:00

59 lines
2.5 KiB
JavaScript

import { ok, asyncHandler } from '../../utils/http.js';
import * as service from './service.js';
import * as sessions from '../auth/sessions-service.js';
export const getUsers = asyncHandler(async (req, res) => ok(res, await service.listUsers()));
export const getRoles = asyncHandler(async (req, res) => ok(res, await service.listRoles()));
export const postUser = asyncHandler(async (req, res) => {
const user = await service.createUser(req.body, req.currentUser);
ok(res, user, 201);
});
export const putUser = asyncHandler(async (req, res) => {
const user = await service.updateUser(Number(req.params.id), req.body, req.currentUser);
ok(res, user);
});
export const patchUserActive = asyncHandler(async (req, res) => {
const user = await service.setUserActive(Number(req.params.id), !!req.body.isActive, req.currentUser);
ok(res, user);
});
export const postApproveUser = asyncHandler(async (req, res) => {
const user = await service.approveUser(Number(req.params.id), req.body, req.currentUser);
ok(res, user);
});
export const postRejectUser = asyncHandler(async (req, res) => {
await service.rejectUser(Number(req.params.id), req.currentUser.id);
ok(res, { rejected: true });
});
export const postResendUserEmail = asyncHandler(async (req, res) => {
ok(res, await service.resendUserEmail(Number(req.params.id), req.currentUser.id));
});
export const getUserModules = asyncHandler(async (req, res) => ok(res, await service.getUserModules(Number(req.params.id))));
export const putUserModules = asyncHandler(async (req, res) => {
ok(res, await service.setUserModules(Number(req.params.id), req.body?.modules, req.currentUser));
});
export const getUserSessions = asyncHandler(async (req, res) => {
const userId = Number(req.params.id);
await sessions.assertManageTarget(userId, req.currentUser);
ok(res, await sessions.listSessions(userId, req.currentUser.id === userId ? req.currentUser.sessionPublicId : null));
});
export const deleteUserSession = asyncHandler(async (req, res) => {
const userId = Number(req.params.id);
await sessions.assertManageTarget(userId, req.currentUser);
ok(res, await sessions.revokeSession(userId, req.params.sessionId, req.currentUser.id, 'admin', req.currentUser.sessionPublicId));
});
export const postRevokeUserSessions = asyncHandler(async (req, res) => {
const userId = Number(req.params.id);
await sessions.assertManageTarget(userId, req.currentUser);
const result = await sessions.revokeAll(userId, req.currentUser.id, 'admin');
ok(res, { ...result, current: userId === req.currentUser.id });
});