diff --git a/README.md b/README.md index 41e56ad..2b339bf 100644 --- a/README.md +++ b/README.md @@ -216,6 +216,7 @@ Here is the decorators you can use in your controllers. | Decorator | Description | | ---------------- | --------------------------------------------------------------------------------------------------------- | | @KeycloakUser | Retrieves the current Keycloak logged-in user. (must be per method, unless controller is request scoped.) | +| @AccessToken | Retrieves the access token used in the request | | @EnforcerOptions | Keycloak enforcer options. | | @Public | Allow any user to use the route. | | @Resource | Keycloak application resource name. | diff --git a/src/decorators/access-token.decorator.ts b/src/decorators/access-token.decorator.ts new file mode 100644 index 0000000..a987f84 --- /dev/null +++ b/src/decorators/access-token.decorator.ts @@ -0,0 +1,13 @@ +import { createParamDecorator, ExecutionContext } from '@nestjs/common'; +import { extractRequest } from '../util'; + +/** + * Retrieves the currently used access token + * @since 2.0.0 + */ +export const AccessToken = createParamDecorator( + (data: unknown, ctx: ExecutionContext) => { + const [req] = extractRequest(ctx); + return req.accessToken; + }, +); diff --git a/src/keycloak-connect.module.ts b/src/keycloak-connect.module.ts index 07ef856..61486e9 100644 --- a/src/keycloak-connect.module.ts +++ b/src/keycloak-connect.module.ts @@ -16,8 +16,9 @@ import { import { KeycloakMultiTenantService } from './services/keycloak-multitenant.service'; export * from './constants'; -export * from './decorators/keycloak-user.decorator'; +export * from './decorators/access-token.decorator'; export * from './decorators/enforcer-options.decorator'; +export * from './decorators/keycloak-user.decorator'; export * from './decorators/public.decorator'; export * from './decorators/resource.decorator'; export * from './decorators/roles.decorator';