auth.middleware.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { Context, Next } from 'hono';
  2. import { AuthService } from '../modules/auth/auth.service';
  3. import { UserService } from '../modules/users/user.service';
  4. import { AppDataSource } from '../data-source';
  5. import { AuthContext } from '../types/context';
  6. export async function authMiddleware(c: Context<AuthContext>, next: Next) {
  7. try {
  8. const authHeader = c.req.header('Authorization');
  9. if (!authHeader) {
  10. return c.json({ message: 'Authorization header missing' }, 401);
  11. }
  12. const token = authHeader.split(' ')[1];
  13. if (!token) {
  14. return c.json({ message: 'Token missing' }, 401);
  15. }
  16. const userService = new UserService(AppDataSource);
  17. const authService = new AuthService(userService);
  18. const decoded = authService.verifyToken(token);
  19. const user = await userService.getUserById(decoded.id);
  20. if (!user) {
  21. return c.json({ message: 'User not found' }, 401);
  22. }
  23. c.set('user', user);
  24. c.set('token', token);
  25. await next();
  26. } catch (error) {
  27. console.error('Authentication error:', error);
  28. return c.json({ message: 'Invalid token' }, 401);
  29. }
  30. }