| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import { createRoute, OpenAPIHono } from '@hono/zod-openapi';
- import { AuthService } from '../services';
- import { UserService } from '@d8d/user-module';
- import { ErrorSchema } from '@d8d/shared-utils';
- import { AppDataSource } from '@d8d/shared-utils';
- const routeDef = createRoute({
- method: 'get',
- path: '/sso-verify',
- responses: {
- 200: {
- description: 'SSO验证成功',
- headers: {
- 'X-Username': {
- schema: { type: 'string' },
- description: '格式化后的用户名'
- }
- }
- },
- 401: {
- description: '未授权或令牌无效',
- content: {
- 'application/json': {
- schema: ErrorSchema
- }
- }
- },
- 500: {
- description: '服务器错误',
- content: {
- 'application/json': {
- schema: ErrorSchema
- }
- }
- }
- }
- });
- const app = new OpenAPIHono().openapi(routeDef, async (c) => {
- try {
- // 在路由处理函数内部初始化服务
- const userService = new UserService(AppDataSource);
- const authService = new AuthService(userService);
- const token = c.req.header('Authorization')?.replace('Bearer ', '');
- if (!token) {
- return c.json({ code: 401, message: '未提供授权令牌' }, 401);
- }
- try {
- const userData = await authService.verifyToken(token);
- if (!userData) {
- return c.json({ code: 401, message: '无效令牌' }, 401);
- }
- return c.text('OK', 200);
- } catch (tokenError) {
- return c.json({ code: 401, message: '令牌验证失败' }, 401);
- }
- } catch (error) {
- return c.json({ code: 500, message: 'SSO验证失败' }, 500);
- }
- });
- export default app;
|