user and role controllers
This commit is contained in:
parent
6865507545
commit
ab01fc2f76
25 changed files with 769 additions and 26 deletions
121
src/controller/admin/roleController.ts
Normal file
121
src/controller/admin/roleController.ts
Normal file
|
@ -0,0 +1,121 @@
|
|||
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);
|
||||
}
|
158
src/controller/admin/userController.ts
Normal file
158
src/controller/admin/userController.ts
Normal file
|
@ -0,0 +1,158 @@
|
|||
import { Request, Response } from "express";
|
||||
import UserService from "../../service/userService";
|
||||
import UserFactory from "../../factory/admin/user";
|
||||
import UserPermissionService from "../../service/userPermissionService";
|
||||
import PermissionHelper from "../../helpers/permissionHelper";
|
||||
import RoleFactory from "../../factory/admin/role";
|
||||
import { DeleteUserCommand, UpdateUserCommand, UpdateUserRolesCommand } from "../../command/userCommand";
|
||||
import UserCommandHandler from "../../command/userCommandHandler";
|
||||
import MailHelper from "../../helpers/mailHelper";
|
||||
import { CLUB_NAME } from "../../env.defaults";
|
||||
import { UpdateUserPermissionsCommand } from "../../command/userPermissionCommand";
|
||||
import UserPermissionCommandHandler from "../../command/userPermissionCommandHandler";
|
||||
|
||||
/**
|
||||
* @description get All users
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function getAllUsers(req: Request, res: Response): Promise<any> {
|
||||
let users = await UserService.getAll();
|
||||
|
||||
res.json(UserFactory.mapToBase(users));
|
||||
}
|
||||
|
||||
/**
|
||||
* @description get user by id
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function getUserById(req: Request, res: Response): Promise<any> {
|
||||
const id = parseInt(req.params.id);
|
||||
let user = await UserService.getById(id);
|
||||
|
||||
res.json(UserFactory.mapToSingle(user));
|
||||
}
|
||||
|
||||
/**
|
||||
* @description get permissions by user
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function getUserPermissions(req: Request, res: Response): Promise<any> {
|
||||
const id = parseInt(req.params.id);
|
||||
let permissions = await UserPermissionService.getByUser(id);
|
||||
|
||||
res.json(PermissionHelper.convertToObject(permissions.map((p) => p.permission)));
|
||||
}
|
||||
|
||||
/**
|
||||
* @description get assigned roles by user
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function getUserRoles(req: Request, res: Response): Promise<any> {
|
||||
const id = parseInt(req.params.id);
|
||||
|
||||
let roles = await UserService.getAssignedRolesByUserId(id);
|
||||
|
||||
res.json(RoleFactory.mapToBase(roles));
|
||||
}
|
||||
|
||||
/**
|
||||
* @description update user data
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function updateUser(req: Request, res: Response): Promise<any> {
|
||||
const id = parseInt(req.params.id);
|
||||
let mail = req.body.mail;
|
||||
let firstname = req.body.firstname;
|
||||
let lastname = req.body.lastname;
|
||||
let username = req.body.username;
|
||||
|
||||
let updateUser: UpdateUserCommand = {
|
||||
id: id,
|
||||
mail: mail,
|
||||
firstname: firstname,
|
||||
lastname: lastname,
|
||||
username: username,
|
||||
};
|
||||
await UserCommandHandler.update(updateUser);
|
||||
|
||||
res.sendStatus(204);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description update user assigned permission strings
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function updateUserPermissions(req: Request, res: Response): Promise<any> {
|
||||
const id = parseInt(req.params.id);
|
||||
let permissions = req.body.permissions;
|
||||
|
||||
let permissionStrings = PermissionHelper.convertToStringArray(permissions);
|
||||
|
||||
let updateUserPermissions: UpdateUserPermissionsCommand = {
|
||||
userId: id,
|
||||
permissions: permissionStrings,
|
||||
};
|
||||
await UserPermissionCommandHandler.updatePermissions(updateUserPermissions);
|
||||
|
||||
res.sendStatus(204);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description update user assigned roles
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function updateUserRoles(req: Request, res: Response): Promise<any> {
|
||||
const id = parseInt(req.params.id);
|
||||
let roleIds = req.body.roleIds as Array<number>;
|
||||
|
||||
let updateRoles: UpdateUserRolesCommand = {
|
||||
id: id,
|
||||
roleIds: roleIds,
|
||||
};
|
||||
await UserCommandHandler.updateRoles(updateRoles);
|
||||
|
||||
res.sendStatus(204);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description delete user by id
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function deleteUser(req: Request, res: Response): Promise<any> {
|
||||
const id = parseInt(req.params.id);
|
||||
|
||||
let user = await UserService.getById(id);
|
||||
|
||||
let deleteUser: DeleteUserCommand = {
|
||||
id: id,
|
||||
};
|
||||
await UserCommandHandler.delete(deleteUser);
|
||||
|
||||
try {
|
||||
// sendmail
|
||||
let mailhelper = new MailHelper();
|
||||
await mailhelper.sendMail(
|
||||
user.mail,
|
||||
`Email Bestätigung für Mitglieder Admin-Portal von ${CLUB_NAME}`,
|
||||
`Ihr Nutzerkonto des Adminportals wurde erfolgreich gelöscht.`
|
||||
);
|
||||
} catch (error) {}
|
||||
|
||||
res.sendStatus(204);
|
||||
}
|
|
@ -38,7 +38,7 @@ export async function login(req: Request, res: Response): Promise<any> {
|
|||
let userPermissions = await UserPermissionService.getByUser(id);
|
||||
let userPermissionStrings = userPermissions.map((e) => e.permission);
|
||||
let userRoles = await UserService.getAssignedRolesByUserId(id);
|
||||
let rolePermissions = await RolePermissionService.getByRoles(userRoles.map((e) => e.id));
|
||||
let rolePermissions = userRoles.length != 0 ? await RolePermissionService.getByRoles(userRoles.map((e) => e.id)) : [];
|
||||
let rolePermissionStrings = rolePermissions.map((e) => e.permission);
|
||||
let permissionObject = PermissionHelper.convertToObject([...userPermissionStrings, ...rolePermissionStrings]);
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ import UserPermissionCommandHandler from "../command/userPermissionCommandHandle
|
|||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function inviteUser(req: Request, res: Response): Promise<any> {
|
||||
export async function inviteUser(req: Request, res: Response, isInvite: boolean = true): Promise<any> {
|
||||
let origin = req.headers.origin;
|
||||
let username = req.body.username;
|
||||
let mail = req.body.mail;
|
||||
|
@ -62,7 +62,7 @@ export async function inviteUser(req: Request, res: Response): Promise<any> {
|
|||
await mailhelper.sendMail(
|
||||
mail,
|
||||
`Email Bestätigung für Mitglieder Admin-Portal von ${CLUB_NAME}`,
|
||||
`Öffne folgenden Link: ${origin}/setup/verify?mail=${mail}&token=${token}`
|
||||
`Öffne folgenden Link: ${origin}/${isInvite ? "invite" : "setup"}/verify?mail=${mail}&token=${token}`
|
||||
);
|
||||
|
||||
res.sendStatus(204);
|
||||
|
@ -114,8 +114,6 @@ export async function finishInvite(req: Request, res: Response, grantAdmin: bool
|
|||
window: 2,
|
||||
});
|
||||
|
||||
console.log(valid);
|
||||
|
||||
if (!valid) {
|
||||
throw new UnauthorizedRequestException("Token not valid or expired");
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue