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 }); });