Select Git revision
UserController.ts
UserController.ts 6.38 KiB
// TODO: Get rid of all the 'any' mentions
/* eslint-disable @typescript-eslint/no-explicit-any */
import { AxiosError } from 'axios';
import {
Handler, Request, Response, Router,
} from 'express';
import { audit } from '../Services/AuditorService';
import UserAPI, { checkUser as checkUserFromAPI } from '../Services/UserAPI';
import { logAndRespond } from './Utils';
import AuthMiddleware from '../Middlewares/authChecker';
const router = Router();
const create: Handler = async (req: Request, res: Response) => {
try {
const user: any = await UserAPI.create(req.body);
return logAndRespond(res, 200, 'send', user, 'info', null, null);
} catch (error) {
const e = error as AxiosError;
return logAndRespond(res, e.response ? e.response.status : 400, 'json', e.response ? e.response.data : { error: e.message }, 'info', null, null);
}
};
const listUsers: Handler = async (req: Request, res: Response) => {
try {
const token: any = req.headers.authorization;
const userList: any = await
UserAPI.listUsers(req.query.type, req.query.limit, req.query.offset, req.query.search, token);
return logAndRespond(res, 200, 'send', userList, 'info', null, null);
} catch (error) {
const e = error as AxiosError;
return logAndRespond(res, e.response ? e.response.status : 400, 'json', e.response ? e.response.data : { error: e.message }, 'info', null, null);
}
};
const login: Handler = async (req: Request, res: Response) => {
try {
const { token, user }: any = await UserAPI.login(req.body);
return logAndRespond(res, 200, 'send', { token, user }, 'info', null, ['token']);
} catch (error) {
const e = error as AxiosError;
return logAndRespond(res, e.response ? e.response.status : 400, 'json', e.response ? e.response.data : { error: e.message }, 'info', null, null);
}
};
const update: Handler = async (req: Request, res: Response) => {
try {
const token: any = req.headers.authorization;
const user: any = await UserAPI.update(req.body, req.params.id, token);
return logAndRespond(res, 200, 'send', user, 'info', null, ['token']);
} catch (error) {
const e = error as AxiosError;
return logAndRespond(res, e.response ? e.response.status : 400, 'json', e.response ? e.response.data : { error: e.message }, 'info', null, null);
}
};
const password: Handler = async (req: Request, res: Response) => {
try {
const token: any = req.headers.authorization;
const user: any = await UserAPI.password(req.body, req.params.id, token);
return logAndRespond(res, 200, 'send', user, 'info', null, null);
} catch (error) {
const e = error as AxiosError;
return logAndRespond(res, e.response ? e.response.status : 400, 'json', e.response ? e.response.data : { error: e.message }, 'info', null, null);
}
};
const approve: Handler = async (req: Request, res: Response) => {
try {