@bernierllc/auth-suite 1.0.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.
@@ -0,0 +1,20 @@
1
+ import type { SessionData, SessionManager } from '../types';
2
+ /**
3
+ * In-memory session manager
4
+ * For production use, consider Redis or database storage
5
+ */
6
+ export declare class MemorySessionManager implements SessionManager {
7
+ private sessions;
8
+ private config;
9
+ private cleanupInterval?;
10
+ constructor(config: any);
11
+ create(userId: string, metadata?: Record<string, any>): Promise<SessionData>;
12
+ get(sessionId: string): Promise<SessionData | null>;
13
+ update(sessionId: string, updates: Partial<SessionData>): Promise<boolean>;
14
+ destroy(sessionId: string): Promise<boolean>;
15
+ destroyAllForUser(userId: string): Promise<number>;
16
+ cleanup(): Promise<number>;
17
+ private startCleanupTimer;
18
+ destroyManager(): void;
19
+ }
20
+ //# sourceMappingURL=session-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/managers/session-manager.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE5D;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,eAAe,CAAC,CAAiC;gBAE7C,MAAM,EAAE,GAAG;IAQjB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAkB5E,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAoBnD,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAY1E,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5C,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAalD,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAkBhC,OAAO,CAAC,iBAAiB;IAazB,cAAc,IAAI,IAAI;CAKvB"}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ /*
3
+ Copyright (c) 2025 Bernier LLC
4
+
5
+ This file is licensed to the client under a limited-use license.
6
+ The client may use and modify this code *only within the scope of the project it was delivered for*.
7
+ Redistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.MemorySessionManager = void 0;
11
+ const uuid_1 = require("uuid");
12
+ /**
13
+ * In-memory session manager
14
+ * For production use, consider Redis or database storage
15
+ */
16
+ class MemorySessionManager {
17
+ sessions = new Map();
18
+ config;
19
+ cleanupInterval;
20
+ constructor(config) {
21
+ this.config = config;
22
+ if (config.cleanup?.enabled) {
23
+ this.startCleanupTimer();
24
+ }
25
+ }
26
+ async create(userId, metadata) {
27
+ const sessionId = (0, uuid_1.v4)();
28
+ const now = new Date();
29
+ const expiresAt = new Date(now.getTime() + (this.config.persistence?.ttl || 24 * 60 * 60 * 1000));
30
+ const session = {
31
+ sessionId,
32
+ userId,
33
+ createdAt: now,
34
+ lastAccessedAt: now,
35
+ expiresAt,
36
+ metadata: metadata || {}
37
+ };
38
+ this.sessions.set(sessionId, session);
39
+ return session;
40
+ }
41
+ async get(sessionId) {
42
+ const session = this.sessions.get(sessionId);
43
+ if (!session) {
44
+ return null;
45
+ }
46
+ // Check if session has expired
47
+ if (session.expiresAt < new Date()) {
48
+ this.sessions.delete(sessionId);
49
+ return null;
50
+ }
51
+ // Update last accessed time
52
+ session.lastAccessedAt = new Date();
53
+ this.sessions.set(sessionId, session);
54
+ return session;
55
+ }
56
+ async update(sessionId, updates) {
57
+ const session = this.sessions.get(sessionId);
58
+ if (!session) {
59
+ return false;
60
+ }
61
+ const updatedSession = { ...session, ...updates };
62
+ this.sessions.set(sessionId, updatedSession);
63
+ return true;
64
+ }
65
+ async destroy(sessionId) {
66
+ return this.sessions.delete(sessionId);
67
+ }
68
+ async destroyAllForUser(userId) {
69
+ let count = 0;
70
+ for (const [sessionId, session] of this.sessions.entries()) {
71
+ if (session.userId === userId) {
72
+ this.sessions.delete(sessionId);
73
+ count++;
74
+ }
75
+ }
76
+ return count;
77
+ }
78
+ async cleanup() {
79
+ const now = new Date();
80
+ const maxIdleMs = this.config.cleanup?.maxIdleMs || 24 * 60 * 60 * 1000;
81
+ let cleaned = 0;
82
+ for (const [sessionId, session] of this.sessions.entries()) {
83
+ const isExpired = session.expiresAt < now;
84
+ const isIdle = (now.getTime() - session.lastAccessedAt.getTime()) > maxIdleMs;
85
+ if (isExpired || isIdle) {
86
+ this.sessions.delete(sessionId);
87
+ cleaned++;
88
+ }
89
+ }
90
+ return cleaned;
91
+ }
92
+ startCleanupTimer() {
93
+ const intervalMs = this.config.cleanup?.intervalMs || 60000; // Default 1 minute
94
+ this.cleanupInterval = setInterval(async () => {
95
+ const cleaned = await this.cleanup();
96
+ if (cleaned > 0) {
97
+ // Optionally log cleanup activity
98
+ // eslint-disable-next-line no-console
99
+ console.log(`Cleaned up ${cleaned} expired sessions`);
100
+ }
101
+ }, intervalMs);
102
+ }
103
+ destroyManager() {
104
+ if (this.cleanupInterval) {
105
+ clearInterval(this.cleanupInterval);
106
+ }
107
+ }
108
+ }
109
+ exports.MemorySessionManager = MemorySessionManager;
110
+ //# sourceMappingURL=session-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/managers/session-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ import type { AuthSuiteConfig, AuthSuiteResult, PermissionCheck, PermissionResult, RegisterCredentials, LoginCredentials, User, EmailVerificationResult } from './types';
2
+ /**
3
+ * Complete authentication suite providing comprehensive auth functionality
4
+ *
5
+ * Features:
6
+ * - Full authentication service capabilities
7
+ * - Enhanced session management with cleanup
8
+ * - Role-based access control (RBAC)
9
+ * - Multi-factor authentication (MFA)
10
+ * - Comprehensive audit logging
11
+ * - OAuth/SAML/LDAP integration support
12
+ * - Advanced security features
13
+ */
14
+ export declare class AuthSuite {
15
+ private authService;
16
+ private sessionManager;
17
+ private rbacManager;
18
+ private mfaManager;
19
+ private auditManager;
20
+ private logger;
21
+ private config;
22
+ private emailSender?;
23
+ private neverhubAdapter?;
24
+ private verificationTokens;
25
+ constructor(config: AuthSuiteConfig);
26
+ /**
27
+ * Register a new user with enhanced features
28
+ */
29
+ register(credentials: RegisterCredentials): Promise<AuthSuiteResult>;
30
+ /**
31
+ * Login user with enhanced security features
32
+ */
33
+ login(credentials: LoginCredentials): Promise<AuthSuiteResult>;
34
+ /**
35
+ * Complete MFA verification and finish login
36
+ */
37
+ completeMfaLogin(challengeId: string, response: string): Promise<AuthSuiteResult>;
38
+ /**
39
+ * Verify token with enhanced session management
40
+ */
41
+ verifyToken(token: string): Promise<User | null>;
42
+ /**
43
+ * Check user permission with RBAC
44
+ */
45
+ checkPermission(check: PermissionCheck): Promise<PermissionResult>;
46
+ /**
47
+ * Get user roles
48
+ */
49
+ getUserRoles(userId: string): Promise<string[]>;
50
+ /**
51
+ * Get user permissions (all permissions from all roles)
52
+ */
53
+ getUserPermissions(userId: string): Promise<string[]>;
54
+ /**
55
+ * Logout user and cleanup session
56
+ */
57
+ logout(sessionId?: string): Promise<{
58
+ success: boolean;
59
+ }>;
60
+ /**
61
+ * Setup MFA for user
62
+ */
63
+ setupMfa(userId: string, type: string): Promise<{
64
+ secret: string;
65
+ qrCode?: string;
66
+ }>;
67
+ /**
68
+ * Get audit logs with filtering
69
+ */
70
+ getAuditLogs(filters: any): Promise<any[]>;
71
+ /**
72
+ * Cleanup expired sessions and audit logs
73
+ */
74
+ cleanup(): Promise<{
75
+ sessions: number;
76
+ auditLogs: number;
77
+ }>;
78
+ /**
79
+ * Send verification email to user
80
+ */
81
+ private sendVerificationEmail;
82
+ /**
83
+ * Manually send verification email to a user
84
+ */
85
+ sendVerificationEmailManually(userId: string, email: string): Promise<{
86
+ success: boolean;
87
+ error?: string;
88
+ }>;
89
+ /**
90
+ * Get email configuration status
91
+ */
92
+ getEmailConfiguration(): {
93
+ enabled: boolean;
94
+ verification: {
95
+ enabled: boolean;
96
+ required: boolean;
97
+ automaticSend: boolean;
98
+ };
99
+ welcome: {
100
+ enabled: boolean;
101
+ sendOnRegistration: boolean;
102
+ sendOnFirstLogin: boolean;
103
+ };
104
+ passwordReset: {
105
+ enabled: boolean;
106
+ };
107
+ providerConfigured: boolean;
108
+ neverhub: {
109
+ enabled: boolean;
110
+ available: boolean;
111
+ overrideDirect: boolean;
112
+ fallbackToDirect: boolean;
113
+ serviceName: string;
114
+ };
115
+ };
116
+ /**
117
+ * Verify user email with token
118
+ */
119
+ verifyEmail(token: string): Promise<EmailVerificationResult>;
120
+ /**
121
+ * Send password reset email
122
+ */
123
+ sendPasswordResetEmail(email: string): Promise<{
124
+ success: boolean;
125
+ error?: string;
126
+ }>;
127
+ private mergeWithDefaults;
128
+ /**
129
+ * Initialize NeverHub adapter if configured and available
130
+ */
131
+ private initializeNeverHub;
132
+ private initializeManagers;
133
+ private completeLogin;
134
+ private isMfaRequired;
135
+ /**
136
+ * Check if verification email should be sent
137
+ */
138
+ private shouldSendVerificationEmail;
139
+ /**
140
+ * Check if welcome email should be sent
141
+ */
142
+ private shouldSendWelcomeEmail;
143
+ /**
144
+ * Build verification URL with token
145
+ */
146
+ private buildVerificationUrl;
147
+ /**
148
+ * Process template variables in content
149
+ */
150
+ private processTemplate;
151
+ /**
152
+ * Send email with NeverHub integration and fallback logic
153
+ */
154
+ private sendEmailWithNeverHubFallback;
155
+ /**
156
+ * Send email via NeverHub service discovery
157
+ */
158
+ private sendEmailViaNeverHub;
159
+ /**
160
+ * Check if NeverHub should be used for email sending
161
+ */
162
+ private shouldUseNeverHub;
163
+ /**
164
+ * Send email with retry logic
165
+ */
166
+ private sendEmailWithRetry;
167
+ /**
168
+ * Send welcome email to user
169
+ */
170
+ private sendWelcomeEmail;
171
+ }
172
+ //# sourceMappingURL=suite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suite.d.ts","sourceRoot":"","sources":["../src/suite.ts"],"names":[],"mappings":"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"}