ff-admin-server/src/controller/admin/user/roleController.ts
2025-01-05 14:14:00 +01:00

121 lines
3.6 KiB
TypeScript

import { Request, Response } from "express";
import RoleService from "../../../service/user/roleService";
import RoleFactory from "../../../factory/admin/user/role";
import RolePermissionService from "../../../service/user/rolePermissionService";
import PermissionHelper from "../../../helpers/permissionHelper";
import { CreateRoleCommand, DeleteRoleCommand, UpdateRoleCommand } from "../../../command/user/role/roleCommand";
import RoleCommandHandler from "../../../command/user/role/roleCommandHandler";
import { UpdateRolePermissionsCommand } from "../../../command/user/role/rolePermissionCommand";
import RolePermissionCommandHandler from "../../../command/user/role/rolePermissionCommandHandler";
/**
* @description get All roles
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
export async function getAllRoles(req: Request, res: Response): Promise<any> {
let roles = await RoleService.getAll();
res.json(RoleFactory.mapToBase(roles));
}
/**
* @description get role by id
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
export async function getRoleById(req: Request, res: Response): Promise<any> {
const id = parseInt(req.params.id);
let role = await RoleService.getById(id);
res.json(RoleFactory.mapToSingle(role));
}
/**
* @description get permissions by role
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
export async function getRolePermissions(req: Request, res: Response): Promise<any> {
const id = parseInt(req.params.id);
let permissions = await RolePermissionService.getByRole(id);
res.json(PermissionHelper.convertToObject(permissions.map((p) => p.permission)));
}
/**
* @description create new role
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
export async function createRole(req: Request, res: Response): Promise<any> {
let role = req.body.role;
let createRole: CreateRoleCommand = {
role: role,
};
await RoleCommandHandler.create(createRole);
res.sendStatus(204);
}
/**
* @description update role data
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
export async function updateRole(req: Request, res: Response): Promise<any> {
const id = parseInt(req.params.id);
let role = req.body.role;
let updateRole: UpdateRoleCommand = {
id: id,
role: role,
};
await RoleCommandHandler.update(updateRole);
res.sendStatus(204);
}
/**
* @description update role assigned permission strings
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
export async function updateRolePermissions(req: Request, res: Response): Promise<any> {
const id = parseInt(req.params.id);
let permissions = req.body.permissions;
let permissionStrings = PermissionHelper.convertToStringArray(permissions);
let updateRolePermissions: UpdateRolePermissionsCommand = {
roleId: id,
permissions: permissionStrings,
};
await RolePermissionCommandHandler.updatePermissions(updateRolePermissions);
res.sendStatus(204);
}
/**
* @description delete role by id
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
export async function deleteRole(req: Request, res: Response): Promise<any> {
const id = parseInt(req.params.id);
let deleteRole: DeleteRoleCommand = {
id: id,
};
await RoleCommandHandler.delete(deleteRole);
res.sendStatus(204);
}