From 81b631d867caf0769c7b1f07e8ca49144203f7ed Mon Sep 17 00:00:00 2001
From: Renzo Beux <renzobeux@gmail.com>
Date: Thu, 21 Oct 2021 19:13:14 -0300
Subject: [PATCH] Auditor added

---
 .env                                   | 12 +++++-----
 src/Loaders/ParameterDataBase.ts       |  2 +-
 src/Loaders/ParameterDataBaseLoader.ts |  2 ++
 src/Middlewares/authChecker.ts         |  6 +++--
 src/Models/Auditor.ts                  | 32 ++++++++++++++++++++++++++
 src/Models/EquationConstant.ts         |  4 ++--
 src/Services/Auditor.ts                |  9 ++++++++
 src/index.ts                           |  8 +++----
 8 files changed, 59 insertions(+), 16 deletions(-)
 create mode 100644 src/Models/Auditor.ts
 create mode 100644 src/Services/Auditor.ts

diff --git a/.env b/.env
index b981354..784b478 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 7add751..4cfd1cc 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 560d0fb..78a9ec7 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 b7daf84..be27d2c 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 0000000..69905a9
--- /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 4075231..ab360df 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 0000000..a0fde49
--- /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 a56eac5..b408cff 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);
 
-- 
GitLab