| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import { createRoute, OpenAPIHono } from '@hono/zod-openapi'
- import { ErrorSchema } from '@/server/utils/errorHandler'
- import { authMiddleware } from '@/server/middleware/auth.middleware'
- import { AuthContext } from '@/server/types/context'
- import { PermissionService } from '@/server/modules/permissions/permission.service'
- import { AppDataSource } from '@/server/data-source'
- import { z } from '@hono/zod-openapi'
- const permissionsService = new PermissionService(AppDataSource)
- const PermissionsResponseSchema = z.object({
- permissions: z.array(z.string()).openapi({
- description: '用户权限编码列表',
- example: ['user:manage', 'client:view', 'admin:access']
- })
- })
- const routeDef = createRoute({
- method: 'get',
- path: '/permissions',
- middleware: [authMiddleware],
- responses: {
- 200: {
- description: '获取用户权限列表成功',
- content: {
- 'application/json': {
- schema: PermissionsResponseSchema
- }
- }
- },
- 401: {
- description: '未授权',
- content: {
- 'application/json': {
- schema: ErrorSchema
- }
- }
- },
- 500: {
- description: '服务器错误',
- content: {
- 'application/json': {
- schema: ErrorSchema
- }
- }
- }
- }
- })
- const app = new OpenAPIHono<AuthContext>().openapi(routeDef, async (c) => {
- try {
- const user = c.get('user')
- const permissions = await permissionsService.getUserPermissions(user.id)
-
- return c.json({
- permissions
- }, 200)
- } catch (error) {
- console.error('获取用户权限失败:', error)
- return c.json({ code: 500, message: '获取用户权限失败' }, 500)
- }
- })
- export default app
|