api/app/middleware/bearer_token_auth_middleware.ts
2025-08-21 13:45:17 +02:00

47 lines
1.3 KiB
TypeScript

import env from '#start/env'
import type { HttpContext } from '@adonisjs/core/http'
import type { NextFn } from '@adonisjs/core/types/http'
export default class BearerTokenAuthMiddleware {
async handle({ response, request }: HttpContext, next: NextFn) {
// Get the authorization header
const authHeader = request.header('authorization')
if (!authHeader) {
return response.status(401).json({
error: 'Authorization header is required',
})
}
// Check if it's a Bearer token
if (!authHeader.startsWith('Bearer ')) {
return response.status(401).json({
error: 'Authorization header must be a Bearer token',
})
}
// Extract the token
const token = authHeader.substring(7) // Remove 'Bearer ' prefix
if (!token) {
return response.status(401).json({
error: 'Token is required',
})
}
// Get the valid token from environment
const validToken = env.get('API_BEARER_TOKEN')
if (!validToken) {
return response.status(500).json({
error: 'Server configuration error: API token not configured',
})
}
// Validate the token
if (token !== validToken) {
return response.status(401).json({
error: 'Invalid token',
})
}
await next()
}
}