- ✅ Supports an array of keys
- ✅ Supports overriding thrown errors
- ✅ 100% Test Coverage
Requests are expected to have the header api-key
.
public func configure(_ app: Application) throws {
app.middleware.use(APIKeyMiddleware(keys: ["123"]))
}
See Vapor Docs if wanting to add to individual routes.
The following errors are used by default:
- Missing API key:
Abort(.badRequest, reason: "Missing api-key.")
- Unauthorized API Key:
Abort(.unauthorized, reason: "Unauthorized api-key.")
To override these errors, assign a delegate to the APIKeyMiddleware. Returning nil uses defaults.
class Delegate: APIKeyMiddlewareDelegate {
static let shared = Delegate()
init() {}
func errorForMissingKey(in middleware: APIKeyMiddleware) -> Error? {
Abort(.imATeapot, reason: "Missing api-key was found by teapot.")
}
func errorForUnauthorizedKey(in middleware: APIKeyMiddleware) -> Error? {
Abort(.imATeapot, reason: "Unauthorized api-key was found by teapot.")
}
}
public func configure(_ app: Application) throws {
let middleware = APIKeyMiddleware(keys: ["123"], delegate: Delegate.shared)
app.middleware.use(middleware)
}
Add the following to your project:
https://github.com/ptrkstr/APIKeyMiddleware
Raise an issue if you need these
- Allow overriding API-Key header name