bootifyjs 1.1.9 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api.d.ts +4 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +24 -9
- package/dist/api.js.map +1 -1
- package/dist/auth/AuthManager.d.ts +68 -0
- package/dist/auth/AuthManager.d.ts.map +1 -0
- package/dist/auth/AuthManager.js +239 -0
- package/dist/auth/AuthManager.js.map +1 -0
- package/dist/auth/examples/basic-usage.d.ts +29 -0
- package/dist/auth/examples/basic-usage.d.ts.map +1 -0
- package/dist/auth/examples/basic-usage.js +390 -0
- package/dist/auth/examples/basic-usage.js.map +1 -0
- package/dist/auth/index.d.ts +72 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +118 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/middleware/AuthMiddleware.d.ts +110 -0
- package/dist/auth/middleware/AuthMiddleware.d.ts.map +1 -0
- package/dist/auth/middleware/AuthMiddleware.js +336 -0
- package/dist/auth/middleware/AuthMiddleware.js.map +1 -0
- package/dist/auth/storage/RedisTokenStorage.d.ts +92 -0
- package/dist/auth/storage/RedisTokenStorage.d.ts.map +1 -0
- package/dist/auth/storage/RedisTokenStorage.js +207 -0
- package/dist/auth/storage/RedisTokenStorage.js.map +1 -0
- package/dist/auth/strategies/ApiKeyStrategy.d.ts +64 -0
- package/dist/auth/strategies/ApiKeyStrategy.d.ts.map +1 -0
- package/dist/auth/strategies/ApiKeyStrategy.js +391 -0
- package/dist/auth/strategies/ApiKeyStrategy.js.map +1 -0
- package/dist/auth/strategies/JwtStrategy.d.ts +46 -0
- package/dist/auth/strategies/JwtStrategy.d.ts.map +1 -0
- package/dist/auth/strategies/JwtStrategy.js +310 -0
- package/dist/auth/strategies/JwtStrategy.js.map +1 -0
- package/dist/auth/types.d.ts +130 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +50 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/config/AppConfig.d.ts +3 -3
- package/dist/config/AppConfig.d.ts.map +1 -1
- package/dist/config/AppConfig.js +9 -2
- package/dist/config/AppConfig.js.map +1 -1
- package/dist/constants/index.d.ts +61 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +75 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/core/decorators.d.ts +7 -7
- package/dist/core/decorators.d.ts.map +1 -1
- package/dist/core/decorators.js +8 -7
- package/dist/core/decorators.js.map +1 -1
- package/dist/core/di-container.d.ts +1 -1
- package/dist/core/di-container.d.ts.map +1 -1
- package/dist/core/di-container.js +3 -3
- package/dist/core/di-container.js.map +1 -1
- package/dist/events/event-bus.service.d.ts.map +1 -1
- package/dist/events/event-bus.service.js +2 -0
- package/dist/events/event-bus.service.js.map +1 -1
- package/dist/examples/auth/auth.middleware.d.ts +27 -0
- package/dist/examples/auth/auth.middleware.d.ts.map +1 -0
- package/dist/examples/auth/auth.middleware.js +187 -0
- package/dist/examples/auth/auth.middleware.js.map +1 -0
- package/dist/examples/auth/authorization.middleware.d.ts +1 -0
- package/dist/examples/auth/authorization.middleware.d.ts.map +1 -0
- package/dist/examples/auth/authorization.middleware.js +2 -0
- package/dist/examples/auth/authorization.middleware.js.map +1 -0
- package/dist/examples/auth/context.extractor.d.ts +1 -0
- package/dist/examples/auth/context.extractor.d.ts.map +1 -0
- package/dist/examples/auth/context.extractor.js +2 -0
- package/dist/examples/auth/context.extractor.js.map +1 -0
- package/dist/examples/auth/example.d.ts +1 -0
- package/dist/examples/auth/example.d.ts.map +1 -0
- package/dist/examples/auth/example.js +2 -0
- package/dist/examples/auth/example.js.map +1 -0
- package/dist/examples/auth/provider.d.ts +1 -0
- package/dist/examples/auth/provider.d.ts.map +1 -0
- package/dist/examples/auth/provider.js +2 -0
- package/dist/examples/auth/provider.js.map +1 -0
- package/dist/examples/auth/users.d.ts +1 -0
- package/dist/examples/auth/users.d.ts.map +1 -0
- package/dist/examples/auth/users.js +2 -0
- package/dist/examples/auth/users.js.map +1 -0
- package/dist/examples/authorization-examples.d.ts +67 -0
- package/dist/examples/authorization-examples.d.ts.map +1 -0
- package/dist/examples/authorization-examples.js +202 -0
- package/dist/examples/authorization-examples.js.map +1 -0
- package/dist/examples/controllers/auth.controller.d.ts +64 -0
- package/dist/examples/controllers/auth.controller.d.ts.map +1 -0
- package/dist/examples/controllers/auth.controller.js +284 -0
- package/dist/examples/controllers/auth.controller.js.map +1 -0
- package/dist/examples/controllers/health.controller.d.ts +1 -0
- package/dist/examples/controllers/health.controller.d.ts.map +1 -1
- package/dist/examples/controllers/health.controller.js +6 -0
- package/dist/examples/controllers/health.controller.js.map +1 -1
- package/dist/examples/controllers/todo-updated.controller.d.ts +103 -0
- package/dist/examples/controllers/todo-updated.controller.d.ts.map +1 -0
- package/dist/examples/controllers/todo-updated.controller.js +328 -0
- package/dist/examples/controllers/todo-updated.controller.js.map +1 -0
- package/dist/examples/controllers/todo-with-jwt-auth.controller.d.ts +114 -0
- package/dist/examples/controllers/todo-with-jwt-auth.controller.d.ts.map +1 -0
- package/dist/examples/controllers/todo-with-jwt-auth.controller.js +329 -0
- package/dist/examples/controllers/todo-with-jwt-auth.controller.js.map +1 -0
- package/dist/examples/controllers/todo.controller.d.ts +4 -2
- package/dist/examples/controllers/todo.controller.d.ts.map +1 -1
- package/dist/examples/controllers/todo.controller.js +44 -18
- package/dist/examples/controllers/todo.controller.js.map +1 -1
- package/dist/examples/events/TodoEventHandler.d.ts +4 -1
- package/dist/examples/events/TodoEventHandler.d.ts.map +1 -1
- package/dist/examples/events/TodoEventHandler.js +8 -4
- package/dist/examples/events/TodoEventHandler.js.map +1 -1
- package/dist/examples/global-middleware-example.d.ts +2 -0
- package/dist/examples/global-middleware-example.d.ts.map +1 -0
- package/dist/examples/global-middleware-example.js +94 -0
- package/dist/examples/global-middleware-example.js.map +1 -0
- package/dist/examples/index.d.ts.map +1 -1
- package/dist/examples/index.js +81 -25
- package/dist/examples/index.js.map +1 -1
- package/dist/examples/jwt-auth-example.d.ts +47 -0
- package/dist/examples/jwt-auth-example.d.ts.map +1 -0
- package/dist/examples/jwt-auth-example.js +316 -0
- package/dist/examples/jwt-auth-example.js.map +1 -0
- package/dist/examples/services/todo.service.d.ts +3 -2
- package/dist/examples/services/todo.service.d.ts.map +1 -1
- package/dist/examples/services/todo.service.js +12 -2
- package/dist/examples/services/todo.service.js.map +1 -1
- package/dist/examples/services/user.service.d.ts +99 -0
- package/dist/examples/services/user.service.d.ts.map +1 -0
- package/dist/examples/services/user.service.js +281 -0
- package/dist/examples/services/user.service.js.map +1 -0
- package/dist/examples/simple-auth-example.d.ts +7 -0
- package/dist/examples/simple-auth-example.d.ts.map +1 -0
- package/dist/examples/simple-auth-example.js +106 -0
- package/dist/examples/simple-auth-example.js.map +1 -0
- package/dist/examples/test-auth-flow.d.ts +56 -0
- package/dist/examples/test-auth-flow.d.ts.map +1 -0
- package/dist/examples/test-auth-flow.js +449 -0
- package/dist/examples/test-auth-flow.js.map +1 -0
- package/dist/examples/todos/schema.d.ts +8 -8
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/logging/config/logging.config.d.ts +0 -32
- package/dist/logging/config/logging.config.d.ts.map +1 -1
- package/dist/logging/config/logging.config.js +43 -49
- package/dist/logging/config/logging.config.js.map +1 -1
- package/dist/logging/core/logger.d.ts +1 -0
- package/dist/logging/core/logger.d.ts.map +1 -1
- package/dist/logging/core/logger.js +3 -0
- package/dist/logging/core/logger.js.map +1 -1
- package/dist/logging/core/logger.provider.d.ts.map +1 -1
- package/dist/logging/core/logger.provider.js +24 -12
- package/dist/logging/core/logger.provider.js.map +1 -1
- package/dist/logging/core/startup.logger.d.ts +1 -1
- package/dist/logging/core/startup.logger.d.ts.map +1 -1
- package/dist/logging/core/startup.logger.js +6 -3
- package/dist/logging/core/startup.logger.js.map +1 -1
- package/dist/logging/core/tracing.service.d.ts +32 -0
- package/dist/logging/core/tracing.service.d.ts.map +1 -0
- package/dist/logging/core/tracing.service.js +165 -0
- package/dist/logging/core/tracing.service.js.map +1 -0
- package/dist/logging/index.d.ts +1 -1
- package/dist/logging/index.d.ts.map +1 -1
- package/dist/logging/index.js +3 -2
- package/dist/logging/index.js.map +1 -1
- package/dist/middleware/auth-context.extractor.d.ts +5 -0
- package/dist/middleware/auth-context.extractor.d.ts.map +1 -0
- package/dist/middleware/auth-context.extractor.js +114 -0
- package/dist/middleware/auth-context.extractor.js.map +1 -0
- package/dist/middleware/auth.middleware.d.ts +16 -2
- package/dist/middleware/auth.middleware.d.ts.map +1 -1
- package/dist/middleware/auth.middleware.js +110 -13
- package/dist/middleware/auth.middleware.js.map +1 -1
- package/dist/middleware/authorization.middleware.d.ts +21 -0
- package/dist/middleware/authorization.middleware.d.ts.map +1 -0
- package/dist/middleware/authorization.middleware.js +55 -0
- package/dist/middleware/authorization.middleware.js.map +1 -0
- package/dist/middleware/context.middleware.d.ts +12 -2
- package/dist/middleware/context.middleware.d.ts.map +1 -1
- package/dist/middleware/context.middleware.js +43 -17
- package/dist/middleware/context.middleware.js.map +1 -1
- package/dist/middleware/index.d.ts +1 -0
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/tracing.middleware.d.ts +15 -0
- package/dist/middleware/tracing.middleware.d.ts.map +1 -0
- package/dist/middleware/tracing.middleware.js +36 -0
- package/dist/middleware/tracing.middleware.js.map +1 -0
- package/package.json +5 -1
package/dist/api.d.ts
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { FastifyInstance } from 'fastify';
|
|
2
2
|
import { ZodObject } from 'zod';
|
|
3
|
+
import { FastifyMiddleware } from './core/decorators';
|
|
3
4
|
import { Constructor } from './core/di-container';
|
|
5
|
+
import { ContextExtractor } from './middleware/context.middleware';
|
|
4
6
|
export interface BootifyAppOptions {
|
|
5
7
|
controllers: Constructor[];
|
|
6
8
|
port?: number;
|
|
7
9
|
hostname?: string;
|
|
8
10
|
enableSwagger?: boolean;
|
|
9
11
|
configSchema?: ZodObject<any>;
|
|
12
|
+
contextExtractor?: ContextExtractor;
|
|
13
|
+
globalMiddlewares?: FastifyMiddleware[];
|
|
10
14
|
}
|
|
11
15
|
export declare function createBootifyApp(options: BootifyAppOptions): Promise<{
|
|
12
16
|
app: FastifyInstance<import("fastify").RawServerDefault, import("http").IncomingMessage, import("http").ServerResponse<import("http").IncomingMessage>, import("fastify").FastifyBaseLogger, import("fastify").FastifyTypeProviderDefault>;
|
package/dist/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAEA,OAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAClD,OAAU,EAAY,SAAS,EAAE,MAAM,KAAK,CAAA;AAG5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAGjD,OAAO,EAAE,gBAAgB,EAA2B,MAAM,iCAAiC,CAAA;AAM3F,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,WAAW,EAAE,CAAA;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;IAC7B,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,CAAA;CACxC;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB;;;GA0FhE"}
|
package/dist/api.js
CHANGED
|
@@ -37,15 +37,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.createBootifyApp = createBootifyApp;
|
|
40
|
+
const swagger_1 = __importDefault(require("@fastify/swagger"));
|
|
41
|
+
const swagger_ui_1 = __importDefault(require("@fastify/swagger-ui"));
|
|
40
42
|
const fastify_1 = __importDefault(require("fastify"));
|
|
41
43
|
const zod_1 = __importStar(require("zod"));
|
|
44
|
+
const AppConfig_1 = require("./config/AppConfig");
|
|
45
|
+
const constants_1 = require("./constants");
|
|
42
46
|
const router_1 = require("./core/router");
|
|
43
|
-
const swagger_1 = __importDefault(require("@fastify/swagger"));
|
|
44
|
-
const swagger_ui_1 = __importDefault(require("@fastify/swagger-ui"));
|
|
45
|
-
const request_logger_middleware_1 = require("./middleware/request-logger.middleware");
|
|
46
|
-
const context_middleware_1 = require("./middleware/context.middleware");
|
|
47
47
|
const logging_1 = require("./logging");
|
|
48
|
-
const
|
|
48
|
+
const context_middleware_1 = require("./middleware/context.middleware");
|
|
49
|
+
const request_logger_middleware_1 = require("./middleware/request-logger.middleware");
|
|
49
50
|
async function createBootifyApp(options) {
|
|
50
51
|
AppConfig_1.AppConfig.initialize(options.configSchema ?? zod_1.default.object({}));
|
|
51
52
|
const { logger, startupLogger } = await (0, logging_1.intitializeLogging)();
|
|
@@ -53,9 +54,19 @@ async function createBootifyApp(options) {
|
|
|
53
54
|
const app = (0, fastify_1.default)({
|
|
54
55
|
logger: false,
|
|
55
56
|
});
|
|
57
|
+
// Register context middleware FIRST to establish AsyncLocalStorage context
|
|
56
58
|
startupLogger.logComponentStart('Request Context Middleware');
|
|
57
|
-
app.addHook('onRequest', context_middleware_1.
|
|
59
|
+
app.addHook('onRequest', (0, context_middleware_1.createContextMiddleware)(options.contextExtractor));
|
|
58
60
|
startupLogger.logComponentComplete('Request Context Middleware');
|
|
61
|
+
// Register global middlewares after context is established
|
|
62
|
+
if (options.globalMiddlewares && options.globalMiddlewares.length > 0) {
|
|
63
|
+
startupLogger.logComponentStart('Global Middlewares');
|
|
64
|
+
options.globalMiddlewares.forEach((middleware, index) => {
|
|
65
|
+
app.addHook('onRequest', middleware);
|
|
66
|
+
console.log(` ✓ Registered global middleware ${index + 1}`);
|
|
67
|
+
});
|
|
68
|
+
startupLogger.logComponentComplete('Global Middlewares');
|
|
69
|
+
}
|
|
59
70
|
// 2. Request Logger Hooks
|
|
60
71
|
// These log the start and end of the request.
|
|
61
72
|
startupLogger.logComponentStart('Attaching Request Logger');
|
|
@@ -84,6 +95,8 @@ async function createBootifyApp(options) {
|
|
|
84
95
|
startupLogger.logComponentComplete('Attaching Global ErrorHandler');
|
|
85
96
|
if (options.enableSwagger) {
|
|
86
97
|
startupLogger.logComponentStart('Initializing Swagger');
|
|
98
|
+
const swaggerHost = options.hostname ?? 'localhost';
|
|
99
|
+
const swaggerPort = options.port ?? constants_1.DEFAULT_SERVER_PORT;
|
|
87
100
|
await app.register(swagger_1.default, {
|
|
88
101
|
openapi: {
|
|
89
102
|
info: {
|
|
@@ -91,7 +104,7 @@ async function createBootifyApp(options) {
|
|
|
91
104
|
description: 'API documentation',
|
|
92
105
|
version: '1.0.0',
|
|
93
106
|
},
|
|
94
|
-
servers: [{ url: `http://${
|
|
107
|
+
servers: [{ url: `http://${swaggerHost}:${swaggerPort}` }],
|
|
95
108
|
},
|
|
96
109
|
});
|
|
97
110
|
await app.register(swagger_ui_1.default, {
|
|
@@ -105,8 +118,10 @@ async function createBootifyApp(options) {
|
|
|
105
118
|
startupLogger.logStartupComplete();
|
|
106
119
|
const start = async () => {
|
|
107
120
|
try {
|
|
108
|
-
|
|
109
|
-
|
|
121
|
+
const actualPort = options.port ?? constants_1.DEFAULT_SERVER_PORT;
|
|
122
|
+
const actualHost = options.hostname ?? constants_1.DEFAULT_SERVER_HOST;
|
|
123
|
+
await app.listen({ port: actualPort, host: actualHost });
|
|
124
|
+
startupLogger.logStartupSummary(actualPort, actualHost);
|
|
110
125
|
}
|
|
111
126
|
catch (err) {
|
|
112
127
|
app.log.error(err);
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AuthManager - Central orchestrator for authentication strategies
|
|
3
|
+
* Manages strategy registration, selection, and execution
|
|
4
|
+
*/
|
|
5
|
+
import { AuthConfig, AuthContext, AuthResult, AuthStrategy, TokenStorage } from './types';
|
|
6
|
+
export declare class AuthManager {
|
|
7
|
+
private config;
|
|
8
|
+
private strategies;
|
|
9
|
+
private defaultStrategy?;
|
|
10
|
+
private tokenStorage?;
|
|
11
|
+
constructor(config?: {
|
|
12
|
+
defaultStrategy?: string;
|
|
13
|
+
tokenStorage?: TokenStorage;
|
|
14
|
+
});
|
|
15
|
+
/**
|
|
16
|
+
* Register an authentication strategy
|
|
17
|
+
*/
|
|
18
|
+
registerStrategy(strategy: AuthStrategy, config: AuthConfig): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Get a registered strategy by name
|
|
21
|
+
*/
|
|
22
|
+
getStrategy(name: string): AuthStrategy | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Get all registered strategy names
|
|
25
|
+
*/
|
|
26
|
+
getRegisteredStrategies(): string[];
|
|
27
|
+
/**
|
|
28
|
+
* Authenticate using a specific strategy or auto-detect
|
|
29
|
+
*/
|
|
30
|
+
authenticate(context: AuthContext, strategyName?: string): Promise<AuthResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Validate a token using a specific strategy or auto-detect
|
|
33
|
+
*/
|
|
34
|
+
validate(token: string, context: AuthContext, strategyName?: string): Promise<AuthResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Refresh an access token
|
|
37
|
+
*/
|
|
38
|
+
refresh(refreshToken: string, context: AuthContext, strategyName?: string): Promise<AuthResult>;
|
|
39
|
+
/**
|
|
40
|
+
* Revoke/logout a user's session
|
|
41
|
+
*/
|
|
42
|
+
revoke(token: string, context: AuthContext, strategyName?: string): Promise<boolean>;
|
|
43
|
+
/**
|
|
44
|
+
* Select appropriate strategy based on context and preference
|
|
45
|
+
*/
|
|
46
|
+
private selectStrategy;
|
|
47
|
+
/**
|
|
48
|
+
* Auto-detect strategy based on request context
|
|
49
|
+
*/
|
|
50
|
+
private detectStrategy;
|
|
51
|
+
/**
|
|
52
|
+
* Store session data in token storage
|
|
53
|
+
*/
|
|
54
|
+
private storeSessionData;
|
|
55
|
+
/**
|
|
56
|
+
* Clean up session data from token storage
|
|
57
|
+
*/
|
|
58
|
+
private cleanupSessionData;
|
|
59
|
+
/**
|
|
60
|
+
* Get authentication statistics
|
|
61
|
+
*/
|
|
62
|
+
getStats(): {
|
|
63
|
+
registeredStrategies: number;
|
|
64
|
+
strategyNames: string[];
|
|
65
|
+
defaultStrategy?: string;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=AuthManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthManager.d.ts","sourceRoot":"","sources":["../../src/auth/AuthManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,UAAU,EACV,WAAW,EAEX,UAAU,EACV,YAAY,EAEZ,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,qBAAa,WAAW;IAKV,OAAO,CAAC,MAAM;IAJ1B,OAAO,CAAC,UAAU,CAAwC;IAC1D,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,YAAY,CAAC,CAAe;gBAEhB,MAAM,GAAE;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,YAAY,CAAC,EAAE,YAAY,CAAC;KACxB;IAKN;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBjF;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAInD;;OAEG;IACH,uBAAuB,IAAI,MAAM,EAAE;IAInC;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAiCpF;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAuB/F;;OAEG;IACG,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA8BrG;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuB1F;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;YACW,gBAAgB;IAiB9B;;OAEG;YACW,kBAAkB;IAiBhC;;OAEG;IACH,QAAQ,IAAI;QACV,oBAAoB,EAAE,MAAM,CAAC;QAC7B,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B;CAOF"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AuthManager - Central orchestrator for authentication strategies
|
|
4
|
+
* Manages strategy registration, selection, and execution
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.AuthManager = void 0;
|
|
8
|
+
const types_1 = require("./types");
|
|
9
|
+
class AuthManager {
|
|
10
|
+
constructor(config = {}) {
|
|
11
|
+
this.config = config;
|
|
12
|
+
this.strategies = new Map();
|
|
13
|
+
this.defaultStrategy = config.defaultStrategy;
|
|
14
|
+
this.tokenStorage = config.tokenStorage;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Register an authentication strategy
|
|
18
|
+
*/
|
|
19
|
+
async registerStrategy(strategy, config) {
|
|
20
|
+
try {
|
|
21
|
+
await strategy.initialize(config);
|
|
22
|
+
this.strategies.set(strategy.name, strategy);
|
|
23
|
+
// Set as default if it's the first strategy or explicitly configured
|
|
24
|
+
if (!this.defaultStrategy || config.options?.isDefault) {
|
|
25
|
+
this.defaultStrategy = strategy.name;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
30
|
+
throw new types_1.AuthError(`Failed to register strategy '${strategy.name}': ${errorMessage}`, 'STRATEGY_REGISTRATION_FAILED', 500);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get a registered strategy by name
|
|
35
|
+
*/
|
|
36
|
+
getStrategy(name) {
|
|
37
|
+
return this.strategies.get(name);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get all registered strategy names
|
|
41
|
+
*/
|
|
42
|
+
getRegisteredStrategies() {
|
|
43
|
+
return Array.from(this.strategies.keys());
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Authenticate using a specific strategy or auto-detect
|
|
47
|
+
*/
|
|
48
|
+
async authenticate(context, strategyName) {
|
|
49
|
+
const strategy = this.selectStrategy(context, strategyName);
|
|
50
|
+
if (!strategy) {
|
|
51
|
+
return {
|
|
52
|
+
success: false,
|
|
53
|
+
error: 'No suitable authentication strategy found'
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
console.log('AuthManager.authenticate', strategy.name, context);
|
|
57
|
+
try {
|
|
58
|
+
const result = await strategy.authenticate(context);
|
|
59
|
+
// Store session data if authentication successful and token storage available
|
|
60
|
+
if (result.success && result.user && this.tokenStorage) {
|
|
61
|
+
await this.storeSessionData(result, strategy.name);
|
|
62
|
+
}
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
console.error(`Authentication failed for strategy '${strategy.name}':`, error);
|
|
67
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
68
|
+
const errorCode = error instanceof types_1.AuthError ? error.code : 'UNKNOWN_ERROR';
|
|
69
|
+
return {
|
|
70
|
+
success: false,
|
|
71
|
+
error: errorMessage || 'Authentication failed',
|
|
72
|
+
metadata: { strategy: strategy.name, error: errorCode }
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Validate a token using a specific strategy or auto-detect
|
|
78
|
+
*/
|
|
79
|
+
async validate(token, context, strategyName) {
|
|
80
|
+
const strategy = this.selectStrategy(context, strategyName);
|
|
81
|
+
if (!strategy) {
|
|
82
|
+
return {
|
|
83
|
+
success: false,
|
|
84
|
+
error: 'No suitable validation strategy found'
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
return await strategy.validate(token, context);
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
92
|
+
const errorCode = error instanceof types_1.AuthError ? error.code : 'UNKNOWN_ERROR';
|
|
93
|
+
return {
|
|
94
|
+
success: false,
|
|
95
|
+
error: errorMessage || 'Token validation failed',
|
|
96
|
+
metadata: { strategy: strategy.name, error: errorCode }
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Refresh an access token
|
|
102
|
+
*/
|
|
103
|
+
async refresh(refreshToken, context, strategyName) {
|
|
104
|
+
const strategy = this.selectStrategy(context, strategyName);
|
|
105
|
+
if (!strategy || !strategy.refresh) {
|
|
106
|
+
return {
|
|
107
|
+
success: false,
|
|
108
|
+
error: 'Token refresh not supported by strategy'
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
const result = await strategy.refresh(refreshToken, context);
|
|
113
|
+
// Update session data if refresh successful
|
|
114
|
+
if (result.success && result.user && this.tokenStorage) {
|
|
115
|
+
await this.storeSessionData(result, strategy.name);
|
|
116
|
+
}
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
121
|
+
const errorCode = error instanceof types_1.AuthError ? error.code : 'UNKNOWN_ERROR';
|
|
122
|
+
return {
|
|
123
|
+
success: false,
|
|
124
|
+
error: errorMessage || 'Token refresh failed',
|
|
125
|
+
metadata: { strategy: strategy.name, error: errorCode }
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Revoke/logout a user's session
|
|
131
|
+
*/
|
|
132
|
+
async revoke(token, context, strategyName) {
|
|
133
|
+
const strategy = this.selectStrategy(context, strategyName);
|
|
134
|
+
if (!strategy) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
try {
|
|
138
|
+
const result = strategy.revoke ? await strategy.revoke(token, context) : true;
|
|
139
|
+
// Clean up session data
|
|
140
|
+
if (result && this.tokenStorage) {
|
|
141
|
+
await this.cleanupSessionData(token);
|
|
142
|
+
}
|
|
143
|
+
return result;
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
147
|
+
console.error(`Failed to revoke token: ${errorMessage}`);
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Select appropriate strategy based on context and preference
|
|
153
|
+
*/
|
|
154
|
+
selectStrategy(context, preferredStrategy) {
|
|
155
|
+
// Use explicitly specified strategy
|
|
156
|
+
if (preferredStrategy && this.strategies.has(preferredStrategy)) {
|
|
157
|
+
return this.strategies.get(preferredStrategy);
|
|
158
|
+
}
|
|
159
|
+
// Use strategy from context
|
|
160
|
+
if (context.strategy && this.strategies.has(context.strategy)) {
|
|
161
|
+
return this.strategies.get(context.strategy);
|
|
162
|
+
}
|
|
163
|
+
// Auto-detect based on request headers/content
|
|
164
|
+
const detectedStrategy = this.detectStrategy(context);
|
|
165
|
+
if (detectedStrategy && this.strategies.has(detectedStrategy)) {
|
|
166
|
+
return this.strategies.get(detectedStrategy);
|
|
167
|
+
}
|
|
168
|
+
// Fall back to default strategy
|
|
169
|
+
if (this.defaultStrategy && this.strategies.has(this.defaultStrategy)) {
|
|
170
|
+
return this.strategies.get(this.defaultStrategy);
|
|
171
|
+
}
|
|
172
|
+
return undefined;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Auto-detect strategy based on request context
|
|
176
|
+
*/
|
|
177
|
+
detectStrategy(context) {
|
|
178
|
+
const { headers } = context;
|
|
179
|
+
// Check for API key in headers
|
|
180
|
+
if (headers['x-api-key'] || headers['api-key']) {
|
|
181
|
+
return types_1.AuthStrategyType.API_KEY;
|
|
182
|
+
}
|
|
183
|
+
// Check for JWT Bearer token
|
|
184
|
+
const authHeader = headers['authorization'] || headers['Authorization'];
|
|
185
|
+
if (authHeader?.startsWith('Bearer ')) {
|
|
186
|
+
return types_1.AuthStrategyType.JWT;
|
|
187
|
+
}
|
|
188
|
+
// Default detection logic can be extended here
|
|
189
|
+
return undefined;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Store session data in token storage
|
|
193
|
+
*/
|
|
194
|
+
async storeSessionData(result, strategyName) {
|
|
195
|
+
if (!this.tokenStorage || !result.user || !result.tokens) {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
const sessionKey = `session:${result.user.id}:${Date.now()}`;
|
|
199
|
+
const sessionData = {
|
|
200
|
+
userId: result.user.id,
|
|
201
|
+
strategy: strategyName,
|
|
202
|
+
issuedAt: new Date(),
|
|
203
|
+
expiresAt: new Date(Date.now() + (result.tokens.expiresIn * 1000)),
|
|
204
|
+
metadata: result.metadata
|
|
205
|
+
};
|
|
206
|
+
await this.tokenStorage.store(sessionKey, sessionData, result.tokens.expiresIn);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Clean up session data from token storage
|
|
210
|
+
*/
|
|
211
|
+
async cleanupSessionData(token) {
|
|
212
|
+
if (!this.tokenStorage) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
// This is a simplified cleanup - in practice, you'd need to
|
|
216
|
+
// decode the token to get user ID and find associated sessions
|
|
217
|
+
try {
|
|
218
|
+
// Implementation would depend on your token structure
|
|
219
|
+
// For now, we'll just log the cleanup attempt
|
|
220
|
+
console.log('Session cleanup requested for token');
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
224
|
+
console.error('Failed to cleanup session data:', errorMessage);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Get authentication statistics
|
|
229
|
+
*/
|
|
230
|
+
getStats() {
|
|
231
|
+
return {
|
|
232
|
+
registeredStrategies: this.strategies.size,
|
|
233
|
+
strategyNames: Array.from(this.strategies.keys()),
|
|
234
|
+
defaultStrategy: this.defaultStrategy
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
exports.AuthManager = AuthManager;
|
|
239
|
+
//# sourceMappingURL=AuthManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthManager.js","sourceRoot":"","sources":["../../src/auth/AuthManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BootifyJS Authentication Examples
|
|
3
|
+
* Demonstrates how to use the authentication system with different strategies
|
|
4
|
+
*/
|
|
5
|
+
import { FastifyInstance } from 'fastify';
|
|
6
|
+
import { AuthManager, AuthMiddleware, RedisTokenStorage } from '../index';
|
|
7
|
+
export declare class MockRedisClient {
|
|
8
|
+
private store;
|
|
9
|
+
get(key: string): Promise<string | null>;
|
|
10
|
+
set(key: string, value: string, options?: {
|
|
11
|
+
EX?: number;
|
|
12
|
+
}): Promise<string | null>;
|
|
13
|
+
del(key: string): Promise<number>;
|
|
14
|
+
exists(key: string): Promise<number>;
|
|
15
|
+
expire(key: string, seconds: number): Promise<number>;
|
|
16
|
+
ttl(key: string): Promise<number>;
|
|
17
|
+
}
|
|
18
|
+
export declare function setupJwtAuth(): Promise<{
|
|
19
|
+
authManager: AuthManager;
|
|
20
|
+
middleware: AuthMiddleware;
|
|
21
|
+
tokenStorage: RedisTokenStorage;
|
|
22
|
+
}>;
|
|
23
|
+
export declare function setupMultiAuth(app: FastifyInstance): Promise<{
|
|
24
|
+
authManager: AuthManager;
|
|
25
|
+
middleware: AuthMiddleware;
|
|
26
|
+
tokenStorage: RedisTokenStorage;
|
|
27
|
+
}>;
|
|
28
|
+
export declare function registerJWTAuthRoutes(app: FastifyInstance, authManager: AuthManager, middleware: AuthMiddleware): void;
|
|
29
|
+
//# sourceMappingURL=basic-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basic-usage.d.ts","sourceRoot":"","sources":["../../../src/auth/examples/basic-usage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI1C,OAAO,EAGL,WAAW,EACX,cAAc,EAEd,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAGlB,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAyD;IAEhE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMlF,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOrD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAOxC;AAGD,wBAAsB,YAAY;;;;GA2DjC;AAGD,wBAAsB,cAAc,CAAC,GAAG,EAAE,eAAe;;;;GA+DxD;AAGD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,eAAe,EACpB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,cAAc,QA0G3B"}
|