@oxyhq/services 5.2.8 → 5.2.9
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/index.js +60 -3
- package/lib/commonjs/core/index.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +54 -1
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/utils/deviceManager.js +173 -0
- package/lib/commonjs/utils/deviceManager.js.map +1 -0
- package/lib/module/core/index.js +60 -3
- package/lib/module/core/index.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +54 -1
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/utils/deviceManager.js +167 -0
- package/lib/module/utils/deviceManager.js.map +1 -0
- package/lib/typescript/core/index.d.ts +30 -1
- package/lib/typescript/core/index.d.ts.map +1 -1
- package/lib/typescript/ui/context/OxyContext.d.ts +3 -0
- package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/utils/deviceManager.d.ts +66 -0
- package/lib/typescript/utils/deviceManager.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/core/index.ts +62 -3
- package/src/ui/context/OxyContext.tsx +72 -1
- package/src/utils/deviceManager.ts +190 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,9 @@ export interface OxyContextState {
|
|
|
17
17
|
switchSession: (sessionId: string) => Promise<void>;
|
|
18
18
|
removeSession: (sessionId: string) => Promise<void>;
|
|
19
19
|
refreshSessions: () => Promise<void>;
|
|
20
|
+
getDeviceSessions: () => Promise<any[]>;
|
|
21
|
+
logoutAllDeviceSessions: () => Promise<void>;
|
|
22
|
+
updateDeviceName: (deviceName: string) => Promise<void>;
|
|
20
23
|
oxyServices: OxyServices;
|
|
21
24
|
bottomSheetRef?: React.RefObject<any>;
|
|
22
25
|
showBottomSheet?: (screenOrConfig?: string | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OxyContext.d.ts","sourceRoot":"","sources":["../../../../src/ui/context/OxyContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAA+D,SAAS,EAAW,MAAM,OAAO,CAAC;AAC/G,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAuB,mBAAmB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"OxyContext.d.ts","sourceRoot":"","sources":["../../../../src/ui/context/OxyContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAA+D,SAAS,EAAW,MAAM,OAAO,CAAC;AAC/G,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAuB,mBAAmB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAIvG,MAAM,WAAW,eAAe;IAE9B,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,WAAW,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAGrB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClF,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAG7E,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAGrC,iBAAiB,EAAE,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACxC,uBAAuB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAGxD,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAGtC,eAAe,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,KAAK,IAAI,CAAC;IACtG,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9B;AAGD,QAAA,MAAM,UAAU,uCAA8C,CAAC;AAG/D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;CACvC;AA6DD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAichE,CAAC;AAGF,eAAO,MAAM,MAAM,QAAO,eAMzB,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export interface DeviceFingerprint {
|
|
2
|
+
userAgent: string;
|
|
3
|
+
platform: string;
|
|
4
|
+
language?: string;
|
|
5
|
+
timezone?: string;
|
|
6
|
+
screen?: {
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
colorDepth: number;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export interface StoredDeviceInfo {
|
|
13
|
+
deviceId: string;
|
|
14
|
+
deviceName?: string;
|
|
15
|
+
fingerprint?: string;
|
|
16
|
+
createdAt: string;
|
|
17
|
+
lastUsed: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Client-side device management utility
|
|
21
|
+
* Handles persistent device identification across app sessions
|
|
22
|
+
*/
|
|
23
|
+
export declare class DeviceManager {
|
|
24
|
+
private static DEVICE_KEY;
|
|
25
|
+
/**
|
|
26
|
+
* Check if we're in React Native environment
|
|
27
|
+
*/
|
|
28
|
+
private static isReactNative;
|
|
29
|
+
/**
|
|
30
|
+
* Get appropriate storage for the platform
|
|
31
|
+
*/
|
|
32
|
+
private static getStorage;
|
|
33
|
+
/**
|
|
34
|
+
* Get or create device fingerprint for current device
|
|
35
|
+
*/
|
|
36
|
+
static getDeviceFingerprint(): DeviceFingerprint;
|
|
37
|
+
/**
|
|
38
|
+
* Get stored device info or create new one
|
|
39
|
+
*/
|
|
40
|
+
static getDeviceInfo(): Promise<StoredDeviceInfo>;
|
|
41
|
+
/**
|
|
42
|
+
* Create new device info and store it
|
|
43
|
+
*/
|
|
44
|
+
static createNewDeviceInfo(): Promise<StoredDeviceInfo>;
|
|
45
|
+
/**
|
|
46
|
+
* Save device info to storage
|
|
47
|
+
*/
|
|
48
|
+
static saveDeviceInfo(deviceInfo: StoredDeviceInfo): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Update device name
|
|
51
|
+
*/
|
|
52
|
+
static updateDeviceName(deviceName: string): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Clear stored device info (useful for testing or reset)
|
|
55
|
+
*/
|
|
56
|
+
static clearDeviceInfo(): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Generate a unique device ID
|
|
59
|
+
*/
|
|
60
|
+
private static generateDeviceId;
|
|
61
|
+
/**
|
|
62
|
+
* Get a user-friendly device name based on platform
|
|
63
|
+
*/
|
|
64
|
+
static getDefaultDeviceName(): string;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=deviceManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceManager.d.ts","sourceRoot":"","sources":["../../../src/utils/deviceManager.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,UAAU,CAAqB;IAE9C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAI5B;;OAEG;mBACkB,UAAU;IAoB/B;;OAEG;IACH,MAAM,CAAC,oBAAoB,IAAI,iBAAiB;IAoBhD;;OAEG;WACU,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAuBvD;;OAEG;WACU,mBAAmB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAY7D;;OAEG;WACU,cAAc,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IASxE;;OAEG;WACU,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhE;;OAEG;WACU,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAS7C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAY/B;;OAEG;IACH,MAAM,CAAC,oBAAoB,IAAI,MAAM;CAatC"}
|
package/package.json
CHANGED
package/src/core/index.ts
CHANGED
|
@@ -1030,15 +1030,22 @@ export class OxyServices {
|
|
|
1030
1030
|
* @param username - User's username or email
|
|
1031
1031
|
* @param password - User's password
|
|
1032
1032
|
* @param deviceName - Optional device name for session tracking
|
|
1033
|
+
* @param deviceFingerprint - Device fingerprint for enhanced security
|
|
1033
1034
|
* @returns Secure login response with session data
|
|
1034
1035
|
*/
|
|
1035
|
-
async secureLogin(username: string, password: string, deviceName?: string): Promise<SecureLoginResponse> {
|
|
1036
|
+
async secureLogin(username: string, password: string, deviceName?: string, deviceFingerprint?: any): Promise<SecureLoginResponse> {
|
|
1036
1037
|
try {
|
|
1037
|
-
const
|
|
1038
|
+
const payload: any = {
|
|
1038
1039
|
username,
|
|
1039
1040
|
password,
|
|
1040
1041
|
deviceName
|
|
1041
|
-
}
|
|
1042
|
+
};
|
|
1043
|
+
|
|
1044
|
+
if (deviceFingerprint) {
|
|
1045
|
+
payload.deviceFingerprint = deviceFingerprint;
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1048
|
+
const res = await this.client.post('/secure-session/login', payload);
|
|
1042
1049
|
return res.data;
|
|
1043
1050
|
} catch (error) {
|
|
1044
1051
|
throw this.handleError(error);
|
|
@@ -1139,6 +1146,58 @@ export class OxyServices {
|
|
|
1139
1146
|
}
|
|
1140
1147
|
}
|
|
1141
1148
|
|
|
1149
|
+
/**
|
|
1150
|
+
* Get all active sessions for a specific device
|
|
1151
|
+
* @param sessionId - Current session ID
|
|
1152
|
+
* @param deviceId - Optional device ID (uses current session's device if not provided)
|
|
1153
|
+
* @returns Array of device sessions
|
|
1154
|
+
*/
|
|
1155
|
+
async getDeviceSessions(sessionId: string, deviceId?: string): Promise<any[]> {
|
|
1156
|
+
try {
|
|
1157
|
+
const params = deviceId ? `?deviceId=${deviceId}` : '';
|
|
1158
|
+
const res = await this.client.get(`/secure-session/device/sessions/${sessionId}${params}`);
|
|
1159
|
+
return res.data.sessions;
|
|
1160
|
+
} catch (error) {
|
|
1161
|
+
throw this.handleError(error);
|
|
1162
|
+
}
|
|
1163
|
+
}
|
|
1164
|
+
|
|
1165
|
+
/**
|
|
1166
|
+
* Logout all sessions on a specific device
|
|
1167
|
+
* @param sessionId - Current session ID
|
|
1168
|
+
* @param deviceId - Optional device ID (uses current session's device if not provided)
|
|
1169
|
+
* @param excludeCurrent - Whether to exclude the current session from logout
|
|
1170
|
+
* @returns Success status
|
|
1171
|
+
*/
|
|
1172
|
+
async logoutAllDeviceSessions(sessionId: string, deviceId?: string, excludeCurrent: boolean = true): Promise<{ message: string; sessionsTerminated: number }> {
|
|
1173
|
+
try {
|
|
1174
|
+
const res = await this.client.post(`/secure-session/device/logout-all/${sessionId}`, {
|
|
1175
|
+
deviceId,
|
|
1176
|
+
excludeCurrent
|
|
1177
|
+
});
|
|
1178
|
+
return res.data;
|
|
1179
|
+
} catch (error) {
|
|
1180
|
+
throw this.handleError(error);
|
|
1181
|
+
}
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
/**
|
|
1185
|
+
* Update device name for all sessions on a device
|
|
1186
|
+
* @param sessionId - Current session ID
|
|
1187
|
+
* @param deviceName - New device name
|
|
1188
|
+
* @returns Success status
|
|
1189
|
+
*/
|
|
1190
|
+
async updateDeviceName(sessionId: string, deviceName: string): Promise<{ message: string; deviceName: string }> {
|
|
1191
|
+
try {
|
|
1192
|
+
const res = await this.client.put(`/secure-session/device/name/${sessionId}`, {
|
|
1193
|
+
deviceName
|
|
1194
|
+
});
|
|
1195
|
+
return res.data;
|
|
1196
|
+
} catch (error) {
|
|
1197
|
+
throw this.handleError(error);
|
|
1198
|
+
}
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1142
1201
|
/**
|
|
1143
1202
|
* Utility method to help implement authentication middleware in Express.js applications
|
|
1144
1203
|
* This creates a function that can be used as Express middleware to validate tokens
|
|
@@ -2,6 +2,7 @@ import React, { createContext, useContext, useState, useEffect, useCallback, Rea
|
|
|
2
2
|
import { OxyServices } from '../../core';
|
|
3
3
|
import { User } from '../../models/interfaces';
|
|
4
4
|
import { SecureLoginResponse, SecureClientSession, MinimalUserData } from '../../models/secureSession';
|
|
5
|
+
import { DeviceManager } from '../../utils/deviceManager';
|
|
5
6
|
|
|
6
7
|
// Define the context shape
|
|
7
8
|
export interface OxyContextState {
|
|
@@ -25,6 +26,11 @@ export interface OxyContextState {
|
|
|
25
26
|
removeSession: (sessionId: string) => Promise<void>;
|
|
26
27
|
refreshSessions: () => Promise<void>;
|
|
27
28
|
|
|
29
|
+
// Device management methods
|
|
30
|
+
getDeviceSessions: () => Promise<any[]>;
|
|
31
|
+
logoutAllDeviceSessions: () => Promise<void>;
|
|
32
|
+
updateDeviceName: (deviceName: string) => Promise<void>;
|
|
33
|
+
|
|
28
34
|
// Access to services
|
|
29
35
|
oxyServices: OxyServices;
|
|
30
36
|
bottomSheetRef?: React.RefObject<any>;
|
|
@@ -295,7 +301,21 @@ export const OxyContextProvider: React.FC<OxyContextProviderProps> = ({
|
|
|
295
301
|
setError(null);
|
|
296
302
|
|
|
297
303
|
try {
|
|
298
|
-
|
|
304
|
+
// Get device fingerprint for enhanced device identification
|
|
305
|
+
const deviceFingerprint = DeviceManager.getDeviceFingerprint();
|
|
306
|
+
|
|
307
|
+
// Get or generate persistent device info
|
|
308
|
+
const deviceInfo = await DeviceManager.getDeviceInfo();
|
|
309
|
+
|
|
310
|
+
console.log('SecureAuth - Using device fingerprint:', deviceFingerprint);
|
|
311
|
+
console.log('SecureAuth - Using device ID:', deviceInfo.deviceId);
|
|
312
|
+
|
|
313
|
+
const response: SecureLoginResponse = await oxyServices.secureLogin(
|
|
314
|
+
username,
|
|
315
|
+
password,
|
|
316
|
+
deviceName || deviceInfo.deviceName || DeviceManager.getDefaultDeviceName(),
|
|
317
|
+
deviceFingerprint
|
|
318
|
+
);
|
|
299
319
|
|
|
300
320
|
// Create client session object
|
|
301
321
|
const clientSession: SecureClientSession = {
|
|
@@ -432,6 +452,54 @@ export const OxyContextProvider: React.FC<OxyContextProviderProps> = ({
|
|
|
432
452
|
}
|
|
433
453
|
};
|
|
434
454
|
|
|
455
|
+
// Device management methods
|
|
456
|
+
const getDeviceSessions = async (): Promise<any[]> => {
|
|
457
|
+
if (!activeSessionId) throw new Error('No active session');
|
|
458
|
+
|
|
459
|
+
try {
|
|
460
|
+
return await oxyServices.getDeviceSessions(activeSessionId);
|
|
461
|
+
} catch (error) {
|
|
462
|
+
console.error('Get device sessions error:', error);
|
|
463
|
+
throw error;
|
|
464
|
+
}
|
|
465
|
+
};
|
|
466
|
+
|
|
467
|
+
const logoutAllDeviceSessions = async (): Promise<void> => {
|
|
468
|
+
if (!activeSessionId) throw new Error('No active session');
|
|
469
|
+
|
|
470
|
+
try {
|
|
471
|
+
await oxyServices.logoutAllDeviceSessions(activeSessionId);
|
|
472
|
+
|
|
473
|
+
// Clear all local sessions since we logged out from all devices
|
|
474
|
+
setSessions([]);
|
|
475
|
+
setActiveSessionId(null);
|
|
476
|
+
setUser(null);
|
|
477
|
+
setMinimalUser(null);
|
|
478
|
+
await clearAllStorage();
|
|
479
|
+
|
|
480
|
+
if (onAuthStateChange) {
|
|
481
|
+
onAuthStateChange(null);
|
|
482
|
+
}
|
|
483
|
+
} catch (error) {
|
|
484
|
+
console.error('Logout all device sessions error:', error);
|
|
485
|
+
throw error;
|
|
486
|
+
}
|
|
487
|
+
};
|
|
488
|
+
|
|
489
|
+
const updateDeviceName = async (deviceName: string): Promise<void> => {
|
|
490
|
+
if (!activeSessionId) throw new Error('No active session');
|
|
491
|
+
|
|
492
|
+
try {
|
|
493
|
+
await oxyServices.updateDeviceName(activeSessionId, deviceName);
|
|
494
|
+
|
|
495
|
+
// Update local device info
|
|
496
|
+
await DeviceManager.updateDeviceName(deviceName);
|
|
497
|
+
} catch (error) {
|
|
498
|
+
console.error('Update device name error:', error);
|
|
499
|
+
throw error;
|
|
500
|
+
}
|
|
501
|
+
};
|
|
502
|
+
|
|
435
503
|
// Bottom sheet control methods
|
|
436
504
|
const showBottomSheet = useCallback((screenOrConfig?: string | { screen: string; props?: Record<string, any> }) => {
|
|
437
505
|
if (bottomSheetRef?.current) {
|
|
@@ -478,6 +546,9 @@ export const OxyContextProvider: React.FC<OxyContextProviderProps> = ({
|
|
|
478
546
|
switchSession,
|
|
479
547
|
removeSession,
|
|
480
548
|
refreshSessions,
|
|
549
|
+
getDeviceSessions,
|
|
550
|
+
logoutAllDeviceSessions,
|
|
551
|
+
updateDeviceName,
|
|
481
552
|
oxyServices,
|
|
482
553
|
bottomSheetRef,
|
|
483
554
|
showBottomSheet,
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
export interface DeviceFingerprint {
|
|
2
|
+
userAgent: string;
|
|
3
|
+
platform: string;
|
|
4
|
+
language?: string;
|
|
5
|
+
timezone?: string;
|
|
6
|
+
screen?: {
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
colorDepth: number;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface StoredDeviceInfo {
|
|
14
|
+
deviceId: string;
|
|
15
|
+
deviceName?: string;
|
|
16
|
+
fingerprint?: string;
|
|
17
|
+
createdAt: string;
|
|
18
|
+
lastUsed: string;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Client-side device management utility
|
|
23
|
+
* Handles persistent device identification across app sessions
|
|
24
|
+
*/
|
|
25
|
+
export class DeviceManager {
|
|
26
|
+
private static DEVICE_KEY = 'oxy_device_info';
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Check if we're in React Native environment
|
|
30
|
+
*/
|
|
31
|
+
private static isReactNative(): boolean {
|
|
32
|
+
return typeof navigator !== 'undefined' && navigator.product === 'ReactNative';
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Get appropriate storage for the platform
|
|
37
|
+
*/
|
|
38
|
+
private static async getStorage() {
|
|
39
|
+
if (this.isReactNative()) {
|
|
40
|
+
// Try to import AsyncStorage for React Native
|
|
41
|
+
try {
|
|
42
|
+
const AsyncStorage = await import('@react-native-async-storage/async-storage');
|
|
43
|
+
return AsyncStorage.default;
|
|
44
|
+
} catch (error) {
|
|
45
|
+
console.error('AsyncStorage not available in React Native:', error);
|
|
46
|
+
throw new Error('AsyncStorage is required in React Native environment');
|
|
47
|
+
}
|
|
48
|
+
} else {
|
|
49
|
+
// Use localStorage for web
|
|
50
|
+
return {
|
|
51
|
+
getItem: async (key: string) => localStorage.getItem(key),
|
|
52
|
+
setItem: async (key: string, value: string) => localStorage.setItem(key, value),
|
|
53
|
+
removeItem: async (key: string) => localStorage.removeItem(key)
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Get or create device fingerprint for current device
|
|
60
|
+
*/
|
|
61
|
+
static getDeviceFingerprint(): DeviceFingerprint {
|
|
62
|
+
const fingerprint: DeviceFingerprint = {
|
|
63
|
+
userAgent: typeof navigator !== 'undefined' ? navigator.userAgent : 'unknown',
|
|
64
|
+
platform: typeof navigator !== 'undefined' ? navigator.platform : 'unknown',
|
|
65
|
+
language: typeof navigator !== 'undefined' ? navigator.language : undefined,
|
|
66
|
+
timezone: typeof Intl !== 'undefined' ? Intl.DateTimeFormat().resolvedOptions().timeZone : undefined,
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
// Add screen info if available
|
|
70
|
+
if (typeof screen !== 'undefined') {
|
|
71
|
+
fingerprint.screen = {
|
|
72
|
+
width: screen.width,
|
|
73
|
+
height: screen.height,
|
|
74
|
+
colorDepth: screen.colorDepth
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return fingerprint;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Get stored device info or create new one
|
|
83
|
+
*/
|
|
84
|
+
static async getDeviceInfo(): Promise<StoredDeviceInfo> {
|
|
85
|
+
try {
|
|
86
|
+
const storage = await this.getStorage();
|
|
87
|
+
const stored = await storage.getItem(this.DEVICE_KEY);
|
|
88
|
+
|
|
89
|
+
if (stored) {
|
|
90
|
+
const deviceInfo: StoredDeviceInfo = JSON.parse(stored);
|
|
91
|
+
|
|
92
|
+
// Update last used timestamp
|
|
93
|
+
deviceInfo.lastUsed = new Date().toISOString();
|
|
94
|
+
await this.saveDeviceInfo(deviceInfo);
|
|
95
|
+
|
|
96
|
+
return deviceInfo;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Create new device info
|
|
100
|
+
return await this.createNewDeviceInfo();
|
|
101
|
+
} catch (error) {
|
|
102
|
+
console.error('Error getting device info:', error);
|
|
103
|
+
return await this.createNewDeviceInfo();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Create new device info and store it
|
|
109
|
+
*/
|
|
110
|
+
static async createNewDeviceInfo(): Promise<StoredDeviceInfo> {
|
|
111
|
+
const deviceInfo: StoredDeviceInfo = {
|
|
112
|
+
deviceId: this.generateDeviceId(),
|
|
113
|
+
fingerprint: JSON.stringify(this.getDeviceFingerprint()),
|
|
114
|
+
createdAt: new Date().toISOString(),
|
|
115
|
+
lastUsed: new Date().toISOString()
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
await this.saveDeviceInfo(deviceInfo);
|
|
119
|
+
return deviceInfo;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Save device info to storage
|
|
124
|
+
*/
|
|
125
|
+
static async saveDeviceInfo(deviceInfo: StoredDeviceInfo): Promise<void> {
|
|
126
|
+
try {
|
|
127
|
+
const storage = await this.getStorage();
|
|
128
|
+
await storage.setItem(this.DEVICE_KEY, JSON.stringify(deviceInfo));
|
|
129
|
+
} catch (error) {
|
|
130
|
+
console.error('Error saving device info:', error);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Update device name
|
|
136
|
+
*/
|
|
137
|
+
static async updateDeviceName(deviceName: string): Promise<void> {
|
|
138
|
+
try {
|
|
139
|
+
const deviceInfo = await this.getDeviceInfo();
|
|
140
|
+
deviceInfo.deviceName = deviceName;
|
|
141
|
+
await this.saveDeviceInfo(deviceInfo);
|
|
142
|
+
} catch (error) {
|
|
143
|
+
console.error('Error updating device name:', error);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Clear stored device info (useful for testing or reset)
|
|
149
|
+
*/
|
|
150
|
+
static async clearDeviceInfo(): Promise<void> {
|
|
151
|
+
try {
|
|
152
|
+
const storage = await this.getStorage();
|
|
153
|
+
await storage.removeItem(this.DEVICE_KEY);
|
|
154
|
+
} catch (error) {
|
|
155
|
+
console.error('Error clearing device info:', error);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Generate a unique device ID
|
|
161
|
+
*/
|
|
162
|
+
private static generateDeviceId(): string {
|
|
163
|
+
// Use crypto.getRandomValues if available, otherwise fallback to Math.random
|
|
164
|
+
if (typeof crypto !== 'undefined' && crypto.getRandomValues) {
|
|
165
|
+
const array = new Uint8Array(32);
|
|
166
|
+
crypto.getRandomValues(array);
|
|
167
|
+
return Array.from(array, byte => byte.toString(16).padStart(2, '0')).join('');
|
|
168
|
+
} else {
|
|
169
|
+
// Fallback for environments without crypto.getRandomValues
|
|
170
|
+
return 'device_' + Date.now().toString(36) + Math.random().toString(36).substr(2);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Get a user-friendly device name based on platform
|
|
176
|
+
*/
|
|
177
|
+
static getDefaultDeviceName(): string {
|
|
178
|
+
const fingerprint = this.getDeviceFingerprint();
|
|
179
|
+
const platform = fingerprint.platform.toLowerCase();
|
|
180
|
+
|
|
181
|
+
if (platform.includes('win')) return 'Windows Computer';
|
|
182
|
+
if (platform.includes('mac')) return 'Mac Computer';
|
|
183
|
+
if (platform.includes('linux')) return 'Linux Computer';
|
|
184
|
+
if (platform.includes('iphone')) return 'iPhone';
|
|
185
|
+
if (platform.includes('ipad')) return 'iPad';
|
|
186
|
+
if (platform.includes('android')) return 'Android Device';
|
|
187
|
+
|
|
188
|
+
return 'Unknown Device';
|
|
189
|
+
}
|
|
190
|
+
}
|