diff --git a/.env b/.env index b981354fc0ce98f2bce191e2ece716909c215911..784b4784427a9bc7625979c2e21182b4aeffbd80 100644 --- a/.env +++ b/.env @@ -1,7 +1,7 @@ -PORT=8000 -INSTANCE=PROD +PORT=7999 +INSTANCE=TEST HOST=localhost -USER=root -PASSWORD=rootroot -DB=parameter_database -AUTH_BASE_URL= \ No newline at end of file +USER=developer +PASSWORD=password +DB=core_database_test +AUTH_BASE_URL=localhost:7998/users \ No newline at end of file diff --git a/src/Loaders/ParameterDataBase.ts b/src/Loaders/ParameterDataBase.ts index 7add75166c89ea7251288345b6d92599c7b96b51..4cfd1cc39b91ccda4cb6543929c691edfab06743 100644 --- a/src/Loaders/ParameterDataBase.ts +++ b/src/Loaders/ParameterDataBase.ts @@ -1,6 +1,6 @@ import { Sequelize } from 'sequelize'; -const DB: string = process.env.DB || 'parameter_database'; +const DB: string = process.env.DB || 'core_database'; const USER: string = process.env.USER || 'root'; const PASSWORD: string = process.env.PASSWORD || 'password'; const HOST: string = process.env.HOST || 'localhost'; diff --git a/src/Loaders/ParameterDataBaseLoader.ts b/src/Loaders/ParameterDataBaseLoader.ts index 560d0fbc2cd3d60d2d0f5c8f1c6ff6b98a86c285..78a9ec7b30a233c3aa8bc331b3413f7f69d8b4b2 100644 --- a/src/Loaders/ParameterDataBaseLoader.ts +++ b/src/Loaders/ParameterDataBaseLoader.ts @@ -4,6 +4,7 @@ import path from 'path'; import DefaultExtraDataDTO from '../DTOs/DefaultExtraDataDTO'; import DefaultWeightDTO from '../DTOs/DefaultWeightDTO'; import EquationConstantDTO from '../DTOs/EquationConstantDTO'; +import Auditor from '../Models/Auditor'; import DefaultExtraData from '../Models/DefaultExtraData'; import DefaultWeight from '../Models/DefaultWeight'; import EquationConstant from '../Models/EquationConstant'; @@ -49,6 +50,7 @@ function initParameterDataBase(): void { console.log(err); }); }); + Auditor.sync({ force: true }); } export default { initParameterDataBase }; diff --git a/src/Middlewares/authChecker.ts b/src/Middlewares/authChecker.ts index b7daf846026eed81686e79e776d37b38e37b7d1f..be27d2c6b6d952c4d0d8072439a01d300a7c3783 100644 --- a/src/Middlewares/authChecker.ts +++ b/src/Middlewares/authChecker.ts @@ -1,11 +1,13 @@ -import express, { Request, Response, NextFunction } from 'express'; +import { Response, NextFunction } from 'express'; import { validate } from '../Services/UserAPI'; +// eslint-disable-next-line @typescript-eslint/no-explicit-any 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'); + res.status(401).send({ message: 'auth failed' }); + return; } req.user_id = userId; next(); diff --git a/src/Models/Auditor.ts b/src/Models/Auditor.ts new file mode 100644 index 0000000000000000000000000000000000000000..69905a966ccf72b0bd8e2d206b49518b789ebbcc --- /dev/null +++ b/src/Models/Auditor.ts @@ -0,0 +1,32 @@ +import { DataTypes, Model } from 'sequelize'; +import sequelize from '../Loaders/ParameterDataBase'; + +class Auditor extends Model { + id!: number; + + user_id!: number; + + action!: string; + + time!: string; +} + +Auditor.init({ + id: { + type: DataTypes.INTEGER, + autoIncrement: true, + primaryKey: true, + }, + user_id: DataTypes.INTEGER, + action: DataTypes.STRING, + time: DataTypes.DATE, + +}, +{ + sequelize, + modelName: 'Auditor', + timestamps: true, +}); + +// BD: ID // USER ID // ACTION // TIME +export default Auditor; diff --git a/src/Models/EquationConstant.ts b/src/Models/EquationConstant.ts index 4075231ac84e7d89494d3e8289ec179a251d04dc..ab360df824806cc5568488b34d129072c3d2f2f2 100644 --- a/src/Models/EquationConstant.ts +++ b/src/Models/EquationConstant.ts @@ -20,11 +20,11 @@ class EquationConstant extends Parameter { EquationConstant.init( { ageRange: { - type: DataTypes.STRING, + type: DataTypes.STRING(128), primaryKey: true, }, sex: { - type: DataTypes.STRING, + type: DataTypes.STRING(20), primaryKey: true, }, order: { diff --git a/src/Services/Auditor.ts b/src/Services/Auditor.ts new file mode 100644 index 0000000000000000000000000000000000000000..a0fde4969683a33abd8f97bfc4b2ab6acf81bdee --- /dev/null +++ b/src/Services/Auditor.ts @@ -0,0 +1,9 @@ +import Auditor from '../Models/Auditor'; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const audit = (request: any, action: string): void => { + const userId = request.user_id; + Auditor.create({ user_id: userId, action }); +}; + +// BD: UUID // USER ID // ACTION // TIME diff --git a/src/index.ts b/src/index.ts index a56eac52fb6f265d2dfca9b11713d74c9af33d22..b408cff1e5963ba599e99b73aeda0fb820f64ca3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,7 +6,6 @@ import express, { Request, Response, } from 'express'; -import 'dotenv/config'; import cors from 'cors'; import swaggerUi from 'swagger-ui-express'; import helmet from 'helmet'; @@ -14,6 +13,9 @@ import YAML from 'yamljs'; import Routes from './routes'; import logger from './Logger/logger'; import ParameterDataBaseLoader from './Loaders/ParameterDataBaseLoader'; +import authChecker from './Middlewares/authChecker'; + +require('dotenv').config(); const app: Application = express(); const PORT = process.env.PORT || 8000; @@ -38,11 +40,7 @@ app.use(express.raw({ limit: '50mb', })); -const auditMiddleware = (req, res, next) => { - next(); -}; app.use(authChecker); -app.use(auditMiddleware); app.use(Routes);