From 88d580f0a8e2980455e5de9bb110a2048c3483a9 Mon Sep 17 00:00:00 2001 From: "ignacio.bengoa" <ignacio.bengoa@fing.edu.uy> Date: Thu, 21 Oct 2021 23:28:55 -0300 Subject: [PATCH] Update request doesnt get to users back - Cant say why --- .env | 4 +- src/Controllers/UserController.ts | 77 +++++++++++++++++++++++--- src/Services/UserAPI.ts | 91 +++++++++++++++++++++++++++++++ src/index.ts | 9 ++- src/routes.ts | 3 + 5 files changed, 171 insertions(+), 13 deletions(-) diff --git a/.env b/.env index b981354..31ac94e 100644 --- a/.env +++ b/.env @@ -2,6 +2,6 @@ PORT=8000 INSTANCE=PROD HOST=localhost USER=root -PASSWORD=rootroot +PASSWORD=Comfortablynumb.07 DB=parameter_database -AUTH_BASE_URL= \ No newline at end of file +AUTH_BASE_URL=http://localhost:3000/users \ No newline at end of file diff --git a/src/Controllers/UserController.ts b/src/Controllers/UserController.ts index 4a630c1..9b3ab78 100644 --- a/src/Controllers/UserController.ts +++ b/src/Controllers/UserController.ts @@ -1,42 +1,101 @@ +// TODO: Get rid of all the 'any' mentions +/* eslint-disable @typescript-eslint/no-explicit-any */ + import { Handler, Request, Response, Router, } from 'express'; +import UserAPI from '../Services/UserAPI'; const router = Router(); const create: Handler = async (req: Request, res: Response) => { + try { + const user: any = await UserAPI.create(req.body); + return res.status(200).send(user); + } catch (error) { + const e = error as Error; + return res.status(400).json({ error: e.message }); + } }; const listUsers: Handler = async (req: Request, res: Response) => { - + try { + const userList: any = await UserAPI.listUsers(req.body); + return res.status(200).send(userList); + } catch (error) { + const e = error as Error; + return res.status(400).json({ error: e.message }); + } }; const login: Handler = async (req: Request, res: Response) => { - + try { + const { token, user }: any = await UserAPI.login(req.body); + return res.status(200).send({ token, user }); + } catch (error) { + const e = error as Error; + return res.status(400).json({ error: e.message }); + } }; const update: Handler = async (req: Request, res: Response) => { - + try { + const user: any = await UserAPI.update(req.body, req.params.id); + return res.status(200).send(user); + } catch (error) { + const e = error as Error; + return res.status(400).json({ error: e.message }); + } }; const password: Handler = async (req: Request, res: Response) => { - + try { + const user: any = await UserAPI.password(req.body, req.params.id); + return res.status(200).send(user); + } catch (error) { + const e = error as Error; + return res.status(400).json({ error: e.message }); + } }; const approve: Handler = async (req: Request, res: Response) => { - + try { + const user: any = await UserAPI.approve(req.params.id); + return res.status(200).send(user); + } catch (error) { + const e = error as Error; + return res.status(400).json({ error: e.message }); + } }; const cancel: Handler = async (req: Request, res: Response) => { - + try { + const user: any = await UserAPI.cancel(req.params.id); + return res.status(200).send(user); + } catch (error) { + const e = error as Error; + return res.status(400).json({ error: e.message }); + } }; const giveAdminPermission: Handler = async (req: Request, res: Response) => { - + try { + const user: any = await UserAPI.giveAdminPermission(req.params.id); + return res.status(200).send(user); + } catch (error) { + const e = error as Error; + return res.status(400).json({ error: e.message }); + } }; const removeAdminPermission: Handler = async (req: Request, res: Response) => { - + try { + const user: any = await UserAPI.removeAdminPermission(req.params.id); + return res.status(200).send(user); + } catch (error) { + const e = error as Error; + return res.status(400).json({ error: e.message }); + } }; router.post('/', create); @@ -48,3 +107,5 @@ router.put('/:id/approve', approve); router.put('/:id/cancel', cancel); router.put('/:id/admin', giveAdminPermission); router.put('/:id/client', removeAdminPermission); + +export default router; diff --git a/src/Services/UserAPI.ts b/src/Services/UserAPI.ts index b0fc01f..25ca439 100644 --- a/src/Services/UserAPI.ts +++ b/src/Services/UserAPI.ts @@ -1,3 +1,8 @@ +// TODO: Set according return types and don't use 'any' explicitly. Nor implicitly. +// Basically don't use 'any' in any context whatsoever. Despite it being the easiest solution. + +/* eslint-disable @typescript-eslint/explicit-function-return-type */ +/* eslint-disable @typescript-eslint/no-explicit-any */ import axios from 'axios'; const instance = axios.create({ @@ -11,7 +16,93 @@ export const validate = (token: string): number => { id = (res.data as any).userId as number; }) .catch((err) => { + throw (err); // if needed implement later }); return id; }; + +const create = (user: any): any => { + instance.post('/', user) + .then((res) => res) + .catch((err) => { + throw (err); + }); +}; + +const login = (user: any): any => { + instance.post('/login', user) + .then((res) => res) + .catch((err) => { + throw (err); + }); +}; + +const listUsers = (requirements: any): any => { + instance.get('/', requirements) + .then((res) => res) + .catch((err) => { + throw (err); + }); +}; + +const update = (user: any, idUser: string) => { + const url = `/${idUser}`; + instance.put(url, user) + .then((res) => res) + .catch((err) => { + throw (err); + }); +}; + +const password = (user: any, idUser: string) => { + instance.put('/password', user, { params: { id: idUser } }) + .then((res) => res) + .catch((err) => { + throw (err); + }); +}; + +const approve = (idUser: string) => { + instance.put('/approve', { params: { id: idUser } }) + .then((res) => res) + .catch((err) => { + throw (err); + }); +}; + +const cancel = (idUser: string) => { + instance.put('/cancel', { params: { id: idUser } }) + .then((res) => res) + .catch((err) => { + throw (err); + }); +}; + +const giveAdminPermission = (idUser: string) => { + instance.put('/admin', { params: { id: idUser } }) + .then((res) => res) + .catch((err) => { + throw (err); + }); +}; + +const removeAdminPermission = (idUser: string) => { + instance.put('/client', { params: { id: idUser } }) + .then((res) => res) + .catch((err) => { + throw (err); + }); +}; + +export default { + create, + login, + listUsers, + update, + password, + approve, + cancel, + giveAdminPermission, + removeAdminPermission, +}; diff --git a/src/index.ts b/src/index.ts index a56eac5..4b81e70 100644 --- a/src/index.ts +++ b/src/index.ts @@ -14,6 +14,7 @@ import YAML from 'yamljs'; import Routes from './routes'; import logger from './Logger/logger'; import ParameterDataBaseLoader from './Loaders/ParameterDataBaseLoader'; +import authChecker from './Middlewares/authChecker'; const app: Application = express(); const PORT = process.env.PORT || 8000; @@ -38,11 +39,13 @@ app.use(express.raw({ limit: '50mb', })); -const auditMiddleware = (req, res, next) => { +// TODO: Set according return type. Plus, 'res is declared but never used' +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type +const auditMiddleware = (req: Request, res: Response, next: NextFunction) => { next(); }; -app.use(authChecker); -app.use(auditMiddleware); +// app.use(authChecker); +// app.use(auditMiddleware); app.use(Routes); diff --git a/src/routes.ts b/src/routes.ts index c0ea909..c6d1ccb 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -2,6 +2,7 @@ import { Request, Response, Router } from 'express'; import SheetController from './Controllers/SheetController'; import CalculatorController from './Controllers/CalculatorController'; import ParameterController from './Controllers/ParameterController'; +import UserController from './Controllers/UserController'; const router = Router(); @@ -15,4 +16,6 @@ router.use('/repCalculator', CalculatorController); router.use('/parameters', ParameterController); +router.use('/users', UserController); + export default router; -- GitLab