import { Context, Next } from 'hono'; import { AuthService } from '../services/index'; import { UserService } from '../../../user-module/src/services/index'; import { AppDataSource } from '@d8d/shared-utils'; import { AuthContext } from '@d8d/shared-types'; import { parseWithAwait } from '@d8d/shared-utils'; import { UserResponseSchema } from '../../../user-module/src/schemas/index'; export async function authMiddleware(c: Context, next: Next) { try { const authHeader = c.req.header('Authorization'); if (!authHeader) { return c.json({ message: 'Authorization header missing' }, 401); } const tokenParts = authHeader.split(' '); if (tokenParts.length !== 2 || tokenParts[0] !== 'Bearer') { return c.json({ message: 'Authorization header missing' }, 401); } const token = tokenParts[1]; if (!token) { return c.json({ message: 'Token missing' }, 401); } const userService = new UserService(AppDataSource); const authService = new AuthService(userService); const decoded = authService.verifyToken(token); const user = await userService.getUserById(decoded.id); if (!user) { return c.json({ message: 'User not found' }, 401); } // 设置用户上下文 const userData = await parseWithAwait(UserResponseSchema, user); c.set('user', userData); c.set('token', token); await next(); } catch (error) { console.error('Authentication error:', error); return c.json({ message: 'Invalid token' }, 401); } }