Failed to test signature verification

This commit is contained in:
ian
2025-12-03 16:00:04 +07:00
parent 66069aa0a9
commit 8bab86bdaf
4 changed files with 41 additions and 28 deletions
+5 -7
View File
@@ -18,13 +18,11 @@ BEGIN
DO UPDATE SET last_value = weekly_id_counters.last_value + 1
RETURNING last_value INTO v_seq;
RETURN format(
'%s-%02s%02s%04s',
p_prefix,
v_yy % 100,
v_ww,
v_seq
);
RETURN
p_prefix || '-' ||
to_char((v_yy % 100), 'FM00') ||
to_char(v_ww, 'FM00') ||
to_char(v_seq, 'FM0000');
END;
$$;
--> statement-breakpoint
+2 -2
View File
@@ -6,7 +6,7 @@ import merchantNonces from '~/db/schema/merchant_nonces'
import { verify } from '~/helpers/signature'
import { UnauthenticatedError } from '~/helpers/errors'
export const apiKey = new Elysia().macro({
export const apiKeyAuth = new Elysia().macro({
verifyKey: {
headers: t.Object({
'x-api-key': t.String(),
@@ -14,7 +14,7 @@ export const apiKey = new Elysia().macro({
'x-signature': t.String(),
'x-timestamp': t.Number(),
}),
body: t.Unknown(),
async beforeHandle({ headers, body }) {
const apiKey = headers['x-api-key']
const nonce = headers['x-nonce']
+5
View File
@@ -15,6 +15,7 @@ export async function createMerchant(body: CreateMerchantBody) {
const apiKey = generateApiKey()
const secretKey = generateSecretKey()
try {
// Insert new merchant
const result = await db
.insert(table.merchants)
@@ -37,4 +38,8 @@ export async function createMerchant(body: CreateMerchantBody) {
}
return result[0]
} catch (error) {
console.error('Error creating merchant:', error)
throw new Error('Failed to create merchant')
}
}
+10
View File
@@ -3,6 +3,7 @@ import { createMerchantBody, createMerchantResponseSchema } from './schema'
import CreateMerchantService from './commands/service'
import { basicAuthMiddleware } from '~/middlewares/basicAuth'
import { DataAlreadyExistsError } from '~/helpers/errors'
import { apiKeyAuth } from '~/middlewares/apiKeyAuth'
export const router = new Elysia({
name: 'modules.auth',
@@ -40,5 +41,14 @@ export const router = new Elysia({
security: [{ basicAuth: [] }],
},
})
.use(apiKeyAuth)
.get('/test-key', async ({ body }) => {
return body
}, {
verifyKey: true,
detail: {
security: [{ basicAuth: [] }],
},
})
export default router