react-native-authsignal 1.1.10 → 1.2.2
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/README.md +1 -2
- package/android/build.gradle +1 -1
- package/android/src/main/AndroidManifest.xml +1 -2
- package/android/src/main/java/com/authsignal/react/AuthsignalDeviceModule.kt +153 -0
- package/android/src/main/java/com/authsignal/react/AuthsignalPackage.kt +1 -0
- package/ios/Authsignal.xcodeproj/project.pbxproj +4 -0
- package/ios/AuthsignalDeviceModule.m +30 -0
- package/ios/AuthsignalDeviceModule.swift +157 -0
- package/lib/commonjs/device.js +117 -0
- package/lib/commonjs/device.js.map +1 -0
- package/lib/commonjs/index.js +7 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/device.js +110 -0
- package/lib/module/device.js.map +1 -0
- package/lib/module/index.js +7 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/device.d.ts +28 -0
- package/lib/typescript/device.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +2 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +13 -0
- package/lib/typescript/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/react-native-authsignal.podspec +1 -1
- package/src/device.ts +149 -0
- package/src/index.tsx +3 -0
- package/src/types.ts +15 -0
- package/yarn.lock +926 -853
package/lib/module/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import { AuthsignalPasskey } from './passkey';
|
|
|
6
6
|
import { AuthsignalPush } from './push';
|
|
7
7
|
import { AuthsignalSms } from './sms';
|
|
8
8
|
import { AuthsignalTotp } from './totp';
|
|
9
|
+
import { AuthsignalDevice } from './device';
|
|
9
10
|
export * from './types';
|
|
10
11
|
export { ErrorCode } from './error';
|
|
11
12
|
const AuthsignalModule = NativeModules.AuthsignalModule ? NativeModules.AuthsignalModule : new Proxy({}, {
|
|
@@ -26,6 +27,7 @@ export class Authsignal {
|
|
|
26
27
|
_defineProperty(this, "email", void 0);
|
|
27
28
|
_defineProperty(this, "passkey", void 0);
|
|
28
29
|
_defineProperty(this, "push", void 0);
|
|
30
|
+
_defineProperty(this, "device", void 0);
|
|
29
31
|
_defineProperty(this, "sms", void 0);
|
|
30
32
|
_defineProperty(this, "totp", void 0);
|
|
31
33
|
this.tenantID = tenantID;
|
|
@@ -46,6 +48,11 @@ export class Authsignal {
|
|
|
46
48
|
baseURL,
|
|
47
49
|
enableLogging
|
|
48
50
|
});
|
|
51
|
+
this.device = new AuthsignalDevice({
|
|
52
|
+
tenantID,
|
|
53
|
+
baseURL,
|
|
54
|
+
enableLogging
|
|
55
|
+
});
|
|
49
56
|
this.sms = new AuthsignalSms({
|
|
50
57
|
tenantID,
|
|
51
58
|
baseURL,
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","Platform","LINKING_ERROR","AuthsignalEmail","AuthsignalPasskey","AuthsignalPush","AuthsignalSms","AuthsignalTotp","ErrorCode","AuthsignalModule","Proxy","get","Error","Authsignal","constructor","tenantID","baseURL","enableLogging","__DEV__","email","passkey","push","sms","totp","setToken","token","launch","url","OS","Promise","resolve","reject","callback","error"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AACtD,SAASC,aAAa,QAAQ,SAAS;AACvC,SAASC,eAAe,QAAQ,SAAS;AACzC,SAASC,iBAAiB,QAAQ,WAAW;AAC7C,SAASC,cAAc,QAAQ,QAAQ;AACvC,SAASC,aAAa,QAAQ,OAAO;AACrC,SAASC,cAAc,QAAQ,QAAQ;
|
|
1
|
+
{"version":3,"names":["NativeModules","Platform","LINKING_ERROR","AuthsignalEmail","AuthsignalPasskey","AuthsignalPush","AuthsignalSms","AuthsignalTotp","AuthsignalDevice","ErrorCode","AuthsignalModule","Proxy","get","Error","Authsignal","constructor","tenantID","baseURL","enableLogging","__DEV__","email","passkey","push","device","sms","totp","setToken","token","launch","url","OS","Promise","resolve","reject","callback","error"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AACtD,SAASC,aAAa,QAAQ,SAAS;AACvC,SAASC,eAAe,QAAQ,SAAS;AACzC,SAASC,iBAAiB,QAAQ,WAAW;AAC7C,SAASC,cAAc,QAAQ,QAAQ;AACvC,SAASC,aAAa,QAAQ,OAAO;AACrC,SAASC,cAAc,QAAQ,QAAQ;AACvC,SAASC,gBAAgB,QAAQ,UAAU;AAE3C,cAAc,SAAS;AACvB,SAASC,SAAS,QAAQ,SAAS;AAEnC,MAAMC,gBAAgB,GAAGV,aAAa,CAACU,gBAAgB,GACnDV,aAAa,CAACU,gBAAgB,GAC9B,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAG,GAAG;IACJ,MAAM,IAAIC,KAAK,CAACX,aAAa,CAAC;EAChC;AACF,CAAC,CACF;AAQL,OAAO,MAAMY,UAAU,CAAC;EAYtBC,WAAW,OAIS;IAAA,IAJR;MACVC,QAAQ;MACRC,OAAO,GAAG,+BAA+B;MACzCC,aAAa,GAAGC;IACD,CAAC;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAChB,IAAI,CAACH,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,aAAa,GAAGA,aAAa;IAElC,IAAI,CAACE,KAAK,GAAG,IAAIjB,eAAe,CAAC;MAAEa,QAAQ;MAAEC,OAAO;MAAEC;IAAc,CAAC,CAAC;IACtE,IAAI,CAACG,OAAO,GAAG,IAAIjB,iBAAiB,CAAC;MAAEY,QAAQ;MAAEC,OAAO;MAAEC;IAAc,CAAC,CAAC;IAC1E,IAAI,CAACI,IAAI,GAAG,IAAIjB,cAAc,CAAC;MAAEW,QAAQ;MAAEC,OAAO;MAAEC;IAAc,CAAC,CAAC;IACpE,IAAI,CAACK,MAAM,GAAG,IAAIf,gBAAgB,CAAC;MAAEQ,QAAQ;MAAEC,OAAO;MAAEC;IAAc,CAAC,CAAC;IACxE,IAAI,CAACM,GAAG,GAAG,IAAIlB,aAAa,CAAC;MAAEU,QAAQ;MAAEC,OAAO;MAAEC;IAAc,CAAC,CAAC;IAClE,IAAI,CAACO,IAAI,GAAG,IAAIlB,cAAc,CAAC;MAAES,QAAQ;MAAEC,OAAO;MAAEC;IAAc,CAAC,CAAC;EACtE;EAEA,MAAMQ,QAAQ,CAACC,KAAa,EAAiB;IAC3C,MAAMjB,gBAAgB,CAACgB,QAAQ,CAACC,KAAK,CAAC;EACxC;EAEA,MAAMC,MAAM,CAACC,GAAW,EAA0B;IAChD,OAAO,MAAMD,MAAM,CAACC,GAAG,CAAC;EAC1B;AACF;AAEA,OAAO,SAASD,MAAM,CAACC,GAAW,EAA0B;EAC1D,IAAI5B,QAAQ,CAAC6B,EAAE,KAAK,KAAK,EAAE;IACzB,OAAOpB,gBAAgB,CAACkB,MAAM,CAACC,GAAG,CAAC;EACrC,CAAC,MAAM;IACL,OAAO,IAAIE,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtC,MAAMC,QAAQ,GAAG,CAACC,KAAU,EAAER,KAAa,KAAK;QAC9C,IAAIA,KAAK,EAAE;UACTK,OAAO,CAACL,KAAK,CAAC;QAChB,CAAC,MAAM,IAAIQ,KAAK,EAAE;UAChB,IAAIA,KAAK,CAACA,KAAK,KAAK,gBAAgB,EAAE;YACpCH,OAAO,CAAC,IAAI,CAAC;UACf,CAAC,MAAM;YACLC,MAAM,CAACE,KAAK,CAAC;UACf;QACF,CAAC,MAAM;UACLF,MAAM,CAAC,kBAAkB,CAAC;QAC5B;MACF,CAAC;MAEDvB,gBAAgB,CAACkB,MAAM,CAACC,GAAG,EAAEK,QAAQ,CAAC;IACxC,CAAC,CAAC;EACJ;AACF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { AuthsignalResponse, DeviceChallenge, DeviceCredential } from './types';
|
|
2
|
+
interface ConstructorArgs {
|
|
3
|
+
tenantID: string;
|
|
4
|
+
baseURL: string;
|
|
5
|
+
enableLogging: boolean;
|
|
6
|
+
}
|
|
7
|
+
interface AddCredentialInput {
|
|
8
|
+
token?: string;
|
|
9
|
+
}
|
|
10
|
+
interface UpdateChallengeInput {
|
|
11
|
+
challengeId: string;
|
|
12
|
+
approved: boolean;
|
|
13
|
+
verificationCode?: string | null;
|
|
14
|
+
}
|
|
15
|
+
export declare class AuthsignalDevice {
|
|
16
|
+
tenantID: string;
|
|
17
|
+
baseURL: string;
|
|
18
|
+
enableLogging: boolean;
|
|
19
|
+
constructor({ tenantID, baseURL, enableLogging }: ConstructorArgs);
|
|
20
|
+
getCredential(): Promise<AuthsignalResponse<DeviceCredential>>;
|
|
21
|
+
addCredential({ token }?: AddCredentialInput): Promise<AuthsignalResponse<boolean>>;
|
|
22
|
+
removeCredential(): Promise<AuthsignalResponse<boolean>>;
|
|
23
|
+
getChallenge(): Promise<AuthsignalResponse<DeviceChallenge | undefined>>;
|
|
24
|
+
updateChallenge({ challengeId, approved, verificationCode, }: UpdateChallengeInput): Promise<AuthsignalResponse<boolean>>;
|
|
25
|
+
private ensureModuleIsInitialized;
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=device.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/device.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;CACxB;AAeD,UAAU,kBAAkB;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,oBAAoB;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,qBAAa,gBAAgB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;gBAEX,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,eAAe;IAM3D,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAgB9D,aAAa,CAAC,EAAE,KAAK,EAAE,GAAE,kBAAuB,GAAG,OAAO,CAC9D,kBAAkB,CAAC,OAAO,CAAC,CAC5B;IAgBK,gBAAgB,IAAI,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAexD,YAAY,IAAI,OAAO,CAC3B,kBAAkB,CAAC,eAAe,GAAG,SAAS,CAAC,CAChD;IAgBK,eAAe,CAAC,EACpB,WAAW,EACX,QAAQ,EACR,gBAAuB,GACxB,EAAE,oBAAoB,GAAG,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAoBhD,yBAAyB;CASxC"}
|
|
@@ -3,6 +3,7 @@ import { AuthsignalPasskey } from './passkey';
|
|
|
3
3
|
import { AuthsignalPush } from './push';
|
|
4
4
|
import { AuthsignalSms } from './sms';
|
|
5
5
|
import { AuthsignalTotp } from './totp';
|
|
6
|
+
import { AuthsignalDevice } from './device';
|
|
6
7
|
export * from './types';
|
|
7
8
|
export { ErrorCode } from './error';
|
|
8
9
|
interface ConstructorArgs {
|
|
@@ -17,6 +18,7 @@ export declare class Authsignal {
|
|
|
17
18
|
email: AuthsignalEmail;
|
|
18
19
|
passkey: AuthsignalPasskey;
|
|
19
20
|
push: AuthsignalPush;
|
|
21
|
+
device: AuthsignalDevice;
|
|
20
22
|
sms: AuthsignalSms;
|
|
21
23
|
totp: AuthsignalTotp;
|
|
22
24
|
constructor({ tenantID, baseURL, enableLogging, }: ConstructorArgs);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAapC,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,qBAAa,UAAU;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IAEvB,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,GAAG,EAAE,aAAa,CAAC;IACnB,IAAI,EAAE,cAAc,CAAC;gBAET,EACV,QAAQ,EACR,OAAyC,EACzC,aAAuB,GACxB,EAAE,eAAe;IAaZ,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAGlD;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsB1D"}
|
|
@@ -51,4 +51,17 @@ export interface PushChallenge {
|
|
|
51
51
|
deviceId?: string;
|
|
52
52
|
ipAddress?: string;
|
|
53
53
|
}
|
|
54
|
+
export interface DeviceCredential {
|
|
55
|
+
credentialId: string;
|
|
56
|
+
createdAt: string;
|
|
57
|
+
lastAuthenticatedAt?: string;
|
|
58
|
+
}
|
|
59
|
+
export interface DeviceChallenge {
|
|
60
|
+
challengeId: string;
|
|
61
|
+
actionCode?: string;
|
|
62
|
+
idempotencyKey?: string;
|
|
63
|
+
userAgent?: string;
|
|
64
|
+
deviceId?: string;
|
|
65
|
+
ipAddress?: string;
|
|
66
|
+
}
|
|
54
67
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@ Pod::Spec.new do |s|
|
|
|
17
17
|
s.source_files = "ios/**/*.{h,m,mm,swift}"
|
|
18
18
|
|
|
19
19
|
s.dependency "React-Core"
|
|
20
|
-
s.dependency 'Authsignal', '1.
|
|
20
|
+
s.dependency 'Authsignal', '1.1.3'
|
|
21
21
|
|
|
22
22
|
# Don't install the dependencies when we run `pod install` in the old architecture.
|
|
23
23
|
if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
|
package/src/device.ts
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { NativeModules } from 'react-native';
|
|
2
|
+
import { handleErrorCodes, LINKING_ERROR } from './error';
|
|
3
|
+
import type {
|
|
4
|
+
AuthsignalResponse,
|
|
5
|
+
DeviceChallenge,
|
|
6
|
+
DeviceCredential,
|
|
7
|
+
} from './types';
|
|
8
|
+
|
|
9
|
+
interface ConstructorArgs {
|
|
10
|
+
tenantID: string;
|
|
11
|
+
baseURL: string;
|
|
12
|
+
enableLogging: boolean;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
let initialized = false;
|
|
16
|
+
|
|
17
|
+
const AuthsignalDeviceModule = NativeModules.AuthsignalDeviceModule
|
|
18
|
+
? NativeModules.AuthsignalDeviceModule
|
|
19
|
+
: new Proxy(
|
|
20
|
+
{},
|
|
21
|
+
{
|
|
22
|
+
get() {
|
|
23
|
+
throw new Error(LINKING_ERROR);
|
|
24
|
+
},
|
|
25
|
+
}
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
interface AddCredentialInput {
|
|
29
|
+
token?: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
interface UpdateChallengeInput {
|
|
33
|
+
challengeId: string;
|
|
34
|
+
approved: boolean;
|
|
35
|
+
verificationCode?: string | null;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export class AuthsignalDevice {
|
|
39
|
+
tenantID: string;
|
|
40
|
+
baseURL: string;
|
|
41
|
+
enableLogging: boolean;
|
|
42
|
+
|
|
43
|
+
constructor({ tenantID, baseURL, enableLogging }: ConstructorArgs) {
|
|
44
|
+
this.tenantID = tenantID;
|
|
45
|
+
this.baseURL = baseURL;
|
|
46
|
+
this.enableLogging = enableLogging;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async getCredential(): Promise<AuthsignalResponse<DeviceCredential>> {
|
|
50
|
+
await this.ensureModuleIsInitialized();
|
|
51
|
+
|
|
52
|
+
try {
|
|
53
|
+
const data = await AuthsignalDeviceModule.getCredential();
|
|
54
|
+
|
|
55
|
+
return { data };
|
|
56
|
+
} catch (ex) {
|
|
57
|
+
if (this.enableLogging) {
|
|
58
|
+
console.log(ex);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return handleErrorCodes(ex);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
async addCredential({ token }: AddCredentialInput = {}): Promise<
|
|
66
|
+
AuthsignalResponse<boolean>
|
|
67
|
+
> {
|
|
68
|
+
await this.ensureModuleIsInitialized();
|
|
69
|
+
|
|
70
|
+
try {
|
|
71
|
+
const data = await AuthsignalDeviceModule.addCredential(token);
|
|
72
|
+
|
|
73
|
+
return { data };
|
|
74
|
+
} catch (ex) {
|
|
75
|
+
if (this.enableLogging) {
|
|
76
|
+
console.log(ex);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return handleErrorCodes(ex);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
async removeCredential(): Promise<AuthsignalResponse<boolean>> {
|
|
84
|
+
await this.ensureModuleIsInitialized();
|
|
85
|
+
|
|
86
|
+
try {
|
|
87
|
+
const data = await AuthsignalDeviceModule.removeCredential();
|
|
88
|
+
return { data };
|
|
89
|
+
} catch (ex) {
|
|
90
|
+
if (this.enableLogging) {
|
|
91
|
+
console.log(ex);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return handleErrorCodes(ex);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
async getChallenge(): Promise<
|
|
99
|
+
AuthsignalResponse<DeviceChallenge | undefined>
|
|
100
|
+
> {
|
|
101
|
+
await this.ensureModuleIsInitialized();
|
|
102
|
+
|
|
103
|
+
try {
|
|
104
|
+
const data = await AuthsignalDeviceModule.getChallenge();
|
|
105
|
+
|
|
106
|
+
return { data };
|
|
107
|
+
} catch (ex) {
|
|
108
|
+
if (this.enableLogging) {
|
|
109
|
+
console.log(ex);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return handleErrorCodes(ex);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
async updateChallenge({
|
|
117
|
+
challengeId,
|
|
118
|
+
approved,
|
|
119
|
+
verificationCode = null,
|
|
120
|
+
}: UpdateChallengeInput): Promise<AuthsignalResponse<boolean>> {
|
|
121
|
+
await this.ensureModuleIsInitialized();
|
|
122
|
+
|
|
123
|
+
try {
|
|
124
|
+
const data = await AuthsignalDeviceModule.updateChallenge(
|
|
125
|
+
challengeId,
|
|
126
|
+
approved,
|
|
127
|
+
verificationCode
|
|
128
|
+
);
|
|
129
|
+
|
|
130
|
+
return { data };
|
|
131
|
+
} catch (ex) {
|
|
132
|
+
if (this.enableLogging) {
|
|
133
|
+
console.log(ex);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return handleErrorCodes(ex);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
private async ensureModuleIsInitialized() {
|
|
141
|
+
if (initialized) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
await AuthsignalDeviceModule.initialize(this.tenantID, this.baseURL);
|
|
146
|
+
|
|
147
|
+
initialized = true;
|
|
148
|
+
}
|
|
149
|
+
}
|
package/src/index.tsx
CHANGED
|
@@ -5,6 +5,7 @@ import { AuthsignalPasskey } from './passkey';
|
|
|
5
5
|
import { AuthsignalPush } from './push';
|
|
6
6
|
import { AuthsignalSms } from './sms';
|
|
7
7
|
import { AuthsignalTotp } from './totp';
|
|
8
|
+
import { AuthsignalDevice } from './device';
|
|
8
9
|
|
|
9
10
|
export * from './types';
|
|
10
11
|
export { ErrorCode } from './error';
|
|
@@ -34,6 +35,7 @@ export class Authsignal {
|
|
|
34
35
|
email: AuthsignalEmail;
|
|
35
36
|
passkey: AuthsignalPasskey;
|
|
36
37
|
push: AuthsignalPush;
|
|
38
|
+
device: AuthsignalDevice;
|
|
37
39
|
sms: AuthsignalSms;
|
|
38
40
|
totp: AuthsignalTotp;
|
|
39
41
|
|
|
@@ -49,6 +51,7 @@ export class Authsignal {
|
|
|
49
51
|
this.email = new AuthsignalEmail({ tenantID, baseURL, enableLogging });
|
|
50
52
|
this.passkey = new AuthsignalPasskey({ tenantID, baseURL, enableLogging });
|
|
51
53
|
this.push = new AuthsignalPush({ tenantID, baseURL, enableLogging });
|
|
54
|
+
this.device = new AuthsignalDevice({ tenantID, baseURL, enableLogging });
|
|
52
55
|
this.sms = new AuthsignalSms({ tenantID, baseURL, enableLogging });
|
|
53
56
|
this.totp = new AuthsignalTotp({ tenantID, baseURL, enableLogging });
|
|
54
57
|
}
|
package/src/types.ts
CHANGED
|
@@ -59,3 +59,18 @@ export interface PushChallenge {
|
|
|
59
59
|
deviceId?: string;
|
|
60
60
|
ipAddress?: string;
|
|
61
61
|
}
|
|
62
|
+
|
|
63
|
+
export interface DeviceCredential {
|
|
64
|
+
credentialId: string;
|
|
65
|
+
createdAt: string;
|
|
66
|
+
lastAuthenticatedAt?: string;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export interface DeviceChallenge {
|
|
70
|
+
challengeId: string;
|
|
71
|
+
actionCode?: string;
|
|
72
|
+
idempotencyKey?: string;
|
|
73
|
+
userAgent?: string;
|
|
74
|
+
deviceId?: string;
|
|
75
|
+
ipAddress?: string;
|
|
76
|
+
}
|