oscar-dlth / ecommerce

2 stars 0 forks source link

Enchancement to identity auth #35

Open oscar-dlth opened 6 months ago

oscar-dlth commented 6 months ago

Abstract auth middleware to a interface in domain and an implementation in infrastructure `// app/domain/identity/middleware/auth.middleware.ts

import { Request, Response, NextFunction } from 'express';

export interface AuthMiddleware { checkAuth(req: Request, res: Response, next: NextFunction): void; } // app/domain/identity/middleware/auth.middleware.impl.ts

import { Request, Response, NextFunction } from 'express';

export class AuthMiddlewareImpl implements AuthMiddleware { checkAuth(req: Request, res: Response, next: NextFunction): void { // Lógica de autenticación // Por ejemplo, verificar si el usuario tiene un token válido en la cabecera de la solicitud const token = req.headers.authorization; if (!token) { return res.status(401).json({ message: 'No se proporcionó un token de autenticación.' }); } // Verificar la validez del token, decodificarlo, etc. // Si el token es válido, llamar a next() para pasar al siguiente middleware o controlador // Si el token no es válido, devolver una respuesta de error next(); } } // app/UI/routes/index.ts

import { Router } from 'express'; import { AuthMiddlewareImpl } from '../../domain/identity/middleware/auth.middleware.impl';

const router = Router(); const authMiddleware = new AuthMiddlewareImpl();

router.get('/protected-route', authMiddleware.checkAuth, (req, res) => { // Controlador para la ruta protegida res.json({ message: '¡Ruta protegida!'}); });

export default router; `