2.0.18 • Published 1 year ago
@origins-digital/nestjs-firebase-guard v2.0.18
@origins-digital/firebase-fan-guard
A NestJS guard package for Firebase authentication of fan users.
Installation
npm install @origins-digital/firebase-fan-guardFeatures
- Firebase token verification for fan authentication
- Optional authentication support
- Automatic public key caching
- Fan payload extraction decorator
- Swagger integration
Usage
Basic Setup
import { Module } from '@nestjs/common';
import { FirebaseFanGuardModule } from '@origins-digital/firebase-fan-guard';
@Module({
imports: [
FirebaseFanGuardModule.forRoot({
publicKeyEndpoint: process.env.FIREBASE_PUBLIC_KEY_ENDPOINT,
}),
],
})
export class AppModule {}Controller Usage
import { Controller, Get } from '@nestjs/common';
import {
AuthFirebaseFanGuard,
FanPayloadParam,
} from '@origins-digital/firebase-fan-guard';
import { DecodedIdToken } from '@origins-digital/firebase-fan-guard';
@Controller('fan')
@AuthFirebaseFanGuard()
export class FanController {
@Get('profile')
getProfile(@FanPayloadParam() fanPayload: DecodedIdToken) {
return {
email: fanPayload.email,
name: fanPayload.name,
// ... other fan data
};
}
}Optional Authentication
import { Controller, Get } from '@nestjs/common';
import {
OptionalAuthFirebaseFanGuard,
FanPayloadParam,
} from '@origins-digital/firebase-fan-guard';
import { DecodedIdToken } from '@origins-digital/firebase-fan-guard';
@Controller('fan')
@OptionalAuthFirebaseFanGuard()
export class FanController {
@Get('profile')
getProfile(@FanPayloadParam() fanPayload?: DecodedIdToken) {
if (fanPayload) {
return {
email: fanPayload.email,
name: fanPayload.name,
// ... authenticated fan data
};
}
return {
// ... public fan data
};
}
}Swagger Integration
import { Controller, Get } from '@nestjs/common';
import {
ApiAuthFirebaseFanGuard,
FanPayloadParam,
} from '@origins-digital/firebase-fan-guard';
import { DecodedIdToken } from '@origins-digital/firebase-fan-guard';
@Controller('fan')
@ApiAuthFirebaseFanGuard()
export class FanController {
@Get('profile')
getProfile(@FanPayloadParam() fanPayload: DecodedIdToken) {
return {
email: fanPayload.email,
name: fanPayload.name,
};
}
}Error Handling
The guard will throw the following exceptions:
BadRequestException: When client configuration is missing or email is not verifiedUnauthorizedException: When token is missing or invalid
Configuration
The FirebaseFanGuardModule accepts the following configuration:
interface FirebaseFanGuardConfig {
publicKeyEndpoint: string;
}Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
2.0.18
1 year ago
2.0.17
1 year ago
2.0.16
1 year ago
2.0.15
1 year ago
2.0.14
1 year ago
2.0.13
1 year ago
2.0.12
1 year ago
2.0.11
1 year ago
2.0.10
1 year ago
2.0.9
1 year ago
2.0.8
1 year ago
2.0.7
1 year ago
2.0.6
1 year ago
2.0.5
1 year ago
2.0.4
1 year ago
2.0.3
1 year ago
2.0.2
1 year ago
2.0.1
1 year ago
2.0.0
1 year ago
1.0.17
1 year ago
1.0.16
1 year ago
1.0.15
1 year ago
1.0.14
1 year ago
1.0.13
1 year ago
1.0.12
1 year ago