change folder structure
This commit is contained in:
parent
a332e4d779
commit
a09c75a998
167 changed files with 262 additions and 246 deletions
126
src/controller/admin/management/backupController.ts
Normal file
126
src/controller/admin/management/backupController.ts
Normal file
|
@ -0,0 +1,126 @@
|
|||
import { Request, Response } from "express";
|
||||
import { FileSystemHelper } from "../../../helpers/fileSystemHelper";
|
||||
import BackupHelper from "../../../helpers/backupHelper";
|
||||
import InternalException from "../../../exceptions/internalException";
|
||||
|
||||
/**
|
||||
* @description get generated backups
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function getGeneratedBackups(req: Request, res: Response): Promise<any> {
|
||||
let filesInFolder = FileSystemHelper.getFilesInDirectory(`backup`);
|
||||
|
||||
let sorted = filesInFolder.sort((a, b) => new Date(b.split(".")[0]).getTime() - new Date(a.split(".")[0]).getTime());
|
||||
|
||||
res.json(sorted);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description download backup file
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function downloadBackupFile(req: Request, res: Response): Promise<any> {
|
||||
let filename = req.params.filename;
|
||||
|
||||
let filepath = FileSystemHelper.formatPath("backup", filename);
|
||||
|
||||
res.sendFile(filepath, {
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description get uploaded backups
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function getUploadedBackups(req: Request, res: Response): Promise<any> {
|
||||
let filesInFolder = FileSystemHelper.getFilesInDirectory("uploaded-backup");
|
||||
|
||||
let sorted = filesInFolder.sort((a, b) => new Date(b.split("_")[0]).getTime() - new Date(a.split("_")[0]).getTime());
|
||||
|
||||
res.json(sorted);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description download uploaded backup file
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function downloadUploadedBackupFile(req: Request, res: Response): Promise<any> {
|
||||
let filename = req.params.filename;
|
||||
|
||||
let filepath = FileSystemHelper.formatPath("uploaded-backup", filename);
|
||||
|
||||
res.sendFile(filepath, {
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description create backup manually
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function createManualBackup(req: Request, res: Response): Promise<any> {
|
||||
await BackupHelper.createBackup({});
|
||||
|
||||
res.sendStatus(204);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description restore backup by selected
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function restoreBackupByLocalFile(req: Request, res: Response): Promise<any> {
|
||||
let filename = req.body.filename;
|
||||
let partial = req.body.partial;
|
||||
let include = req.body.include;
|
||||
let overwrite = req.body.overwrite;
|
||||
|
||||
await BackupHelper.loadBackup({ filename, include, partial, overwrite });
|
||||
|
||||
res.sendStatus(204);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description restore uploaded backup by selected
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function restoreBackupByUploadedFile(req: Request, res: Response): Promise<any> {
|
||||
let filename = req.body.filename;
|
||||
let partial = req.body.partial;
|
||||
let include = req.body.include;
|
||||
|
||||
await BackupHelper.loadBackup({ filename, path: "uploaded-backup", include, partial });
|
||||
|
||||
res.sendStatus(204);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description upload backup
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function uploadBackupFile(req: Request, res: Response): Promise<any> {
|
||||
if (!req.file) {
|
||||
throw new InternalException("File upload failed");
|
||||
}
|
||||
res.sendStatus(204);
|
||||
}
|
121
src/controller/admin/management/roleController.ts
Normal file
121
src/controller/admin/management/roleController.ts
Normal file
|
@ -0,0 +1,121 @@
|
|||
import { Request, Response } from "express";
|
||||
import RoleService from "../../../service/management/roleService";
|
||||
import RoleFactory from "../../../factory/admin/management/role";
|
||||
import RolePermissionService from "../../../service/management/rolePermissionService";
|
||||
import PermissionHelper from "../../../helpers/permissionHelper";
|
||||
import { CreateRoleCommand, DeleteRoleCommand, UpdateRoleCommand } from "../../../command/management/role/roleCommand";
|
||||
import RoleCommandHandler from "../../../command/management/role/roleCommandHandler";
|
||||
import { UpdateRolePermissionsCommand } from "../../../command/management/role/rolePermissionCommand";
|
||||
import RolePermissionCommandHandler from "../../../command/management/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);
|
||||
}
|
166
src/controller/admin/management/userController.ts
Normal file
166
src/controller/admin/management/userController.ts
Normal file
|
@ -0,0 +1,166 @@
|
|||
import { Request, Response } from "express";
|
||||
import UserService from "../../../service/management/userService";
|
||||
import UserFactory from "../../../factory/admin/management/user";
|
||||
import UserPermissionService from "../../../service/management/userPermissionService";
|
||||
import PermissionHelper from "../../../helpers/permissionHelper";
|
||||
import RoleFactory from "../../../factory/admin/management/role";
|
||||
import {
|
||||
DeleteUserCommand,
|
||||
UpdateUserCommand,
|
||||
UpdateUserRolesCommand,
|
||||
} from "../../../command/management/user/userCommand";
|
||||
import UserCommandHandler from "../../../command/management/user/userCommandHandler";
|
||||
import MailHelper from "../../../helpers/mailHelper";
|
||||
import { CLUB_NAME } from "../../../env.defaults";
|
||||
import { UpdateUserPermissionsCommand } from "../../../command/management/user/userPermissionCommand";
|
||||
import UserPermissionCommandHandler from "../../../command/management/user/userPermissionCommandHandler";
|
||||
import BadRequestException from "../../../exceptions/badRequestException";
|
||||
|
||||
/**
|
||||
* @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 = 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 = 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 = 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 = 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 = 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 = 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 = req.params.id;
|
||||
|
||||
let { mail, isOwner } = await UserService.getById(id);
|
||||
|
||||
if (isOwner) {
|
||||
throw new BadRequestException("Owner cannot be deleted");
|
||||
}
|
||||
|
||||
let deleteUser: DeleteUserCommand = {
|
||||
id: id,
|
||||
};
|
||||
await UserCommandHandler.delete(deleteUser);
|
||||
|
||||
try {
|
||||
// sendmail
|
||||
await MailHelper.sendMail(
|
||||
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);
|
||||
}
|
155
src/controller/admin/management/webapiController.ts
Normal file
155
src/controller/admin/management/webapiController.ts
Normal file
|
@ -0,0 +1,155 @@
|
|||
import { Request, Response } from "express";
|
||||
import WebapiService from "../../../service/management/webapiService";
|
||||
import ApiFactory from "../../../factory/admin/management/webapi";
|
||||
import WebapiPermissionService from "../../../service/management/webapiPermissionService";
|
||||
import PermissionHelper from "../../../helpers/permissionHelper";
|
||||
import {
|
||||
CreateWebapiCommand,
|
||||
DeleteWebapiCommand,
|
||||
UpdateWebapiCommand,
|
||||
} from "../../../command/management/webapi/webapiCommand";
|
||||
import WebapiCommandHandler from "../../../command/management/webapi/webapiCommandHandler";
|
||||
import { UpdateWebapiPermissionsCommand } from "../../../command/management/webapi/webapiPermissionCommand";
|
||||
import WebapiPermissionCommandHandler from "../../../command/management/webapi/webapiPermissionCommandHandler";
|
||||
import { JWTHelper } from "../../../helpers/jwtHelper";
|
||||
import { CLUB_NAME } from "../../../env.defaults";
|
||||
import { StringHelper } from "../../../helpers/stringHelper";
|
||||
|
||||
/**
|
||||
* @description get All apis
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function getAllWebapis(req: Request, res: Response): Promise<any> {
|
||||
let apis = await WebapiService.getAll();
|
||||
|
||||
res.json(ApiFactory.mapToBase(apis));
|
||||
}
|
||||
|
||||
/**
|
||||
* @description get api by id
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function getWebapiById(req: Request, res: Response): Promise<any> {
|
||||
const id = parseInt(req.params.id);
|
||||
let api = await WebapiService.getById(id);
|
||||
|
||||
res.json(ApiFactory.mapToSingle(api));
|
||||
}
|
||||
|
||||
/**
|
||||
* @description get api token by id
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function getWebapiTokenById(req: Request, res: Response): Promise<any> {
|
||||
const id = parseInt(req.params.id);
|
||||
let { token } = await WebapiService.getTokenById(id);
|
||||
|
||||
res.send(token);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description get permissions by api
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function getWebapiPermissions(req: Request, res: Response): Promise<any> {
|
||||
const id = parseInt(req.params.id);
|
||||
let permissions = await WebapiPermissionService.getByApi(id);
|
||||
|
||||
res.json(PermissionHelper.convertToObject(permissions.map((p) => p.permission)));
|
||||
}
|
||||
|
||||
/**
|
||||
* @description create new api
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function createWebapi(req: Request, res: Response): Promise<any> {
|
||||
let title = req.body.title;
|
||||
let expiry = req.body.expiry || null;
|
||||
|
||||
let token = await JWTHelper.create(
|
||||
{
|
||||
iss: CLUB_NAME,
|
||||
sub: "api_token_retrieve",
|
||||
aud: StringHelper.random(32),
|
||||
},
|
||||
{ useExpiration: false }
|
||||
);
|
||||
|
||||
let createApi: CreateWebapiCommand = {
|
||||
token: token,
|
||||
title: title,
|
||||
expiry: expiry,
|
||||
};
|
||||
await WebapiCommandHandler.create(createApi);
|
||||
|
||||
res.sendStatus(204);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description update api data
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function updateWebapi(req: Request, res: Response): Promise<any> {
|
||||
const id = parseInt(req.params.id);
|
||||
let title = req.body.title;
|
||||
let expiry = req.body.expiry || null;
|
||||
|
||||
let updateApi: UpdateWebapiCommand = {
|
||||
id: id,
|
||||
title: title,
|
||||
expiry: expiry,
|
||||
};
|
||||
await WebapiCommandHandler.update(updateApi);
|
||||
|
||||
res.sendStatus(204);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description update api assigned permission strings
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function updateWebapiPermissions(req: Request, res: Response): Promise<any> {
|
||||
const id = parseInt(req.params.id);
|
||||
let permissions = req.body.permissions;
|
||||
|
||||
let permissionStrings = PermissionHelper.convertToStringArray(permissions);
|
||||
|
||||
let updateApiPermissions: UpdateWebapiPermissionsCommand = {
|
||||
webapiId: id,
|
||||
permissions: permissionStrings,
|
||||
};
|
||||
await WebapiPermissionCommandHandler.updatePermissions(updateApiPermissions);
|
||||
|
||||
res.sendStatus(204);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description delete api by id
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function deleteWebapi(req: Request, res: Response): Promise<any> {
|
||||
const id = parseInt(req.params.id);
|
||||
|
||||
let deleteApi: DeleteWebapiCommand = {
|
||||
id: id,
|
||||
};
|
||||
await WebapiCommandHandler.delete(deleteApi);
|
||||
|
||||
res.sendStatus(204);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue