1.223345677995555.2 • Published 6 months ago
auth-interceptor-lib2 v1.223345677995555.2
AuthInterceptor
Middleware for authentication using a token provider. This middleware validates the authentication token by comparing it with the defined protected routes. Additionally, it uses a global logger to record information about unauthorized requests.
Parameters
TokenProvider
- Type:
AuthProviderInterface
- Description: Implementation of the token provider. Examples of implementations include
CognitoProvider
.
ConsoleLogger
- Type:
LoggerInterface
- Description: Logger instance used to record logs in the system.
Functionality
- Initializes the global logger using
LoggerSingleton.initialize(ConsoleLogger)
. - Checks if the current route is a public route. If it is, access is allowed directly.
- Validates the token provided in the
authorization
header. - If the token is invalid:
- Uses the logger to record the unauthorized attempt.
- Returns a response with the status
401 Unauthorized
.
- If the token is valid:
- Allows the request to continue by calling
next()
.
- Allows the request to continue by calling
Return
A middleware function compatible with frameworks like Express.
Usage Example with Express
import ConsoleLogger from './logger/console.logger';
import express from 'express';
import AuthInterceptor, { CognitoProvider } from 'auth-interceptor-lib';
const app = express();
// Initialize the global logger, type LoggerInterface exported by: import { LoggerInterface } from 'auth-interceptor-lib'
const logger = new ConsoleLogger();
// Initialize the AuthInterceptor with the TokenProvider and Logger
const authMiddleware = AuthInterceptor(new CognitoProvider(), logger);
// Use the middleware in the application
app.use(authMiddleware);
Usage Example with NestJS
import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common'
import AuthProvider, { CognitoProvider } from 'auth-interceptor-lib';
import { ConsoleLogger } from '@/@core/infra/middlewares/logger';
@Module({
imports: [],
providers: [],
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
const userPoolId = process.env.USER_POOL_ID || '';
if (!userPoolId) {
throw new Error('USER_POOL_ID is not set in the environment variables.');
}
consumer
.apply(AuthProvider(new CognitoProvider(userPoolId), new ConsoleLogger()))
.forRoutes('*');
}
}
1.22334567799.2
6 months ago
1.223345.2
6 months ago
1.22334567799111.2
6 months ago
1.223345677995555.2
6 months ago
1.2233456.2
6 months ago
1.223345677.2
6 months ago
1.22334.2
6 months ago
1.2233.2
6 months ago
1.223.2
6 months ago
1.22.2
6 months ago