ff-admin-server/src/controller/admin/user/webapiController.ts

156 lines
4.5 KiB
TypeScript
Raw Normal View History

2025-01-21 11:47:28 +01:00
import { Request, Response } from "express";
2025-01-22 09:39:31 +01:00
import WebapiService from "../../../service/user/webapiService";
import ApiFactory from "../../../factory/admin/user/webapi";
import WebapiPermissionService from "../../../service/user/webapiPermissionService";
2025-01-21 11:47:28 +01:00
import PermissionHelper from "../../../helpers/permissionHelper";
2025-01-22 09:39:31 +01:00
import {
CreateWebapiCommand,
DeleteWebapiCommand,
UpdateWebapiCommand,
} from "../../../command/user/webapi/webapiCommand";
import WebapiCommandHandler from "../../../command/user/webapi/webapiCommandHandler";
import { UpdateWebapiPermissionsCommand } from "../../../command/user/webapi/webapiPermissionCommand";
import WebapiPermissionCommandHandler from "../../../command/user/webapi/webapiPermissionCommandHandler";
2025-01-21 13:54:52 +01:00
import { JWTHelper } from "../../../helpers/jwtHelper";
import { CLUB_NAME } from "../../../env.defaults";
import { StringHelper } from "../../../helpers/stringHelper";
2025-01-21 11:47:28 +01:00
/**
* @description get All apis
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
2025-01-22 09:39:31 +01:00
export async function getAllWebapis(req: Request, res: Response): Promise<any> {
let apis = await WebapiService.getAll();
2025-01-21 11:47:28 +01:00
res.json(ApiFactory.mapToBase(apis));
}
/**
* @description get api by id
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
2025-01-22 09:39:31 +01:00
export async function getWebapiById(req: Request, res: Response): Promise<any> {
2025-01-21 11:47:28 +01:00
const id = parseInt(req.params.id);
2025-01-22 09:39:31 +01:00
let api = await WebapiService.getById(id);
2025-01-21 11:47:28 +01:00
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<*>}
*/
2025-01-22 09:39:31 +01:00
export async function getWebapiTokenById(req: Request, res: Response): Promise<any> {
2025-01-21 11:47:28 +01:00
const id = parseInt(req.params.id);
2025-01-22 09:39:31 +01:00
let { token } = await WebapiService.getTokenById(id);
2025-01-21 11:47:28 +01:00
res.send(token);
}
/**
* @description get permissions by api
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
2025-01-22 09:39:31 +01:00
export async function getWebapiPermissions(req: Request, res: Response): Promise<any> {
2025-01-21 11:47:28 +01:00
const id = parseInt(req.params.id);
2025-01-22 09:39:31 +01:00
let permissions = await WebapiPermissionService.getByApi(id);
2025-01-21 11:47:28 +01:00
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<*>}
*/
2025-01-22 09:39:31 +01:00
export async function createWebapi(req: Request, res: Response): Promise<any> {
2025-01-21 11:47:28 +01:00
let title = req.body.title;
2025-01-22 11:57:19 +01:00
let expiry = req.body.expiry || null;
2025-01-21 11:47:28 +01:00
2025-01-22 11:57:19 +01:00
let token = await JWTHelper.create(
{
iss: CLUB_NAME,
sub: "api_token_retrieve",
aud: StringHelper.random(32),
},
{ useExpiration: false }
);
2025-01-21 11:47:28 +01:00
2025-01-22 09:39:31 +01:00
let createApi: CreateWebapiCommand = {
2025-01-21 13:54:52 +01:00
token: token,
2025-01-21 11:47:28 +01:00
title: title,
expiry: expiry,
};
2025-01-22 09:39:31 +01:00
await WebapiCommandHandler.create(createApi);
2025-01-21 11:47:28 +01:00
res.sendStatus(204);
}
/**
* @description update api data
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
2025-01-22 09:39:31 +01:00
export async function updateWebapi(req: Request, res: Response): Promise<any> {
2025-01-21 11:47:28 +01:00
const id = parseInt(req.params.id);
let title = req.body.title;
2025-01-22 11:57:19 +01:00
let expiry = req.body.expiry || null;
2025-01-21 11:47:28 +01:00
2025-01-22 09:39:31 +01:00
let updateApi: UpdateWebapiCommand = {
2025-01-21 11:47:28 +01:00
id: id,
title: title,
expiry: expiry,
};
2025-01-22 09:39:31 +01:00
await WebapiCommandHandler.update(updateApi);
2025-01-21 11:47:28 +01:00
res.sendStatus(204);
}
/**
* @description update api assigned permission strings
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
2025-01-22 09:39:31 +01:00
export async function updateWebapiPermissions(req: Request, res: Response): Promise<any> {
2025-01-21 11:47:28 +01:00
const id = parseInt(req.params.id);
let permissions = req.body.permissions;
let permissionStrings = PermissionHelper.convertToStringArray(permissions);
2025-01-22 09:39:31 +01:00
let updateApiPermissions: UpdateWebapiPermissionsCommand = {
2025-01-22 11:57:19 +01:00
webapiId: id,
2025-01-21 11:47:28 +01:00
permissions: permissionStrings,
};
2025-01-22 09:39:31 +01:00
await WebapiPermissionCommandHandler.updatePermissions(updateApiPermissions);
2025-01-21 11:47:28 +01:00
res.sendStatus(204);
}
/**
* @description delete api by id
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
2025-01-22 09:39:31 +01:00
export async function deleteWebapi(req: Request, res: Response): Promise<any> {
2025-01-21 11:47:28 +01:00
const id = parseInt(req.params.id);
2025-01-22 09:39:31 +01:00
let deleteApi: DeleteWebapiCommand = {
2025-01-21 11:47:28 +01:00
id: id,
};
2025-01-22 09:39:31 +01:00
await WebapiCommandHandler.delete(deleteApi);
2025-01-21 11:47:28 +01:00
res.sendStatus(204);
}