122 lines
3.5 KiB
TypeScript
122 lines
3.5 KiB
TypeScript
|
import { Request, Response } from "express";
|
||
|
import RoleService from "../../service/roleService";
|
||
|
import RoleFactory from "../../factory/admin/role";
|
||
|
import RolePermissionService from "../../service/rolePermissionService";
|
||
|
import PermissionHelper from "../../helpers/permissionHelper";
|
||
|
import { CreateRoleCommand, DeleteRoleCommand, UpdateRoleCommand } from "../../command/roleCommand";
|
||
|
import RoleCommandHandler from "../../command/roleCommandHandler";
|
||
|
import { UpdateRolePermissionsCommand } from "../../command/rolePermissionCommand";
|
||
|
import RolePermissionCommandHandler from "../../command/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);
|
||
|
}
|