121 lines
3.6 KiB
TypeScript
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);
|
|
}
|