@3d-outlet/passport
v1.0.0
Published
Lightweight Face3D authentication library
Downloads
97
Readme
🔑 @3d-outlet/passport
Token-based Authentication Module for 3D OUTLET Microservices
✨ Features
- 🛡️ Secure Token Generation - Creates HMAC-based tokens considering
userId,issuedAt, andexpiresAt. - 🔑 Reliable Token Verification - Authenticates and validates token expiration using constant-time comparison.
- 🚀 NestJS Integration - Easy integration into NestJS applications using
PassportModule. - 🔄 Flexible Configuration - Supports synchronous and asynchronous module configuration.
- 🔐 Encoding and Decoding - Built-in utilities for Base64 URL encoding/decoding and cryptographic operations.
📦 Installation
npm install @3d-outlet/passport
# or
pnpm add @3d-outlet/passport
# or
yarn add @3d-outlet/passport
# or
bun add @3d-outlet/passport🚀 Quick Start
Module Registration
Synchronous Registration
import { Module } from '@nestjs/common'
import { PassportModule } from '@3d-outlet/passport'
@Module({
imports: [
PassportModule.register({
secretKey: 'YOUR_VERY_SECRET_KEY', // Replace with your secret key
}),
],
})
export class AppModule {}Asynchronous Registration
import { Module } from '@nestjs/common'
import { PassportModule } from '@3d-outlet/passport'
import { ConfigModule, ConfigService } from '@nestjs/config'
@Module({
imports: [
PassportModule.registerAsync({
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({
secretKey: configService.get<string>('PASSPORT_SECRET_KEY'),
}),
inject: [ConfigService],
}),
],
})
export class AppModule {}Using PassportService
import { Injectable } from '@nestjs/common'
import { PassportService } from '@3d-outlet/passport'
@Injectable()
export class AuthService {
constructor(private readonly passportService: PassportService) {}
async login(userId: string) {
const ttl = 3600 // Token expiration in seconds (1 hour)
const token = this.passportService.generate(userId, ttl)
return { token }
}
async verifyToken(token: string) {
const result = this.passportService.verify(token)
if (!result.valid) {
console.error('Invalid token:', result.reason)
return null
}
console.log('User:', result.userId)
return result.userId
}
}📁 Project Structure
passport/
├── lib/ # TypeScript source files
│ ├── constants/ # Passport module constants
│ ├── interfaces/ # Interfaces for module options and tokens
│ ├── utils/ # Utility functions (Base64, Crypto)
│ ├── passport.module.ts # Main NestJS Passport module
│ ├── passport.providers.ts # Module configuration providers
│ └── passport.service.ts # Service for token generation and verification
└── dist/ # Compiled JavaScript (after build)🛠️ Development
Prerequisites
- Node.js: >= 16.0.0
- TypeScript: ^5.9.3
Building the Package
# Install dependencies
npm install
# или
pnpm install
# или
bun install
# Build TypeScript
npm run build📝 License
ISC © TeaCoder & Ilnaz Mingaleev
👨💻 Authors
TeaCoder (Vadim)
- Email: [email protected]
Ilnaz Mingaleev
- Email: [email protected]
Made with ❤️ for the 3D OUTLET project (private repo)
Internal use only.
