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() } }