142 lines
4.1 KiB
TypeScript
142 lines
4.1 KiB
TypeScript
|
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";
|
||
|
|
||
|
/**
|
||
|
* @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;
|
||
|
|
||
|
// TODO: create jwt as token to prevent random string tests
|
||
|
|
||
|
let createApi: CreateApiCommand = {
|
||
|
token: "",
|
||
|
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);
|
||
|
}
|