user.routes.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { FastifyInstance } from 'fastify'
  2. import { UserController } from '../controllers/user.controller'
  3. import { authenticate, hasRole } from '../middlewares/auth.middleware'
  4. import { ResetPasswordBody, ListUserQuery, CreateUserBody, UpdateUserBody } from '../dto/user.dto'
  5. import { UserRole } from '../entities/user.entity'
  6. export default async function userRoutes(fastify: FastifyInstance) {
  7. const userController = new UserController(fastify)
  8. fastify.post('/register', userController.register.bind(userController))
  9. fastify.post('/login', userController.userLogin.bind(userController))
  10. fastify.post('/admin-login', userController.adminLogin.bind(userController))
  11. fastify.get('/profile', { onRequest: [authenticate] }, userController.profile.bind(userController))
  12. fastify.post<{ Body: ResetPasswordBody }>(
  13. '/reset-password',
  14. { onRequest: [authenticate] },
  15. userController.resetPassword.bind(userController)
  16. )
  17. fastify.get<{ Querystring: ListUserQuery }>(
  18. '/',
  19. { onRequest: [hasRole(UserRole.ADMIN)] },
  20. userController.list.bind(userController)
  21. )
  22. fastify.get<{ Querystring: ListUserQuery }>(
  23. '/all',
  24. { onRequest: [hasRole(UserRole.ADMIN)] },
  25. userController.getAllUsers.bind(userController)
  26. )
  27. // 新增用户接口
  28. fastify.post<{ Body: CreateUserBody }>(
  29. '/create',
  30. { onRequest: [hasRole(UserRole.ADMIN)] },
  31. userController.createUser.bind(userController)
  32. )
  33. // 修改用户接口
  34. fastify.post<{ Body: UpdateUserBody }>(
  35. '/update',
  36. { onRequest: [hasRole(UserRole.ADMIN)] },
  37. userController.updateUser.bind(userController)
  38. )
  39. // 获取api子用户接口
  40. fastify.get<{ Querystring: { parentId?: number } }>(
  41. '/children',
  42. { onRequest: [hasRole(UserRole.ADMIN)] },
  43. userController.getChildApiUsers.bind(userController)
  44. )
  45. }