Skip to content
Snippets Groups Projects
UserController.ts 5.98 KiB
Newer Older
// TODO: Get rid of all the 'any' mentions
/* eslint-disable @typescript-eslint/no-explicit-any */

Renzo Beux's avatar
Renzo Beux committed
import {
  Handler, Request, Response, Router,
} from 'express';
import UserAPI from '../Services/UserAPI';
Renzo Beux's avatar
Renzo Beux committed
import { logAndRespond } from './Utils';
Renzo Beux's avatar
Renzo Beux committed

const router = Router();

const create: Handler = async (req: Request, res: Response) => {
  try {
    const user: any = await UserAPI.create(req.body);
Renzo Beux's avatar
Renzo Beux committed
    return logAndRespond(res, 200, 'send', user, 'info', null, null);
    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);
Renzo Beux's avatar
Renzo Beux committed
};

const listUsers: Handler = async (req: Request, res: Response) => {
    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);
Renzo Beux's avatar
Renzo Beux committed
    return logAndRespond(res, 200, 'send', userList, 'info', null, null);
    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);
Renzo Beux's avatar
Renzo Beux committed
};

const login: Handler = async (req: Request, res: Response) => {
  try {
    const { token, user }: any = await UserAPI.login(req.body);
Renzo Beux's avatar
Renzo Beux committed
    return logAndRespond(res, 200, 'send', { token, user }, 'info', null, ['token']);
    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);
Renzo Beux's avatar
Renzo Beux committed
};

const update: Handler = async (req: Request, res: Response) => {
    const token: any = req.headers.authorization;
    const user: any = await UserAPI.update(req.body, req.params.id, token);
Renzo Beux's avatar
Renzo Beux committed
    return logAndRespond(res, 200, 'send', user, 'info', null, ['token']);
    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);
Renzo Beux's avatar
Renzo Beux committed
};

const password: Handler = async (req: Request, res: Response) => {
    const token: any = req.headers.authorization;
    const user: any = await UserAPI.password(req.body, req.params.id, token);
Renzo Beux's avatar
Renzo Beux committed
    return logAndRespond(res, 200, 'send', user, 'info', null, null);
    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);
Renzo Beux's avatar
Renzo Beux committed
};

const approve: Handler = async (req: Request, res: Response) => {
    const token: any = req.headers.authorization;
    const user: any = await UserAPI.approve(req.params.id, token);
Renzo Beux's avatar
Renzo Beux committed
    return logAndRespond(res, 200, 'send', user, 'info', null, null);
    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);
Renzo Beux's avatar
Renzo Beux committed
};

const cancel: Handler = async (req: Request, res: Response) => {
    const token: any = req.headers.authorization;
    const user: any = await UserAPI.cancel(req.params.id, token);
Renzo Beux's avatar
Renzo Beux committed
    return logAndRespond(res, 200, 'send', user, 'info', null, null);
    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);
Renzo Beux's avatar
Renzo Beux committed
};

const giveAdminPermission: Handler = async (req: Request, res: Response) => {
    const token: any = req.headers.authorization;
    const user: any = await UserAPI.giveAdminPermission(req.params.id, token);
Renzo Beux's avatar
Renzo Beux committed
    return logAndRespond(res, 200, 'send', user, 'info', null, null);
    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);
Renzo Beux's avatar
Renzo Beux committed
};

const removeAdminPermission: Handler = async (req: Request, res: Response) => {
    const token: any = req.headers.authorization;
    const user: any = await UserAPI.removeAdminPermission(req.params.id, token);
Renzo Beux's avatar
Renzo Beux committed
    return logAndRespond(res, 200, 'send', user, 'info', null, null);
    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 checkUser: Handler = async (req: Request, res: Response) => {
  try {
    const token: any = req.headers.authorization;
    const user: any = await UserAPI.checkUser(token);
Renzo Beux's avatar
Renzo Beux committed
    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 getUser: Handler = async (req: Request, res: Response) => {
  try {
    const token: any = req.headers.authorization;
    const user: any = await UserAPI.getUser(Number(req.params.id), token);
Renzo Beux's avatar
Renzo Beux committed
    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);
Renzo Beux's avatar
Renzo Beux committed
router.post('/', create);
router.get('/', listUsers);
router.post('/login', login);
router.put('/:id', update);
router.put('/:id/password', password);
router.put('/:id/approve', approve);
router.put('/:id/cancel', cancel);
router.put('/:id/admin', giveAdminPermission);
router.put('/:id/client', removeAdminPermission);
router.post('/check-user', checkUser);
router.get('/:id', getUser);