a6cc41666e
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
59 lines
2.5 KiB
JavaScript
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 });
|
|
});
|