UNPKG

@syngrisi/syngrisi

Version:
89 lines (76 loc) 3.02 kB
import express from 'express'; import { OpenAPIRegistry } from '@asteasolutions/zod-to-openapi'; import * as authController from '@controllers/auth.controller'; import { Midleware } from '@types'; import { validateRequest } from '@utils/validateRequest'; import { AuthLoginSchema, AuthChangePasswordSchema, AuthApiKeyRespSchema, AuthLoginSuccessRespSchema, AuthChangePasswordFirstRunSchema } from '@schemas/Auth.schema'; import { createApiResponse, createApiEmptyResponse } from '@api-docs/openAPIResponseBuilders'; import { SkipValid } from '../../schemas/SkipValid.schema'; import { createRequestBodySchema } from '../../schemas/utils/createRequestBodySchema'; import { createRequestOpenApiBodySchema } from '../../schemas/utils/createRequestOpenApiBodySchema'; export const registry = new OpenAPIRegistry(); const router = express.Router(); registry.registerPath({ method: 'get', path: '/v1/auth/logout', summary: 'Logout the current user.', tags: ['Auth'], responses: createApiEmptyResponse('Logout success'), }); router.get( '/logout', validateRequest(SkipValid, 'get, /v1/auth/logout'), authController.logout as Midleware ); registry.registerPath({ method: 'get', path: '/v1/auth/apikey', summary: 'Generate a new API key for the current user.', tags: ['Auth'], responses: createApiResponse(AuthApiKeyRespSchema, 'API Key generated'), }); router.get( '/apikey', validateRequest(SkipValid, 'get, /v1/auth/apikey'), authController.apikey as Midleware ); registry.registerPath({ method: 'post', path: '/v1/auth/login', summary: 'Login a user with username and password.', tags: ['Auth'], request: { body: createRequestOpenApiBodySchema(AuthLoginSchema) }, responses: createApiResponse(AuthLoginSuccessRespSchema, 'Login success'), }); router.post( '/login', validateRequest(createRequestBodySchema(AuthLoginSchema), 'post, /v1/auth/login'), authController.login as Midleware ); registry.registerPath({ method: 'post', path: '/v1/auth/change', summary: 'Change the password for the current user.', tags: ['Auth'], request: { body: createRequestOpenApiBodySchema(AuthChangePasswordSchema) }, responses: createApiEmptyResponse('Password changed'), }); router.post( '/change', validateRequest(createRequestBodySchema(AuthChangePasswordSchema), 'post, /v1/auth/change'), authController.changePassword as Midleware ); registry.registerPath({ method: 'post', path: '/v1/auth/change_first_run', summary: 'Change the password for the first run.', tags: ['Auth'], request: { body: createRequestOpenApiBodySchema(AuthChangePasswordFirstRunSchema) }, responses: createApiEmptyResponse('First run password changed'), }); router.post( '/change_first_run', validateRequest(createRequestBodySchema(AuthChangePasswordFirstRunSchema), 'post, /v1/auth/change_first_run'), authController.changePasswordFirstRun as Midleware ); export default router;