aboutsummaryrefslogtreecommitdiff
path: root/api/src/modules/users/users.routes.ts
diff options
context:
space:
mode:
authorzwlucas <lucas.fariamo08@gmail.com>2026-07-25 21:23:29 +0000
committerzwlucas <lucas.fariamo08@gmail.com>2026-07-25 21:23:29 +0000
commitef55d9bb24430610b60c1b77821307cd72c08c55 (patch)
treee6935a810b34370b0a4c821e55f6397aac50c832 /api/src/modules/users/users.routes.ts
downloadhelpdesk-ef55d9bb24430610b60c1b77821307cd72c08c55.tar.gz
helpdesk-ef55d9bb24430610b60c1b77821307cd72c08c55.zip
feat: upload of the projectHEADmaster
Signed-off-by: zwlucas <lucas.fariamo08@gmail.com>
Diffstat (limited to 'api/src/modules/users/users.routes.ts')
-rw-r--r--api/src/modules/users/users.routes.ts56
1 files changed, 56 insertions, 0 deletions
diff --git a/api/src/modules/users/users.routes.ts b/api/src/modules/users/users.routes.ts
new file mode 100644
index 0000000..c7f1846
--- /dev/null
+++ b/api/src/modules/users/users.routes.ts
@@ -0,0 +1,56 @@
+import type { FastifyInstance } from 'fastify';
+import { createUserByAdminBodySchema, updateUserBodySchema, userIdParamsSchema } from './users.schema.js';
+import { listUsersHandler, createUserHandler, updateUserHandler, deleteUserHandler } from './users.controller.js';
+
+export default async function usersRoutes(fastify: FastifyInstance) {
+ // Middleware customizado para garantir que apenas admins possam acessar
+ const requireAdmin = async (request: any, reply: any) => {
+ if (request.user?.role !== 'admin') {
+ return reply.forbidden('Apenas administradores podem gerenciar usuários.');
+ }
+ };
+
+ // ── GET /users ─────────────────────────────────────────────────────────────
+ fastify.get('/', {
+ schema: {
+ tags: ['Users'],
+ summary: 'Lista todos os usuários (admin)',
+ },
+ preHandler: [fastify.authenticate, requireAdmin],
+ handler: listUsersHandler,
+ });
+
+ // ── POST /users ────────────────────────────────────────────────────────────
+ fastify.post('/', {
+ schema: {
+ tags: ['Users'],
+ summary: 'Cria um novo usuário (admin)',
+ body: createUserByAdminBodySchema,
+ },
+ preHandler: [fastify.authenticate, requireAdmin],
+ handler: createUserHandler,
+ });
+
+ // ── PATCH /users/:id ───────────────────────────────────────────────────────
+ fastify.patch('/:id', {
+ schema: {
+ tags: ['Users'],
+ summary: 'Atualiza um usuário (admin)',
+ params: userIdParamsSchema,
+ body: updateUserBodySchema,
+ },
+ preHandler: [fastify.authenticate, requireAdmin],
+ handler: updateUserHandler,
+ });
+
+ // ── DELETE /users/:id ──────────────────────────────────────────────────────
+ fastify.delete('/:id', {
+ schema: {
+ tags: ['Users'],
+ summary: 'Exclui um usuário (admin)',
+ params: userIdParamsSchema,
+ },
+ preHandler: [fastify.authenticate, requireAdmin],
+ handler: deleteUserHandler,
+ });
+}