diff --git a/.env b/.env index 2f26ed02da8b5ec45b282490c9443c541e04f4c7..b981354fc0ce98f2bce191e2ece716909c215911 100644 --- a/.env +++ b/.env @@ -3,4 +3,5 @@ INSTANCE=PROD HOST=localhost USER=root PASSWORD=rootroot -DB=parameter_database \ No newline at end of file +DB=parameter_database +AUTH_BASE_URL= \ No newline at end of file diff --git a/.gitignore b/.gitignore index 6d6dd69a02336f5b6ef67682f6e96f8f805e91de..c6bdbb76309d8f805e24c9ab3df8f1ffde34d075 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,3 @@ build npm-debug.log .DS_Store logs/ - -.env diff --git a/package-lock.json b/package-lock.json index 38876356e7872cef2e33c0d4772e4a9b7e705898..f5c9205c678bd4a8c58f5e0a2252e82a03cbd51e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1805,6 +1805,14 @@ "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", "dev": true }, + "@types/axios": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@types/axios/-/axios-0.14.0.tgz", + "integrity": "sha1-7CMA++fX3d1+udOr+HmZlkyvzkY=", + "requires": { + "axios": "*" + } + }, "@types/babel__core": { "version": "7.1.16", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", diff --git a/package.json b/package.json index e5c2c8337b9141cf4637a6c57169ed4c38b8fbfc..851cc5ac566d5563af79f44c5403e288670b9db0 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "description": "Herramienta de calculo del requerimiento energetico ponderado de una poblacion, llamado REPP.", "main": "index.ts", "dependencies": { + "@types/axios": "^0.14.0", "@types/validator": "^13.6.3", "axios": "^0.23.0", "config.json": "0.0.4", diff --git a/src/Controllers/AuthController.ts b/src/Controllers/UserController.ts similarity index 95% rename from src/Controllers/AuthController.ts rename to src/Controllers/UserController.ts index 2f4a7b33a2ecda19a5c168953f3b144ff7321f19..4a630c1d57456d55015284c415b0618971f2cd6b 100644 --- a/src/Controllers/AuthController.ts +++ b/src/Controllers/UserController.ts @@ -1,50 +1,50 @@ -import { - Handler, Request, Response, Router, -} from 'express'; - -const router = Router(); - -const create: Handler = async (req: Request, res: Response) => { -}; - -const listUsers: Handler = async (req: Request, res: Response) => { - -}; - -const login: Handler = async (req: Request, res: Response) => { - -}; - -const update: Handler = async (req: Request, res: Response) => { - -}; - -const password: Handler = async (req: Request, res: Response) => { - -}; - -const approve: Handler = async (req: Request, res: Response) => { - -}; - -const cancel: Handler = async (req: Request, res: Response) => { - -}; - -const giveAdminPermission: Handler = async (req: Request, res: Response) => { - -}; - -const removeAdminPermission: Handler = async (req: Request, res: Response) => { - -}; - -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); +import { + Handler, Request, Response, Router, +} from 'express'; + +const router = Router(); + +const create: Handler = async (req: Request, res: Response) => { +}; + +const listUsers: Handler = async (req: Request, res: Response) => { + +}; + +const login: Handler = async (req: Request, res: Response) => { + +}; + +const update: Handler = async (req: Request, res: Response) => { + +}; + +const password: Handler = async (req: Request, res: Response) => { + +}; + +const approve: Handler = async (req: Request, res: Response) => { + +}; + +const cancel: Handler = async (req: Request, res: Response) => { + +}; + +const giveAdminPermission: Handler = async (req: Request, res: Response) => { + +}; + +const removeAdminPermission: Handler = async (req: Request, res: Response) => { + +}; + +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); diff --git a/src/Middlewares/authChecker.ts b/src/Middlewares/authChecker.ts index 543aa4f988311f50dcff01b3ac09b62ef8f6f316..b7daf846026eed81686e79e776d37b38e37b7d1f 100644 --- a/src/Middlewares/authChecker.ts +++ b/src/Middlewares/authChecker.ts @@ -1,5 +1,14 @@ -const auditMiddleware = (req, res, next) => { +import express, { Request, Response, NextFunction } from 'express'; +import { validate } from '../Services/UserAPI'; + +const authChecker = (req: any, res: Response, next: NextFunction): void => { + const token = req.headers.authorization; + const userId = validate(token); + if (userId === -1) { + res.status(401).send('auth failed'); + } + req.user_id = userId; next(); }; -export default auditMiddleware; +export default authChecker; diff --git a/src/Services/AuthAPI.ts b/src/Services/AuthAPI.ts deleted file mode 100644 index 92f836217403325a3b3e8b96dd0b31d607cbae36..0000000000000000000000000000000000000000 --- a/src/Services/AuthAPI.ts +++ /dev/null @@ -1,5 +0,0 @@ -import axios from 'axios'; - -export const validate = () => { - axios.post(); -}; diff --git a/src/Services/UserAPI.ts b/src/Services/UserAPI.ts new file mode 100644 index 0000000000000000000000000000000000000000..b0fc01fda0e291f9f43172f880313c1b43196f46 --- /dev/null +++ b/src/Services/UserAPI.ts @@ -0,0 +1,17 @@ +import axios from 'axios'; + +const instance = axios.create({ + baseURL: process.env.AUTH_BASE_URL, +}); + +export const validate = (token: string): number => { + let id = -1; + instance.post('/validate', { token }) + .then((res) => { + id = (res.data as any).userId as number; + }) + .catch((err) => { + // if needed implement later + }); + return id; +};