@hsuite/auth
A comprehensive authentication library for NestJS applications supporting both Web2 (username/password) and Web3 (wallet-based) authentication methods.
Features
Flexible Authentication Strategies
Web2 (Traditional) Authentication
Username/password authentication
Email confirmation support
Password reset functionality
Two-factor authentication (2FA) support
Web3 (Blockchain) Authentication
Wallet-based authentication
Token gating capabilities
Web3 session management
Multiple Session Management Options
JWT-based authentication
Redis session management
Secure cookie handling
Session serialization
Advanced Security Features
Role-based access control
Admin-only mode support
Email confirmation enforcement
Secure password handling
Token expiration management
Integration Features
Seamless NestJS integration
Passport.js strategy support
Redis session store support
Mailer service integration
Twilio integration for 2FA
Installation
Module Configuration
The auth module can be configured asynchronously to support dynamic configuration loading:
Usage Examples
Protected Routes
User Profile Retrieval
Security Considerations
JWT Configuration
Always use strong secrets for JWT signing
Configure appropriate token expiration times
Store secrets in environment variables
Session Management
Configure secure cookie options
Use Redis for session storage in production
Implement proper session cleanup
Web3 Security
Validate wallet signatures
Implement proper nonce management
Configure token gating requirements
API Documentation
The library exposes several key endpoints and services:
AuthService
Core service handling authentication operations:
User profile management
Authentication state handling
Session management
AuthController
Provides REST endpoints for:
Profile retrieval
Authentication state management
Session handling
Guards
JwtAuthGuard
: Protects routes using JWT authenticationRedisAuthGuard
: Protects routes using Redis session authenticationConfirmedAuthGuard
: Ensures user email is confirmed
Contributing
Please read our contributing guidelines before submitting pull requests.
License
This project is licensed under the terms specified in the project's LICENSE file.
Built with ❤️ by the HbarSuite Team Copyright © 2024 HbarSuite. All rights reserved.
Last updated