@oxyhq/services 5.16.22 → 5.16.24
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/lib/commonjs/core/HttpService.js +15 -79
- package/lib/commonjs/core/HttpService.js.map +1 -1
- package/lib/commonjs/core/OxyServices.base.js +3 -11
- package/lib/commonjs/core/OxyServices.base.js.map +1 -1
- package/lib/commonjs/core/services/SessionService.js +163 -0
- package/lib/commonjs/core/services/SessionService.js.map +1 -0
- package/lib/commonjs/core/services/TokenService.js +206 -0
- package/lib/commonjs/core/services/TokenService.js.map +1 -0
- package/lib/commonjs/models/interfaces.js +15 -0
- package/lib/commonjs/models/interfaces.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +100 -22
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js +11 -3
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/commonjs/ui/hooks/useSessionSocket.js +228 -57
- package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -1
- package/lib/module/core/HttpService.js +15 -79
- package/lib/module/core/HttpService.js.map +1 -1
- package/lib/module/core/OxyServices.base.js +4 -11
- package/lib/module/core/OxyServices.base.js.map +1 -1
- package/lib/module/core/services/SessionService.js +159 -0
- package/lib/module/core/services/SessionService.js.map +1 -0
- package/lib/module/core/services/TokenService.js +203 -0
- package/lib/module/core/services/TokenService.js.map +1 -0
- package/lib/module/models/interfaces.js +15 -0
- package/lib/module/models/interfaces.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +100 -22
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/context/hooks/useAuthOperations.js +11 -3
- package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/module/ui/hooks/useSessionSocket.js +228 -57
- package/lib/module/ui/hooks/useSessionSocket.js.map +1 -1
- package/lib/typescript/core/HttpService.d.ts +1 -1
- package/lib/typescript/core/HttpService.d.ts.map +1 -1
- package/lib/typescript/core/OxyServices.base.d.ts +6 -0
- package/lib/typescript/core/OxyServices.base.d.ts.map +1 -1
- package/lib/typescript/core/mixins/OxyServices.analytics.d.ts.map +1 -1
- package/lib/typescript/core/mixins/OxyServices.assets.d.ts.map +1 -1
- package/lib/typescript/core/mixins/OxyServices.auth.d.ts.map +1 -1
- package/lib/typescript/core/mixins/OxyServices.developer.d.ts.map +1 -1
- package/lib/typescript/core/mixins/OxyServices.devices.d.ts.map +1 -1
- package/lib/typescript/core/mixins/OxyServices.karma.d.ts.map +1 -1
- package/lib/typescript/core/mixins/OxyServices.language.d.ts.map +1 -1
- package/lib/typescript/core/mixins/OxyServices.location.d.ts.map +1 -1
- package/lib/typescript/core/mixins/OxyServices.payment.d.ts.map +1 -1
- package/lib/typescript/core/mixins/OxyServices.privacy.d.ts.map +1 -1
- package/lib/typescript/core/mixins/OxyServices.security.d.ts.map +1 -1
- package/lib/typescript/core/mixins/OxyServices.user.d.ts +1 -3
- package/lib/typescript/core/mixins/OxyServices.user.d.ts.map +1 -1
- package/lib/typescript/core/mixins/OxyServices.utility.d.ts.map +1 -1
- package/lib/typescript/core/mixins/index.d.ts.map +1 -1
- package/lib/typescript/core/services/SessionService.d.ts +78 -0
- package/lib/typescript/core/services/SessionService.d.ts.map +1 -0
- package/lib/typescript/core/services/TokenService.d.ts +72 -0
- package/lib/typescript/core/services/TokenService.d.ts.map +1 -0
- package/lib/typescript/models/interfaces.d.ts +14 -0
- package/lib/typescript/models/interfaces.d.ts.map +1 -1
- package/lib/typescript/models/session.d.ts +7 -0
- package/lib/typescript/models/session.d.ts.map +1 -1
- package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/ui/hooks/useSessionSocket.d.ts +8 -1
- package/lib/typescript/ui/hooks/useSessionSocket.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/core/HttpService.ts +15 -95
- package/src/core/OxyServices.base.ts +3 -20
- package/src/core/services/SessionService.ts +173 -0
- package/src/core/services/TokenService.ts +226 -0
- package/src/models/interfaces.ts +16 -2
- package/src/models/session.ts +8 -1
- package/src/ui/context/OxyContext.tsx +105 -23
- package/src/ui/context/hooks/useAuthOperations.ts +11 -3
- package/src/ui/hooks/useSessionSocket.ts +229 -55
|
@@ -8,7 +8,7 @@ var _cache = require("../utils/cache");
|
|
|
8
8
|
var _requestUtils = require("../utils/requestUtils");
|
|
9
9
|
var _asyncUtils = require("../utils/asyncUtils");
|
|
10
10
|
var _errorUtils = require("../utils/errorUtils");
|
|
11
|
-
var
|
|
11
|
+
var _TokenService = require("./services/TokenService");
|
|
12
12
|
/**
|
|
13
13
|
* Unified HTTP Service
|
|
14
14
|
*
|
|
@@ -24,37 +24,7 @@ var _jwtDecode = require("jwt-decode");
|
|
|
24
24
|
* - Request queuing
|
|
25
25
|
*/
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
* Token store for authentication (singleton)
|
|
29
|
-
*/
|
|
30
|
-
class TokenStore {
|
|
31
|
-
accessToken = null;
|
|
32
|
-
refreshToken = null;
|
|
33
|
-
constructor() {}
|
|
34
|
-
static getInstance() {
|
|
35
|
-
if (!TokenStore.instance) {
|
|
36
|
-
TokenStore.instance = new TokenStore();
|
|
37
|
-
}
|
|
38
|
-
return TokenStore.instance;
|
|
39
|
-
}
|
|
40
|
-
setTokens(accessToken, refreshToken = '') {
|
|
41
|
-
this.accessToken = accessToken;
|
|
42
|
-
this.refreshToken = refreshToken;
|
|
43
|
-
}
|
|
44
|
-
getAccessToken() {
|
|
45
|
-
return this.accessToken;
|
|
46
|
-
}
|
|
47
|
-
getRefreshToken() {
|
|
48
|
-
return this.refreshToken;
|
|
49
|
-
}
|
|
50
|
-
clearTokens() {
|
|
51
|
-
this.accessToken = null;
|
|
52
|
-
this.refreshToken = null;
|
|
53
|
-
}
|
|
54
|
-
hasAccessToken() {
|
|
55
|
-
return !!this.accessToken;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
27
|
+
// Token management moved to TokenService - import it instead
|
|
58
28
|
|
|
59
29
|
/**
|
|
60
30
|
* Unified HTTP Service
|
|
@@ -75,7 +45,9 @@ class HttpService {
|
|
|
75
45
|
constructor(config) {
|
|
76
46
|
this.config = config;
|
|
77
47
|
this.baseURL = config.baseURL;
|
|
78
|
-
|
|
48
|
+
|
|
49
|
+
// Initialize TokenService with baseURL
|
|
50
|
+
_TokenService.tokenService.initialize(this.baseURL);
|
|
79
51
|
this.logger = new _requestUtils.SimpleLogger(config.enableLogging || false, config.logLevel || 'error', 'HttpService');
|
|
80
52
|
|
|
81
53
|
// Initialize performance infrastructure
|
|
@@ -205,7 +177,7 @@ class HttpService {
|
|
|
205
177
|
// Handle response
|
|
206
178
|
if (!response.ok) {
|
|
207
179
|
if (response.status === 401) {
|
|
208
|
-
|
|
180
|
+
_TokenService.tokenService.clearTokens();
|
|
209
181
|
}
|
|
210
182
|
|
|
211
183
|
// Try to parse error response (handle empty/malformed JSON)
|
|
@@ -343,46 +315,10 @@ class HttpService {
|
|
|
343
315
|
|
|
344
316
|
/**
|
|
345
317
|
* Get auth header with automatic token refresh
|
|
318
|
+
* Uses TokenService for all token operations
|
|
346
319
|
*/
|
|
347
320
|
async getAuthHeader() {
|
|
348
|
-
|
|
349
|
-
if (!accessToken) {
|
|
350
|
-
return null;
|
|
351
|
-
}
|
|
352
|
-
try {
|
|
353
|
-
const decoded = (0, _jwtDecode.jwtDecode)(accessToken);
|
|
354
|
-
const currentTime = Math.floor(Date.now() / 1000);
|
|
355
|
-
|
|
356
|
-
// If token expires in less than 60 seconds, refresh it
|
|
357
|
-
if (decoded.exp && decoded.exp - currentTime < 60 && decoded.sessionId) {
|
|
358
|
-
try {
|
|
359
|
-
const refreshUrl = `${this.baseURL}/api/session/token/${decoded.sessionId}`;
|
|
360
|
-
|
|
361
|
-
// Use AbortSignal.timeout for consistent timeout handling
|
|
362
|
-
const response = await fetch(refreshUrl, {
|
|
363
|
-
method: 'GET',
|
|
364
|
-
headers: {
|
|
365
|
-
'Accept': 'application/json'
|
|
366
|
-
},
|
|
367
|
-
signal: AbortSignal.timeout(5000)
|
|
368
|
-
});
|
|
369
|
-
if (response.ok) {
|
|
370
|
-
const {
|
|
371
|
-
accessToken: newToken
|
|
372
|
-
} = await response.json();
|
|
373
|
-
this.tokenStore.setTokens(newToken);
|
|
374
|
-
this.logger.debug('Token refreshed');
|
|
375
|
-
return `Bearer ${newToken}`;
|
|
376
|
-
}
|
|
377
|
-
} catch (refreshError) {
|
|
378
|
-
this.logger.warn('Token refresh failed, using current token');
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
return `Bearer ${accessToken}`;
|
|
382
|
-
} catch (error) {
|
|
383
|
-
this.logger.error('Error processing token:', error);
|
|
384
|
-
return `Bearer ${accessToken}`;
|
|
385
|
-
}
|
|
321
|
+
return await _TokenService.tokenService.getAuthHeader();
|
|
386
322
|
}
|
|
387
323
|
|
|
388
324
|
/**
|
|
@@ -517,18 +453,18 @@ class HttpService {
|
|
|
517
453
|
};
|
|
518
454
|
}
|
|
519
455
|
|
|
520
|
-
// Token management
|
|
456
|
+
// Token management - delegates to TokenService
|
|
521
457
|
setTokens(accessToken, refreshToken = '') {
|
|
522
|
-
|
|
458
|
+
_TokenService.tokenService.setTokens(accessToken, refreshToken);
|
|
523
459
|
}
|
|
524
460
|
clearTokens() {
|
|
525
|
-
|
|
461
|
+
_TokenService.tokenService.clearTokens();
|
|
526
462
|
}
|
|
527
463
|
getAccessToken() {
|
|
528
|
-
return
|
|
464
|
+
return _TokenService.tokenService.getAccessToken();
|
|
529
465
|
}
|
|
530
466
|
hasAccessToken() {
|
|
531
|
-
return
|
|
467
|
+
return _TokenService.tokenService.hasAccessToken();
|
|
532
468
|
}
|
|
533
469
|
getBaseURL() {
|
|
534
470
|
return this.baseURL;
|
|
@@ -560,10 +496,10 @@ class HttpService {
|
|
|
560
496
|
// Test-only utility
|
|
561
497
|
static __resetTokensForTests() {
|
|
562
498
|
try {
|
|
563
|
-
|
|
499
|
+
_TokenService.tokenService.clearTokens();
|
|
564
500
|
} catch (error) {
|
|
565
501
|
// Silently fail in test cleanup - this is expected behavior
|
|
566
|
-
//
|
|
502
|
+
// TokenService might not be initialized in some test scenarios
|
|
567
503
|
}
|
|
568
504
|
}
|
|
569
505
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_cache","require","_requestUtils","_asyncUtils","_errorUtils","_jwtDecode","TokenStore","accessToken","refreshToken","constructor","getInstance","instance","setTokens","getAccessToken","getRefreshToken","clearTokens","hasAccessToken","HttpService","requestMetrics","totalRequests","successfulRequests","failedRequests","cacheHits","cacheMisses","averageResponseTime","config","baseURL","tokenStore","logger","SimpleLogger","enableLogging","logLevel","cache","TTLCache","cacheTTL","registerCacheForCleanup","deduplicator","RequestDeduplicator","requestQueue","RequestQueue","maxConcurrentRequests","requestQueueSize","isFormData","data","FormData","constructorName","name","append","get","has","request","method","url","params","timeout","requestTimeout","signal","deduplicate","retry","enableRetry","maxRetries","cacheKey","generateCacheKey","cached","debug","requestFn","startTime","Date","now","fullUrl","buildURL","authHeader","getAuthHeader","controller","AbortController","timeoutId","setTimeout","abort","addEventListener","headers","Object","entries","forEach","key","value","toLowerCase","bodyValue","JSON","stringify","undefined","response","fetch","body","clearTimeout","ok","status","errorMessage","statusText","contentType","includes","errorData","json","message","parseError","warn","error","Error","responseData","unwrapResponse","SyntaxError","blob","text","duration","updateMetrics","onRequestEnd","onRequestError","String","handleHttpError","requestWithRetry","retryAsync","retryDelay","dedupeKey","finalRequest","result","enqueue","set","keys","length","dataStr","hash","sort","join","substring","base","startsWith","searchParams","URLSearchParams","queryString","toString","decoded","jwtDecode","currentTime","Math","floor","exp","sessionId","refreshUrl","AbortSignal","newToken","refreshError","Array","isArray","success","alpha","post","put","patch","delete","getBaseURL","clearCache","clear","clearCacheEntry","getCacheStats","cacheStats","getStats","total","size","hits","misses","hitRate","getMetrics","__resetTokensForTests","exports"],"sourceRoot":"../../../src","sources":["core/HttpService.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_cache","require","_requestUtils","_asyncUtils","_errorUtils","_TokenService","HttpService","requestMetrics","totalRequests","successfulRequests","failedRequests","cacheHits","cacheMisses","averageResponseTime","constructor","config","baseURL","tokenService","initialize","logger","SimpleLogger","enableLogging","logLevel","cache","TTLCache","cacheTTL","registerCacheForCleanup","deduplicator","RequestDeduplicator","requestQueue","RequestQueue","maxConcurrentRequests","requestQueueSize","isFormData","data","FormData","constructorName","name","append","get","has","request","method","url","params","timeout","requestTimeout","signal","deduplicate","retry","enableRetry","maxRetries","cacheKey","generateCacheKey","cached","debug","requestFn","startTime","Date","now","fullUrl","buildURL","authHeader","getAuthHeader","controller","AbortController","timeoutId","setTimeout","abort","addEventListener","headers","Object","entries","forEach","key","value","toLowerCase","bodyValue","JSON","stringify","undefined","response","fetch","body","clearTimeout","ok","status","clearTokens","errorMessage","statusText","contentType","includes","errorData","json","message","parseError","warn","error","Error","responseData","unwrapResponse","SyntaxError","blob","text","duration","updateMetrics","onRequestEnd","onRequestError","String","handleHttpError","requestWithRetry","retryAsync","retryDelay","dedupeKey","finalRequest","result","enqueue","set","keys","length","dataStr","hash","sort","join","substring","base","startsWith","searchParams","URLSearchParams","queryString","toString","Array","isArray","success","alpha","post","put","patch","delete","setTokens","accessToken","refreshToken","getAccessToken","hasAccessToken","getBaseURL","clearCache","clear","clearCacheEntry","getCacheStats","cacheStats","getStats","total","size","hits","misses","hitRate","getMetrics","__resetTokensForTests","exports"],"sourceRoot":"../../../src","sources":["core/HttpService.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,10 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.OxyServicesBase = void 0;
|
|
7
|
-
var _jwtDecode = require("jwt-decode");
|
|
8
7
|
var _errorUtils = require("../utils/errorUtils");
|
|
9
8
|
var _HttpService = require("./HttpService");
|
|
10
9
|
var _OxyServices = require("./OxyServices.errors");
|
|
10
|
+
var _TokenService = require("./services/TokenService");
|
|
11
11
|
/**
|
|
12
12
|
* OxyServices Base Class
|
|
13
13
|
*
|
|
@@ -119,18 +119,10 @@ class OxyServicesBase {
|
|
|
119
119
|
|
|
120
120
|
/**
|
|
121
121
|
* Get the current user ID from the access token
|
|
122
|
+
* Returns MongoDB ObjectId (never publicKey)
|
|
122
123
|
*/
|
|
123
124
|
getCurrentUserId() {
|
|
124
|
-
|
|
125
|
-
if (!accessToken) {
|
|
126
|
-
return null;
|
|
127
|
-
}
|
|
128
|
-
try {
|
|
129
|
-
const decoded = (0, _jwtDecode.jwtDecode)(accessToken);
|
|
130
|
-
return decoded.userId || decoded.id || null;
|
|
131
|
-
} catch (error) {
|
|
132
|
-
return null;
|
|
133
|
-
}
|
|
125
|
+
return _TokenService.tokenService.getUserIdFromToken();
|
|
134
126
|
}
|
|
135
127
|
|
|
136
128
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_errorUtils","require","_HttpService","_OxyServices","_TokenService","OxyServicesBase","constructor","args","config","Error","cloudURL","httpService","HttpService","__resetTokensForTests","makeRequest","method","url","data","options","request","undefined","params","getBaseURL","getClient","getMetrics","clearCache","clearCacheEntry","key","getCacheStats","getCloudURL","setTokens","accessToken","refreshToken","clearTokens","getCurrentUserId","tokenService","getUserIdFromToken","hasValidToken","hasAccessToken","getAccessToken","waitForAuth","timeoutMs","startTime","performance","now","maxTime","pollInterval","Promise","resolve","setTimeout","Math","min","withAuthRetry","operation","operationName","maxRetries","retryDelay","authTimeoutMs","attempt","authReady","OxyAuthenticationTimeoutError","OxyAuthenticationError","error","isLastAttempt","errorObj","isAuthError","response","status","code","message","includes","handleError","validate","res","cache","retry","valid","api","handleHttpError","trim","err","details","healthCheck","timeout","exports"],"sourceRoot":"../../../src","sources":["core/OxyServices.base.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.sessionService = void 0;
|
|
7
|
+
var _TokenService = require("./TokenService");
|
|
8
|
+
/**
|
|
9
|
+
* SessionService - Single Source of Truth for Session Management
|
|
10
|
+
*
|
|
11
|
+
* Handles all session operations: creation, validation, refresh, invalidation.
|
|
12
|
+
* Manages active session state and provides session data to other services.
|
|
13
|
+
*
|
|
14
|
+
* Architecture:
|
|
15
|
+
* - Single source of truth for session operations
|
|
16
|
+
* - Handles both online and offline sessions
|
|
17
|
+
* - Integrates with TokenService for token management
|
|
18
|
+
* - userId is always MongoDB ObjectId, never publicKey
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* SessionService - Singleton pattern for global session management
|
|
23
|
+
*/
|
|
24
|
+
class SessionService {
|
|
25
|
+
oxyServices = null;
|
|
26
|
+
activeSession = null;
|
|
27
|
+
sessions = [];
|
|
28
|
+
constructor() {}
|
|
29
|
+
static getInstance() {
|
|
30
|
+
if (!SessionService.instance) {
|
|
31
|
+
SessionService.instance = new SessionService();
|
|
32
|
+
}
|
|
33
|
+
return SessionService.instance;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Initialize SessionService with OxyServices instance
|
|
38
|
+
*/
|
|
39
|
+
initialize(oxyServices) {
|
|
40
|
+
this.oxyServices = oxyServices;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Get active session
|
|
45
|
+
*/
|
|
46
|
+
getActiveSession() {
|
|
47
|
+
return this.activeSession;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Get all sessions
|
|
52
|
+
*/
|
|
53
|
+
getAllSessions() {
|
|
54
|
+
return [...this.sessions];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Create a new session (sign in)
|
|
59
|
+
* @param publicKey - User's public key for authentication
|
|
60
|
+
* @returns User object and session data
|
|
61
|
+
*/
|
|
62
|
+
async createSession(publicKey) {
|
|
63
|
+
if (!this.oxyServices) {
|
|
64
|
+
throw new Error('SessionService not initialized with OxyServices');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// This will be implemented by delegating to existing sign-in logic
|
|
68
|
+
// For now, this is a placeholder that shows the interface
|
|
69
|
+
throw new Error('SessionService.createSession not yet implemented - use existing signIn flow');
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Refresh current session
|
|
74
|
+
*/
|
|
75
|
+
async refreshSession() {
|
|
76
|
+
if (!this.activeSession) {
|
|
77
|
+
throw new Error('No active session to refresh');
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Refresh token first
|
|
81
|
+
await _TokenService.tokenService.refreshTokenIfNeeded();
|
|
82
|
+
|
|
83
|
+
// Then refresh session data from server
|
|
84
|
+
// Implementation will be added
|
|
85
|
+
return this.activeSession;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Validate current session
|
|
90
|
+
*/
|
|
91
|
+
async validateSession() {
|
|
92
|
+
if (!this.activeSession) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Check if session expired
|
|
97
|
+
if (new Date(this.activeSession.expiresAt) < new Date()) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Check if token is valid
|
|
102
|
+
const token = _TokenService.tokenService.getAccessToken();
|
|
103
|
+
if (!token) {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Additional validation can be added here
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Invalidate current session (sign out)
|
|
113
|
+
*/
|
|
114
|
+
async invalidateSession() {
|
|
115
|
+
if (!this.activeSession || !this.oxyServices) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
try {
|
|
119
|
+
// Call API to invalidate session on server
|
|
120
|
+
await this.oxyServices.makeRequest('POST', `/api/session/${this.activeSession.sessionId}/logout`, undefined, {
|
|
121
|
+
cache: false
|
|
122
|
+
});
|
|
123
|
+
} catch (error) {
|
|
124
|
+
// Continue with local cleanup even if API call fails
|
|
125
|
+
console.warn('Failed to invalidate session on server:', error);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Clear tokens
|
|
129
|
+
_TokenService.tokenService.clearTokens();
|
|
130
|
+
|
|
131
|
+
// Clear active session
|
|
132
|
+
this.activeSession = null;
|
|
133
|
+
this.sessions = this.sessions.filter(s => s.sessionId !== this.activeSession?.sessionId);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Set active session (internal use)
|
|
138
|
+
*/
|
|
139
|
+
setActiveSession(session) {
|
|
140
|
+
this.activeSession = session;
|
|
141
|
+
|
|
142
|
+
// Update sessions list
|
|
143
|
+
const existingIndex = this.sessions.findIndex(s => s.sessionId === session.sessionId);
|
|
144
|
+
if (existingIndex >= 0) {
|
|
145
|
+
this.sessions[existingIndex] = session;
|
|
146
|
+
} else {
|
|
147
|
+
this.sessions.push(session);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Clear all sessions (logout all)
|
|
153
|
+
*/
|
|
154
|
+
clearAllSessions() {
|
|
155
|
+
this.activeSession = null;
|
|
156
|
+
this.sessions = [];
|
|
157
|
+
_TokenService.tokenService.clearTokens();
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Export singleton instance
|
|
162
|
+
const sessionService = exports.sessionService = SessionService.getInstance();
|
|
163
|
+
//# sourceMappingURL=SessionService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_TokenService","require","SessionService","oxyServices","activeSession","sessions","constructor","getInstance","instance","initialize","getActiveSession","getAllSessions","createSession","publicKey","Error","refreshSession","tokenService","refreshTokenIfNeeded","validateSession","Date","expiresAt","token","getAccessToken","invalidateSession","makeRequest","sessionId","undefined","cache","error","console","warn","clearTokens","filter","s","setActiveSession","session","existingIndex","findIndex","push","clearAllSessions","sessionService","exports"],"sourceRoot":"../../../../src","sources":["core/services/SessionService.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.tokenService = void 0;
|
|
7
|
+
var _jwtDecode = require("jwt-decode");
|
|
8
|
+
/**
|
|
9
|
+
* TokenService - Single Source of Truth for Token Management
|
|
10
|
+
*
|
|
11
|
+
* Handles all token storage, retrieval, refresh, and validation.
|
|
12
|
+
* Used by HttpService, SocketService, and other services that need tokens.
|
|
13
|
+
*
|
|
14
|
+
* Architecture:
|
|
15
|
+
* - Single storage location (no duplication)
|
|
16
|
+
* - Automatic token refresh when expiring soon
|
|
17
|
+
* - Type-safe token payload handling
|
|
18
|
+
* - userId is always MongoDB ObjectId, never publicKey
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* AccessTokenPayload - Matches the token payload structure from API
|
|
23
|
+
* userId is always MongoDB ObjectId (24 hex characters), never publicKey
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* TokenService - Singleton pattern for global token management
|
|
28
|
+
*/
|
|
29
|
+
class TokenService {
|
|
30
|
+
tokenStore = {
|
|
31
|
+
accessToken: null,
|
|
32
|
+
refreshToken: null
|
|
33
|
+
};
|
|
34
|
+
refreshPromise = null;
|
|
35
|
+
baseURL = null;
|
|
36
|
+
constructor() {}
|
|
37
|
+
static getInstance() {
|
|
38
|
+
if (!TokenService.instance) {
|
|
39
|
+
TokenService.instance = new TokenService();
|
|
40
|
+
}
|
|
41
|
+
return TokenService.instance;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Initialize TokenService with base URL for refresh requests
|
|
46
|
+
*/
|
|
47
|
+
initialize(baseURL) {
|
|
48
|
+
this.baseURL = baseURL;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Get current access token
|
|
53
|
+
*/
|
|
54
|
+
getAccessToken() {
|
|
55
|
+
return this.tokenStore.accessToken;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Get current refresh token
|
|
60
|
+
*/
|
|
61
|
+
getRefreshToken() {
|
|
62
|
+
return this.tokenStore.refreshToken;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Set tokens (called after login or token refresh)
|
|
67
|
+
*/
|
|
68
|
+
setTokens(accessToken, refreshToken = '') {
|
|
69
|
+
this.tokenStore.accessToken = accessToken;
|
|
70
|
+
this.tokenStore.refreshToken = refreshToken || this.tokenStore.refreshToken;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Clear all tokens (called on logout)
|
|
75
|
+
*/
|
|
76
|
+
clearTokens() {
|
|
77
|
+
this.tokenStore.accessToken = null;
|
|
78
|
+
this.tokenStore.refreshToken = null;
|
|
79
|
+
this.refreshPromise = null;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Check if access token exists
|
|
84
|
+
*/
|
|
85
|
+
hasAccessToken() {
|
|
86
|
+
return !!this.tokenStore.accessToken;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Check if token is expiring soon (within 60 seconds)
|
|
91
|
+
*/
|
|
92
|
+
isTokenExpiringSoon() {
|
|
93
|
+
const token = this.tokenStore.accessToken;
|
|
94
|
+
if (!token) return false;
|
|
95
|
+
try {
|
|
96
|
+
const decoded = (0, _jwtDecode.jwtDecode)(token);
|
|
97
|
+
if (!decoded.exp) return false;
|
|
98
|
+
const currentTime = Math.floor(Date.now() / 1000);
|
|
99
|
+
return decoded.exp - currentTime < 60; // Expiring within 60 seconds
|
|
100
|
+
} catch {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Get userId from current access token
|
|
107
|
+
* Returns MongoDB ObjectId (never publicKey)
|
|
108
|
+
*/
|
|
109
|
+
getUserIdFromToken() {
|
|
110
|
+
const token = this.tokenStore.accessToken;
|
|
111
|
+
if (!token) return null;
|
|
112
|
+
try {
|
|
113
|
+
const decoded = (0, _jwtDecode.jwtDecode)(token);
|
|
114
|
+
return decoded.userId || null;
|
|
115
|
+
} catch {
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Refresh access token if expiring soon
|
|
122
|
+
* Returns promise that resolves when token is refreshed (or already valid)
|
|
123
|
+
*/
|
|
124
|
+
async refreshTokenIfNeeded() {
|
|
125
|
+
// If already refreshing, wait for that promise
|
|
126
|
+
if (this.refreshPromise) {
|
|
127
|
+
return this.refreshPromise;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// If token not expiring soon, no refresh needed
|
|
131
|
+
if (!this.isTokenExpiringSoon()) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Start refresh
|
|
136
|
+
this.refreshPromise = this._performRefresh();
|
|
137
|
+
try {
|
|
138
|
+
await this.refreshPromise;
|
|
139
|
+
} finally {
|
|
140
|
+
this.refreshPromise = null;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Perform token refresh
|
|
146
|
+
*/
|
|
147
|
+
async _performRefresh() {
|
|
148
|
+
const token = this.tokenStore.accessToken;
|
|
149
|
+
if (!token) {
|
|
150
|
+
throw new Error('No access token to refresh');
|
|
151
|
+
}
|
|
152
|
+
try {
|
|
153
|
+
const decoded = (0, _jwtDecode.jwtDecode)(token);
|
|
154
|
+
if (!decoded.sessionId) {
|
|
155
|
+
throw new Error('Token missing sessionId');
|
|
156
|
+
}
|
|
157
|
+
if (!this.baseURL) {
|
|
158
|
+
throw new Error('TokenService not initialized with baseURL');
|
|
159
|
+
}
|
|
160
|
+
const refreshUrl = `${this.baseURL}/api/session/token/${decoded.sessionId}`;
|
|
161
|
+
const response = await fetch(refreshUrl, {
|
|
162
|
+
method: 'GET',
|
|
163
|
+
headers: {
|
|
164
|
+
'Accept': 'application/json'
|
|
165
|
+
},
|
|
166
|
+
signal: AbortSignal.timeout(5000)
|
|
167
|
+
});
|
|
168
|
+
if (!response.ok) {
|
|
169
|
+
throw new Error(`Token refresh failed: ${response.status}`);
|
|
170
|
+
}
|
|
171
|
+
const {
|
|
172
|
+
accessToken: newToken
|
|
173
|
+
} = await response.json();
|
|
174
|
+
if (!newToken) {
|
|
175
|
+
throw new Error('No access token in refresh response');
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// Validate new token has correct userId format (ObjectId)
|
|
179
|
+
const newDecoded = (0, _jwtDecode.jwtDecode)(newToken);
|
|
180
|
+
if (newDecoded.userId && !/^[0-9a-fA-F]{24}$/.test(newDecoded.userId)) {
|
|
181
|
+
throw new Error(`Invalid userId format in refreshed token: ${newDecoded.userId.substring(0, 20)}...`);
|
|
182
|
+
}
|
|
183
|
+
this.setTokens(newToken);
|
|
184
|
+
} catch (error) {
|
|
185
|
+
// Clear tokens on refresh failure (likely expired or invalid)
|
|
186
|
+
this.clearTokens();
|
|
187
|
+
throw error;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Get authorization header with automatic refresh
|
|
193
|
+
*/
|
|
194
|
+
async getAuthHeader() {
|
|
195
|
+
// Refresh if needed
|
|
196
|
+
await this.refreshTokenIfNeeded().catch(() => {
|
|
197
|
+
// Ignore refresh errors, will use current token or return null
|
|
198
|
+
});
|
|
199
|
+
const token = this.tokenStore.accessToken;
|
|
200
|
+
return token ? `Bearer ${token}` : null;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// Export singleton instance
|
|
205
|
+
const tokenService = exports.tokenService = TokenService.getInstance();
|
|
206
|
+
//# sourceMappingURL=TokenService.js.map
|