Presupuestador_web/server/src/infrastructure/express/api/v1.ts
2024-07-01 19:12:15 +02:00

111 lines
3.0 KiB
TypeScript

import Express from "express";
import { createContextMiddleware } from "./context.middleware";
import {
DealerRouter,
authRouter,
catalogRouter,
profileRouter,
quoteRoutes,
usersRouter,
} from "./routes";
export const v1Routes = () => {
const routes = Express.Router({ mergeParams: true });
routes.get("/hello", (req, res) => {
res.send("Hello world!");
});
routes.use((req: Express.Request, res: Express.Response, next: Express.NextFunction) => {
res.locals["context"] = createContextMiddleware();
//res.locals["middlewares"] = createMiddlewareMap();
return next();
});
routes.use((req, res, next) => {
console.log(`[${new Date().toLocaleTimeString()}] Incoming request to ${req.path}`);
next();
});
authRouter(routes);
profileRouter(routes);
usersRouter(routes);
catalogRouter(routes);
DealerRouter(routes);
quoteRoutes(routes);
return routes;
};
/**
*
*
Comentarios: Cada usuario que no sea administrador tiene un registro asociado en "dealers" a modo de perfil
* Endpoints Públicos
/auth
POST /auth/login: Permite a los usuarios autenticarse y recibir un token JWT.
* Endpoints para Usuarios Registrados
/auth
POST /auth/logout: Permite a los usuarios cerrar sesión (podría implicar invalidar el token JWT).
GET /auth/identity: Devuelve la identidad del usuario autenticado, incluyendo id, name, email, language y roles.
/profile
GET /profile: Obtiene el perfil del usuario autenticado.
POST /profile: Actualiza el perfil del usuario autenticado.
/catalog
GET /catalog: Devuelve la lista de artículos del catálogo.
/quotes
GET /quotes: Devuelve las cotizaciones del usuario autenticado.
POST /quotes: Permite al usuario crear una nueva cotización.
PUT /quotes/
: Permite al usuario actualizar una cotización existente.
DELETE /quotes/
: Permite al usuario eliminar una cotización existente.
* Endpoints para Administradores
/auth
POST /auth/register: Permite al administrador registrar nuevos usuarios.
/users
GET /users: Devuelve la lista de todos los usuarios.
POST /users: Permite crear un nuevo usuario.
GET /users/
: Devuelve los detalles de un usuario específico.
PUT /users/
: Permite actualizar los detalles de un usuario específico.
DELETE /users/
: Permite eliminar un usuario específico.
/dealers
GET /dealers: Devuelve la lista de todos los distribuidores.
POST /dealers: Permite crear un nuevo distribuidor.
GET /dealers/
: Devuelve los detalles de un distribuidor específico.
PUT /dealers/
: Permite actualizar los detalles de un distribuidor específico.
DELETE /dealers/
: Permite eliminar un distribuidor específico.
/quotes
GET /quotes: Devuelve la lista de todas las cotizaciones.
POST /quotes: Permite crear una nueva cotización.
PUT /quotes/
: Permite actualizar una cotización existente.
DELETE /quotes/
: Permite eliminar una cotización existente.
*/