/** * @packageDocumentation * * Decorator-based guards and Keycloak bridge for NestJS resource servers. * Provides token validation (online introspection or offline JWKS), role and permission guards, * authentication decorators, and Keycloak configuration. * * ## Key Features * * - **Token Validation**: Online introspection (default) detects revoked tokens immediately; * offline JWKS mode validates signatures locally without network hops * - **Guards & Decorators**: `@Public()`, `@Auth()`, `@Roles()`, `@Permissions()`, `@CurrentUser()`, * and `@AuthToken()` for HTTP routes; GraphQL-specific variants for resolvers * - **Security Defaults**: Introspection by default, config validation with Zod, * client secret enforcement for online mode * * ## Quick Start * * ```ts * import { Module } from '@nestjs/common'; * import { APP_GUARD } from '@nestjs/core'; * import { ConfigModule, ConfigService } from '@nestjs/config'; * import { KeycloakModule, JwtAuthGuard } from '@pawells/nestjs-auth'; * * @Module({ * imports: [ * KeycloakModule.forRootAsync({ * imports: [ConfigModule], * inject: [ConfigService], * useFactory: (config: ConfigService) => ({ * authServerUrl: config.get('KEYCLOAK_AUTH_SERVER_URL'), * realm: config.get('KEYCLOAK_REALM'), * clientId: config.get('KEYCLOAK_CLIENT_ID'), * clientSecret: config.get('KEYCLOAK_CLIENT_SECRET'), * }), * }), * ], * providers: [ * { * provide: APP_GUARD, * useClass: JwtAuthGuard, * }, * ], * }) * export class AppModule {} * ``` * * @see {@link KeycloakModule} for token validation configuration * @see {@link JwtAuthGuard} for authentication enforcement */ export { KeycloakModule } from './keycloak/keycloak.module.js'; export { KeycloakTokenValidationService } from './keycloak/services/keycloak-token-validation.service.js'; export type { ITokenValidationResult } from './keycloak/services/keycloak-token-validation.service.js'; export type { TKeycloakModuleOptions, IKeycloakTokenClaims, IKeycloakUser } from './keycloak/keycloak.types.js'; export type { IKeycloakModuleAsyncOptions } from './keycloak/keycloak.interfaces.js'; export { KEYCLOAK_MODULE_OPTIONS } from './keycloak/keycloak.constants.js'; export { KeycloakAuthError } from './keycloak/keycloak.error.js'; export type { TKeycloakErrorMetadata } from './keycloak/keycloak.error.js'; export { KEYCLOAK_CONFIG_SCHEMA, AssertKeycloakConfig, ValidateKeycloakConfig } from './keycloak/keycloak.config.js'; export type { TKeycloakConfig } from './keycloak/keycloak.config.js'; export { JwtAuthGuard } from './guards/jwt-auth.guard.js'; export { RoleGuard } from './guards/role.guard.js'; export { PermissionGuard } from './guards/permission.guard.js'; export { Auth, Public, Roles, Permissions, RequireAllRoles, RequireAllPermissions, CurrentUser, AuthToken, KeycloakClaims, IS_PUBLIC_KEY, ROLES_KEY, PERMISSIONS_KEY, REQUIRE_ALL_ROLES_KEY, REQUIRE_ALL_PERMISSIONS_KEY, DetectContextType, ExtractRequestFromContext, ExtractUserFromContext, ExtractAuthTokenFromContext } from './decorators/auth-decorators.js'; export type { IContextOptions } from './decorators/auth-decorators.js'; export { GraphQLCurrentUser, GraphQLAuthToken, GraphQLContextParam, GraphQLUser, GraphQLKeycloakClaims } from './decorators/graphql-auth-decorators.js'; //# sourceMappingURL=index.d.ts.map