From 3327ae59965d0387c367106af9b022a20ed630dd Mon Sep 17 00:00:00 2001 From: Daniel Heras Quesada Date: Sat, 26 Oct 2024 13:20:46 +0200 Subject: [PATCH] feat(users, db): users access test used to clean db access flow --- back-express/src/db.ts | 4 +--- back-express/src/routes/users/users.routes.ts | 24 +++++++++++++++---- .../src/routes/users/users.service.ts | 22 ++++++++--------- back-express/src/routes/users/users.types.ts | 14 +++++++++++ 4 files changed, 45 insertions(+), 19 deletions(-) diff --git a/back-express/src/db.ts b/back-express/src/db.ts index 9a123ec..027dcb8 100644 --- a/back-express/src/db.ts +++ b/back-express/src/db.ts @@ -9,9 +9,7 @@ const db_pool = mysql.createPool({ database: "path", }); -async function DB_Query( - query: string, -): Promise[] | ResponseError> { +async function DB_Query(query: string): Promise[]> { try { const [results, _fields] = await db_pool.query(query); return results as T[]; diff --git a/back-express/src/routes/users/users.routes.ts b/back-express/src/routes/users/users.routes.ts index bd2fa8e..f5113ce 100644 --- a/back-express/src/routes/users/users.routes.ts +++ b/back-express/src/routes/users/users.routes.ts @@ -1,20 +1,34 @@ import { Router } from "express"; import UserService from "./users.service"; -import { ResponseError } from "../../utils/error/response-error.model"; export const userRoutes = Router(); const userService = new UserService(); -userRoutes.get("/", async (req, res) => { +//TODO: remove info from these Users and block access to NON-admins +userRoutes.get("/", async (_, res) => { try { const response = await userService.getAllUsers(); - // console.log("__DB_DATA", data); res.status(200); res.send(response); } catch (e) { - // const response_error = new ResponseError(e); - res.status(400); + res.status(500); + res.send(e); + } +}); + +userRoutes.get("/:username", async (req, res) => { + try { + const response = await userService.getUserByUsername(req.params.username); + if (response) { + res.status(200); + res.send(response); + } else { + res.status(400); + res.send("error"); + } + } catch (e) { + res.status(500); res.send(e); } }); diff --git a/back-express/src/routes/users/users.service.ts b/back-express/src/routes/users/users.service.ts index 0c81fca..8f6fceb 100644 --- a/back-express/src/routes/users/users.service.ts +++ b/back-express/src/routes/users/users.service.ts @@ -1,20 +1,20 @@ -import { db_connection, db_query } from "../../db"; +import { db_query } from "../../db"; +import { User } from "./users.types"; class UserService { constructor() {} - async getTestUsers() { - const data = await db_connection.execute("select * from user"); - return data; + async getAllUsers(): Promise { + const data = await db_query("select * from user where id == 1"); + return data as User[]; } - async getAllUsers() { - try { - const data = await db_query("select * from user where user.id == 3"); - return { value: data, example: "algo" }; - } catch (e) { - return e; - } + async getUserByUsername(username: string): Promise { + const data = await db_query( + `select * from user as user WHERE LOWER(username) = LOWER('${username}');`, + ); + console.log("Data:", data); + return data.length ? (data[0] as User) : null; } // getUserById(id: number) { diff --git a/back-express/src/routes/users/users.types.ts b/back-express/src/routes/users/users.types.ts index e69de29..d45adde 100644 --- a/back-express/src/routes/users/users.types.ts +++ b/back-express/src/routes/users/users.types.ts @@ -0,0 +1,14 @@ +export enum Role { + Public = "public", + User = "user", + Manager = "manager", + Admin = "admin", +} + +export type User = { + id: number; + username: string; + password: string; + roles: Role[]; + picture: string; +};