2025-01-21 11:47:28 +01:00
|
|
|
import { Request, Response } from "express";
|
|
|
|
import ApiService from "../../../service/user/apiService";
|
|
|
|
import ApiFactory from "../../../factory/admin/user/api";
|
|
|
|
import ApiPermissionService from "../../../service/user/apiPermissionService";
|
|
|
|
import PermissionHelper from "../../../helpers/permissionHelper";
|
|
|
|
import { CreateApiCommand, DeleteApiCommand, UpdateApiCommand } from "../../../command/user/api/apiCommand";
|
|
|
|
import ApiCommandHandler from "../../../command/user/api/apiCommandHandler";
|
|
|
|
import { UpdateApiPermissionsCommand } from "../../../command/user/api/apiPermissionCommand";
|
|
|
|
import ApiPermissionCommandHandler from "../../../command/user/api/apiPermissionCommandHandler";
|
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<*>}
|
|
|
|
*/
|
|
|
|
export async function getAllApis(req: Request, res: Response): Promise<any> {
|
|
|
|
let apis = await ApiService.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 getApiById(req: Request, res: Response): Promise<any> {
|
|
|
|
const id = parseInt(req.params.id);
|
|
|
|
let api = await ApiService.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 getApiTokenById(req: Request, res: Response): Promise<any> {
|
|
|
|
const id = parseInt(req.params.id);
|
|
|
|
let { token } = await ApiService.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 getApiPermissions(req: Request, res: Response): Promise<any> {
|
|
|
|
const id = parseInt(req.params.id);
|
|
|
|
let permissions = await ApiPermissionService.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 createApi(req: Request, res: Response): Promise<any> {
|
|
|
|
let title = req.body.title;
|
|
|
|
let expiry = req.body.expiry;
|
|
|
|
|
2025-01-21 13:54:52 +01:00
|
|
|
let token = await JWTHelper.create({
|
|
|
|
iss: CLUB_NAME,
|
|
|
|
sub: "api_token_retrieve",
|
|
|
|
iat: new Date().toISOString(),
|
|
|
|
aud: StringHelper.random(32),
|
|
|
|
});
|
2025-01-21 11:47:28 +01:00
|
|
|
|
|
|
|
let createApi: CreateApiCommand = {
|
2025-01-21 13:54:52 +01:00
|
|
|
token: token,
|
2025-01-21 11:47:28 +01:00
|
|
|
title: title,
|
|
|
|
expiry: expiry,
|
|
|
|
};
|
|
|
|
await ApiCommandHandler.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 updateApi(req: Request, res: Response): Promise<any> {
|
|
|
|
const id = parseInt(req.params.id);
|
|
|
|
let title = req.body.title;
|
|
|
|
let expiry = req.body.expiry;
|
|
|
|
|
|
|
|
let updateApi: UpdateApiCommand = {
|
|
|
|
id: id,
|
|
|
|
title: title,
|
|
|
|
expiry: expiry,
|
|
|
|
};
|
|
|
|
await ApiCommandHandler.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 updateApiPermissions(req: Request, res: Response): Promise<any> {
|
|
|
|
const id = parseInt(req.params.id);
|
|
|
|
let permissions = req.body.permissions;
|
|
|
|
|
|
|
|
let permissionStrings = PermissionHelper.convertToStringArray(permissions);
|
|
|
|
|
|
|
|
let updateApiPermissions: UpdateApiPermissionsCommand = {
|
|
|
|
apiId: id,
|
|
|
|
permissions: permissionStrings,
|
|
|
|
};
|
|
|
|
await ApiPermissionCommandHandler.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 deleteApi(req: Request, res: Response): Promise<any> {
|
|
|
|
const id = parseInt(req.params.id);
|
|
|
|
|
|
|
|
let deleteApi: DeleteApiCommand = {
|
|
|
|
id: id,
|
|
|
|
};
|
|
|
|
await ApiCommandHandler.delete(deleteApi);
|
|
|
|
|
|
|
|
res.sendStatus(204);
|
|
|
|
}
|