@nons-dev/sdk-react 1.0.3 → 1.0.5
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/core/http.js
CHANGED
|
@@ -17,6 +17,7 @@ class HttpClient {
|
|
|
17
17
|
const token = await this.tokenManager.getAccessToken();
|
|
18
18
|
const headers = {
|
|
19
19
|
'Content-Type': 'application/json',
|
|
20
|
+
'Accept': 'application/json',
|
|
20
21
|
...(options.headers || {}),
|
|
21
22
|
};
|
|
22
23
|
if (token) {
|
|
@@ -60,6 +61,19 @@ class HttpClient {
|
|
|
60
61
|
return undefined;
|
|
61
62
|
return response.json();
|
|
62
63
|
}
|
|
64
|
+
// Special case for Ory Kratos passwordless magic code flow:
|
|
65
|
+
// When sending the email, Kratos returns 400 Bad Request with the flow state transitioned to "sent_email".
|
|
66
|
+
// We should parse the body first.
|
|
67
|
+
let errorData;
|
|
68
|
+
try {
|
|
69
|
+
errorData = await response.clone().json();
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// Ignored
|
|
73
|
+
}
|
|
74
|
+
if (errorData && (errorData.state === 'sent_email' || (errorData.ui && errorData.ui.nodes && errorData.ui.nodes.some((n) => n.attributes && n.attributes.name === 'code')))) {
|
|
75
|
+
return errorData;
|
|
76
|
+
}
|
|
63
77
|
throw await (0, errors_1.parseErrorResponse)(response);
|
|
64
78
|
}
|
|
65
79
|
get(path, params) {
|
package/dist/core/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/core/http.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/core/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,8 @@ import { HttpClient } from '../core/http';
|
|
|
2
2
|
export declare class AuthModule {
|
|
3
3
|
private http;
|
|
4
4
|
private baseUrl;
|
|
5
|
+
private currentCsrfToken;
|
|
6
|
+
private currentEmail;
|
|
5
7
|
constructor(http: HttpClient, baseUrl: string);
|
|
6
8
|
initializeLoginFlow(): Promise<{
|
|
7
9
|
id: string;
|
|
@@ -9,6 +11,7 @@ export declare class AuthModule {
|
|
|
9
11
|
}>;
|
|
10
12
|
sendMagicCode(flowId: string, email: string): Promise<any>;
|
|
11
13
|
verifyMagicCode(flowId: string, code: string): Promise<any>;
|
|
14
|
+
private extractCsrfToken;
|
|
12
15
|
getGoogleLoginUrl(loginChallenge: string): string;
|
|
13
16
|
getCurrentSession(): Promise<any>;
|
|
14
17
|
getAuthStatus(): Promise<{
|
|
@@ -4,24 +4,63 @@ exports.AuthModule = void 0;
|
|
|
4
4
|
class AuthModule {
|
|
5
5
|
http;
|
|
6
6
|
baseUrl;
|
|
7
|
+
currentCsrfToken = null;
|
|
8
|
+
currentEmail = null;
|
|
7
9
|
constructor(http, baseUrl) {
|
|
8
10
|
this.http = http;
|
|
9
11
|
this.baseUrl = baseUrl;
|
|
10
12
|
}
|
|
11
13
|
async initializeLoginFlow() {
|
|
12
|
-
|
|
14
|
+
const res = await this.http.get('/v1/auth/kratos/self-service/login/browser');
|
|
15
|
+
this.extractCsrfToken(res);
|
|
16
|
+
return res;
|
|
13
17
|
}
|
|
14
18
|
async sendMagicCode(flowId, email) {
|
|
15
|
-
|
|
19
|
+
this.currentEmail = email;
|
|
20
|
+
const payload = {
|
|
16
21
|
method: 'code',
|
|
17
22
|
identifier: email,
|
|
18
|
-
}
|
|
23
|
+
};
|
|
24
|
+
if (this.currentCsrfToken) {
|
|
25
|
+
payload.csrf_token = this.currentCsrfToken;
|
|
26
|
+
}
|
|
27
|
+
const res = await this.http.post(`/v1/auth/kratos/self-service/login?flow=${flowId}`, payload);
|
|
28
|
+
this.extractCsrfToken(res);
|
|
29
|
+
return res;
|
|
19
30
|
}
|
|
20
31
|
async verifyMagicCode(flowId, code) {
|
|
21
|
-
|
|
32
|
+
const payload = {
|
|
22
33
|
method: 'code',
|
|
23
34
|
code: code,
|
|
24
|
-
}
|
|
35
|
+
};
|
|
36
|
+
if (this.currentCsrfToken) {
|
|
37
|
+
payload.csrf_token = this.currentCsrfToken;
|
|
38
|
+
}
|
|
39
|
+
if (this.currentEmail) {
|
|
40
|
+
payload.identifier = this.currentEmail;
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
const res = await this.http.post(`/v1/auth/kratos/self-service/login?flow=${flowId}`, payload);
|
|
44
|
+
this.extractCsrfToken(res);
|
|
45
|
+
return res;
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
// If verification fails, Kratos might still return a new form state with a rotated CSRF token.
|
|
49
|
+
// Try to extract it from the thrown error details if it has the Kratos response.
|
|
50
|
+
const details = err.details;
|
|
51
|
+
if (details) {
|
|
52
|
+
this.extractCsrfToken(details);
|
|
53
|
+
}
|
|
54
|
+
throw err;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
extractCsrfToken(data) {
|
|
58
|
+
if (data && data.ui && data.ui.nodes) {
|
|
59
|
+
const csrfNode = data.ui.nodes.find((n) => n.attributes && n.attributes.name === 'csrf_token');
|
|
60
|
+
if (csrfNode && csrfNode.attributes && csrfNode.attributes.value) {
|
|
61
|
+
this.currentCsrfToken = csrfNode.attributes.value;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
25
64
|
}
|
|
26
65
|
getGoogleLoginUrl(loginChallenge) {
|
|
27
66
|
const postLoginUrl = `${this.baseUrl}/v1/auth/post-login?login_challenge=${encodeURIComponent(loginChallenge)}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../../src/modules/auth.module.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../../src/modules/auth.module.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;IAKD;IAJZ,OAAO,CAAS;IAChB,gBAAgB,GAAkB,IAAI,CAAC;IACvC,YAAY,GAAkB,IAAI,CAAC;IAE3C,YAAoB,IAAgB,EAAE,OAAe;QAAjC,SAAI,GAAJ,IAAI,CAAY;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAA0B,4CAA4C,CAAC,CAAC;QACvG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,KAAa;QAC/C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,MAAM,OAAO,GAAQ;YACnB,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,KAAK;SAClB,CAAC;QACF,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC7C,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,2CAA2C,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;QACpG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,IAAY;QAChD,MAAM,OAAO,GAAQ;YACnB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI;SACX,CAAC;QACF,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC7C,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;QACzC,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,2CAA2C,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;YACpG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC3B,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,+FAA+F;YAC/F,iFAAiF;YACjF,MAAM,OAAO,GAAI,GAAW,CAAC,OAAO,CAAC;YACrC,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,IAAS;QAChC,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;YACpG,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACjE,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,cAAsB;QACtC,MAAM,YAAY,GAAG,GAAG,IAAI,CAAC,OAAO,uCAAuC,kBAAkB,CAAC,cAAc,CAAC,EAAE,CAAC;QAChH,OAAO,GAAG,IAAI,CAAC,OAAO,wEAAwE,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC;IACnI,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,iCAAiC,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmG,UAAU,CAAC,CAAC;IACrI,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,eAAuB;QAClC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,oCAAoC,kBAAkB,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,oBAAoB,CAAC,OAAY;QAC/B,MAAM,SAAS,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC;QACvD,OAAO,SAAS,KAAK,IAAI,CAAC;IAC5B,CAAC;CACF;AArFD,gCAqFC"}
|