MVP for API Key authentication

This commit is contained in:
ian
2025-12-03 14:51:59 +07:00
parent 9413c442df
commit 347e0192e2
17 changed files with 733 additions and 49 deletions
+41
View File
@@ -0,0 +1,41 @@
import { Elysia } from 'elysia'
import { createMerchantBody, createMerchantResponseSchema } from './schema'
import CreateMerchantService from './commands/service'
import { basicAuthMiddleware } from '~/middlewares/basicAuth'
import { DataAlreadyExistsError } from '~/helpers/errors'
export const router = new Elysia({
name: 'modules.auth',
detail: { tags: ['Auth'] },
prefix: '/auth',
})
.post('/get-key', async ({ body, headers, set }) => {
basicAuthMiddleware(headers, set)
try {
const result = await CreateMerchantService.createMerchant(body)
return {
status: 'success' as const,
message: 'Merchant created successfully' as const,
data: result,
}
} catch (error) {
if (error instanceof DataAlreadyExistsError) {
set.status = 409
return {
status: 'conflict' as const,
message: 'Merchant with this email or phone already exists' as const,
}
}
set.status = 500
return {
status: 'internal_error' as const,
message: 'Server error' as const,
}
}
}, {
body: createMerchantBody,
response: createMerchantResponseSchema,
})
export default router