diff --git a/src/app.ts b/src/app.ts index 65591e9..a863a4d 100644 --- a/src/app.ts +++ b/src/app.ts @@ -43,7 +43,7 @@ try { app.use("/auth", AuthRouter); app.use("/catalog", CatalogRouter); app.use("/rent", RentRouter); - logger.info("Routers loaded !\n"); + logger.info("Routers loaded !"); } catch (err) { logger.error(err); throw null; @@ -53,9 +53,9 @@ try { app.listen(process.env["APP_PORT"]); logger.info( `Server is running !\n >> Memory total: ${ - process.memoryUsage().rss / 1_000_000 - } Mio\n >> Memory heap usage: ${ - process.memoryUsage().heapUsed / 1_000_000 + Math.round(process.memoryUsage().rss / 1_000_000) + } Mio\n >> Memory heap: ${ + Math.round(process.memoryUsage().heapUsed / 1_000_000) } Mio\n`, ); } catch (error) { diff --git a/src/controllers/auth.controller.ts b/src/controllers/auth.controller.ts index 5b2be59..89cb6a3 100644 --- a/src/controllers/auth.controller.ts +++ b/src/controllers/auth.controller.ts @@ -6,6 +6,7 @@ import UserService from "@services/user.service"; import { isEmail } from "@utils/validators/email"; import type { Request, Response } from "express"; import { Logger } from "tslog"; +import {isDebugMode} from "@utils/debugState"; const logger = new Logger({ name: "AuthController", @@ -61,8 +62,8 @@ async function registerUser(req: Request, res: Response): Promise { message: "GDPR not accepted.", }); } - if (RegisterServiceResult.error === "exist") { - logger.warn(`The user already exists (${req.ip})`); + if (typeof RegisterServiceResult !== 'string' && RegisterServiceResult.error === 5) { + logger.warn(`The user already exists (${sanitizeData.email})`); return res.type("application/json").status(400).json({ error: RegisterServiceResult.error, message: "The user already exists.", @@ -70,8 +71,8 @@ async function registerUser(req: Request, res: Response): Promise { } // SUCCESS - logger.info(`User registered successfully (${sanitizeData.username})`); - return res.type("application/json").status(201).json(RegisterServiceResult); + //logger.info(`User registered successfully (${sanitizeData.username})`); + return res.type("application/json").status(201).json({token:RegisterServiceResult}); } /** @@ -393,7 +394,7 @@ async function getSelf(req: Request, res: Response) { }); } -logger.debug("\nController loaded."); +if (isDebugMode()) logger.debug("\nController loaded."); const AuthController = { register: registerUser, diff --git a/src/controllers/brand.controller.ts b/src/controllers/brand.controller.ts index c99a4e4..ea32eb9 100644 --- a/src/controllers/brand.controller.ts +++ b/src/controllers/brand.controller.ts @@ -3,6 +3,7 @@ import { Logger } from "tslog"; import type IDbBrand from "@interfaces/database/IDbBrand"; import BrandService from "@services/brand.service"; +import {isDebugMode} from "@utils/debugState"; //import {body} from "express-validator"; const logger = new Logger({ @@ -171,7 +172,7 @@ async function deleteBrand(req: Request, res: Response): Promise { //TODO get models of the brand -logger.debug("\nController loaded."); +if (isDebugMode()) logger.debug("\nController loaded."); const BrandController = { create: createBrand, diff --git a/src/controllers/category.controller.ts b/src/controllers/category.controller.ts index 7a500b3..0d18547 100644 --- a/src/controllers/category.controller.ts +++ b/src/controllers/category.controller.ts @@ -2,6 +2,7 @@ import type IDbCategory from "@interfaces/database/IDbCategory"; import CategoryService from "@services/category.service"; import type { Request, Response } from "express"; import { Logger } from "tslog"; +import {isDebugMode} from "@utils/debugState"; //import {validationResult} from "express-validator"; const logger = new Logger({ @@ -177,7 +178,7 @@ async function getBySlugCategory( }); } -logger.debug("\nController loaded."); +if (isDebugMode()) logger.debug("\nController loaded."); const CategoryController = { create: createCategory, diff --git a/src/controllers/model.controller.ts b/src/controllers/model.controller.ts index e8d141d..8b8218b 100644 --- a/src/controllers/model.controller.ts +++ b/src/controllers/model.controller.ts @@ -3,6 +3,7 @@ import CategoryService from "@services/category.service"; import ModelService from "@services/model.service"; import type { Request, Response } from "express"; import { Logger } from "tslog"; +import {isDebugMode} from "@utils/debugState"; //import {validationResult} from "express-validator"; const logger = new Logger({ @@ -131,7 +132,7 @@ async function deleteModel(req: Request, res: Response): Promise { //TODO get model with vehicle available. -logger.debug("\nController loaded."); +if (isDebugMode()) logger.debug("\nController loaded."); const ModelController = { create: createModel, diff --git a/src/services/brand.service.ts b/src/services/brand.service.ts index 3a012b8..cb9026e 100644 --- a/src/services/brand.service.ts +++ b/src/services/brand.service.ts @@ -2,6 +2,7 @@ import type IDbBrand from "@interfaces/database/IDbBrand"; import MysqlService from "@services/mysql.service"; import { Logger } from "tslog"; import { v4 as uuidv4 } from "uuid"; +import {isDebugMode} from "@utils/debugState"; const DbHandler = new MysqlService.Handler("BrandService"); const logger = new Logger({ @@ -168,7 +169,7 @@ async function deleteBrand(brandId: string): Promise { return true; } -logger.debug("\nService loaded."); +if (isDebugMode()) logger.debug("\nService loaded."); const BrandService = { create: createBrand, diff --git a/src/services/category.service.ts b/src/services/category.service.ts index 02fe10c..1a1fda1 100644 --- a/src/services/category.service.ts +++ b/src/services/category.service.ts @@ -2,6 +2,7 @@ import type { IDbCategory } from "@interfaces/database/IDbCategory"; import MysqlService from "@services/mysql.service"; import { Logger } from "tslog"; import { v4 as uuidv4 } from "uuid"; +import {isDebugMode} from "@utils/debugState"; const DbHandler = new MysqlService.Handler("CategoryService"); const logger = new Logger({ @@ -127,7 +128,7 @@ async function deleteCategory(id: string): Promise { } } -logger.debug("\nService loaded."); +if (isDebugMode()) logger.debug("\nService loaded."); const CategoryService = { create: createCategory, diff --git a/src/services/jwt.service.ts b/src/services/jwt.service.ts index c1355ef..54a0850 100644 --- a/src/services/jwt.service.ts +++ b/src/services/jwt.service.ts @@ -5,6 +5,7 @@ import { jwtVerify, } from "jose"; import { Logger } from "tslog"; +import {isDebugMode} from "@utils/debugState"; const logger = new Logger({ name: "JwtService", @@ -64,7 +65,7 @@ async function JwtSignService( .sign(new TextEncoder().encode(`${process.env["JWT_SECRET"]}`)); } -logger.debug("\nService loaded."); +if (isDebugMode()) logger.debug("\nService loaded."); const JwtService = { verify: JwtVerifyService, diff --git a/src/services/model.service.ts b/src/services/model.service.ts index 1bfbd03..c6b8d53 100644 --- a/src/services/model.service.ts +++ b/src/services/model.service.ts @@ -2,6 +2,7 @@ import type IDbModel from "@interfaces/database/IDbModel"; import MysqlService from "@services/mysql.service"; import { Logger } from "tslog"; import { v4 as uuidv4 } from "uuid"; +import {isDebugMode} from "@utils/debugState"; const DbHandler = new MysqlService.Handler("ModelService"); const logger = new Logger({ @@ -135,7 +136,7 @@ async function getAllModels(): Promise { } } -logger.debug("\nService loaded."); +if (isDebugMode()) logger.debug("\nService loaded."); /** * ModelService is responsible for managing models. diff --git a/src/services/mysql.service.ts b/src/services/mysql.service.ts index aa6e45c..d8dd2d2 100644 --- a/src/services/mysql.service.ts +++ b/src/services/mysql.service.ts @@ -12,7 +12,7 @@ import type { IDbVehicle } from "@interfaces/database/IDbVehicle"; import type { IUserUpdate } from "@interfaces/services/IUserUpdate"; import mysql, { type Connection, type ConnectionOptions } from "mysql2"; import { Logger } from "tslog"; -import { v4 } from "uuid"; +import {isDebugMode} from "@utils/debugState"; const access: ConnectionOptions = { host: `${process.env["MYSQL_HOST"]}`, @@ -35,10 +35,10 @@ class MysqlHandler { this.Connection = mysql.createConnection(access); this.Connection.connect((err) => { if (err) { - this.Logger.error(`Error connecting to MySQL: ${err}`); + this.Logger.error(`\n\n> Error connecting to MySQL: \n${err}\n`); process.exit(1); } - this.Logger.info( + if (isDebugMode()) this.Logger.debug( `\n\n> Connected to MySQL database (${access.database})\n`, ); }); @@ -51,7 +51,7 @@ class MysqlHandler { return new Promise((resolve, reject) => { this.Connection.query(queryString, (err, results) => { if (err) { - this.Logger.error(`Error executing query: ${err}`); + this.Logger.error(`\n\n> Error executing query: \n${err}\n`); reject(err); } else { resolve(results); @@ -82,12 +82,12 @@ class MysqlHandler { (key: string) => `${key}`, ); const values = Object.values(data.values).map((val) => val); - this.Logger.debug( + if (isDebugMode()) this.Logger.debug( `\n\n>-> Factorized ${_sqlQueryKeys.length} keys for a prepare Query.\n>-> Action: ${data.actionName}\n`, ); const sqlQueryKeys = _sqlQueryKeys.join(", "); if (_id && _id.length > 2) { - this.Logger.trace(`Id post-pushed in factorized data`); + if (isDebugMode()) this.Logger.trace(`\n\n> Id post-pushed in factorized data.\n ${_id}`); values.push(_id); } @@ -176,19 +176,6 @@ const MySqlService = { if (!data.id) return reject("Id is undefined"); if (data.id.length !== 36) return reject("Id invalid"); - // const _values = [ - // data.id, - // data.username, - // data.firstname, - // data.lastname, - // data.dob, - // data.email, - // data.is_mail_verified, - // data.is_admin, - // data.gdpr, - // data.hash, - // ]; - handler .factorize({ values: data, diff --git a/src/services/user.service.ts b/src/services/user.service.ts index 6da1ce6..dbd44bb 100644 --- a/src/services/user.service.ts +++ b/src/services/user.service.ts @@ -7,6 +7,7 @@ import JwtService from "@services/jwt.service"; import MySqlService from "@services/mysql.service"; import { Logger } from "tslog"; import { v4 } from "uuid"; +import {isDebugMode} from "@utils/debugState"; const logger = new Logger({ name: "UserService", @@ -63,14 +64,19 @@ async function getUserFromIdService(id: string): Promise { }; } const dbUser = await MySqlService.User.getById(DbHandler, id); - if (dbUser === undefined) { + if (dbUser.length === 0) { logger.info(`User not found (${id})`); return { error: ErrorType.NotFound, message: "The user was not found.", }; } - return dbUser; + const firstUser = dbUser[0]; + if (firstUser) return firstUser; + return { + error: ErrorType.ServiceError, + message: "No user found.", + }; } catch (err) { return { error: ErrorType.DatabaseError, @@ -123,13 +129,7 @@ async function register(inputData: IReqRegister): Promise { const dbUserIfExist: IDbUser | ISError = await getUserByEmail( inputData.email, ); - if ("error" in dbUserIfExist) { - return { - error: dbUserIfExist.error, - message: dbUserIfExist.message, - }; - } - if (dbUserIfExist.id) { + if ("username" in dbUserIfExist) { logger.info( `\n\n> User already exist for email "${inputData.email}".\n(${dbUserIfExist.username}::${dbUserIfExist.id})\n`, ); @@ -152,7 +152,7 @@ async function register(inputData: IReqRegister): Promise { is_admin: false, is_email_verified: false, }); - if ("error" in NewUser || NewUser.affectedRows === 0) { + if ("error" in NewUser && NewUser.affectedRows === 0) { return { error: ErrorType.DatabaseError, message: "Error when inserting user in database.", @@ -326,7 +326,7 @@ async function deleteUserService(targetId) { } } -logger.debug("\nService loaded."); +if (isDebugMode()) logger.debug("\nService loaded."); const UserService = { register: register, diff --git a/src/validators/AdminGuard.ts b/src/validators/AdminGuard.ts index 6e5b84d..bcb90cd 100644 --- a/src/validators/AdminGuard.ts +++ b/src/validators/AdminGuard.ts @@ -33,7 +33,7 @@ async function AdminGuard(req: Request, res: Response, next: NextFunction) { const token = await JwtService.verify(bearerToken); - if (token) { + if (token && token.sub) { // @ts-ignore const isSourceAdmin = await MysqlService.User.getAdminStateForId( DbHandler,