fastify / fastify/fastify-swagger

How could we automatically add schema.security when we add authorization requirements to a route?

Open
#803 2 comments 3 reactions 0 assignees View on GitHub
feature request
Dominant language
JavaScript
Stars
1.1k
Forks
219
Avg merge
4h 24m
Merged PRs (30d)
2

Description

#### What are you trying to achieve, or the steps to reproduce?

We're using some very basic fastify.decorateRequest and fastify.decorate calls to support bearer auth in our application:

```
fastify.decorateRequest("user", null);

fastify.decorate("bearerAuthOptional", async (request: FastifyRequest) => {
request.user = await getAuth(request.headers.authorization);
});
```

As an example. Then in each route, we use a `preHandler` to run this decorator:

```
preHandler: fastify.auth([fastify.bearerAuthOptional]),
```

Now, we're generating OpenAPI with fastify/swagger, and it becomes necessary to tell API consumers which routes have which kinds of authentication. The code knows which routes do and don't, and we can repeat this information in the route-specific schema, but it'd be lovely to be able to have routes with auth _automatically_ get a `schema.security` value.

I don't know how this is possible - preHandler, probably not. Maybe like a plugin that operates on each route?

Is there a kind of abstraction that can _both_ add a `preHandler` hook and affect a route's schema in this way?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.