@tempoxyz/id 0.0.0-pr-349.sha-4e0d044 → 0.0.0-pr-607.sha-7a85573
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/actions/email.d.ts +11 -0
- package/dist/actions/email.d.ts.map +1 -1
- package/dist/actions/email.js +15 -1
- package/dist/actions/email.js.map +1 -1
- package/dist/plugins/email.d.ts +8 -0
- package/dist/plugins/email.d.ts.map +1 -1
- package/dist/plugins/email.js +6 -1
- package/dist/plugins/email.js.map +1 -1
- package/package.json +1 -1
- package/src/actions/email.ts +24 -1
- package/src/plugins/email.ts +14 -1
package/dist/actions/email.d.ts
CHANGED
|
@@ -12,6 +12,10 @@ import type * as AccountActions from './account.js';
|
|
|
12
12
|
/**
|
|
13
13
|
* Emails the user a sign-in code. The response is the same for every address.
|
|
14
14
|
*
|
|
15
|
+
* With `accessKey`, Tempo ID first checks the access key that `Actions.email.signIn` will request, and
|
|
16
|
+
* refuses one that the sign-in would refuse, such as one above the headless ceiling, before it emails
|
|
17
|
+
* a code.
|
|
18
|
+
*
|
|
15
19
|
* @example
|
|
16
20
|
* ```ts
|
|
17
21
|
* await Actions.email.sendCode(auth, { email: 'user@example.com' })
|
|
@@ -20,6 +24,13 @@ import type * as AccountActions from './account.js';
|
|
|
20
24
|
export declare function sendCode(auth: Config, options: sendCode.Options): Promise<void>;
|
|
21
25
|
export declare namespace sendCode {
|
|
22
26
|
type Options = {
|
|
27
|
+
/**
|
|
28
|
+
* The access key that `Actions.email.signIn` will request. Tempo ID refuses one that the sign-in
|
|
29
|
+
* would refuse before it emails a code.
|
|
30
|
+
*/
|
|
31
|
+
accessKey?: WithAccount | undefined;
|
|
32
|
+
/** The `challenge` that `Actions.email.signIn` will send. Needs `accessKey`. */
|
|
33
|
+
challenge?: string | undefined;
|
|
23
34
|
/** The user's email address. */
|
|
24
35
|
email: string;
|
|
25
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/actions/email.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAc,MAAM,aAAa,CAAA;AACxD,OAAO,EAAE,KAAK,MAAM,EAA4B,MAAM,UAAU,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGxD,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAA;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,KAAK,cAAc,MAAM,cAAc,CAAA;AAEnD
|
|
1
|
+
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/actions/email.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAc,MAAM,aAAa,CAAA;AACxD,OAAO,EAAE,KAAK,MAAM,EAA4B,MAAM,UAAU,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGxD,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAA;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,KAAK,cAAc,MAAM,cAAc,CAAA;AAEnD;;;;;;;;;;;GAWG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,QAAQ,CAAC,OAAO,GACxB,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,MAAM,CAAC,OAAO,WAAW,QAAQ,CAAC;IAChC,KAAK,OAAO,GAAG;QACb;;;WAGG;QACH,SAAS,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;QACnC,gFAAgF;QAChF,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC9B,gCAAgC;QAChC,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,MAAM,CAC1B,KAAK,CAAC,SAAS,SAAS,WAAW,GAAG,SAAS,GAAG,SAAS,EAE3D,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAqGlE;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAK,OAAO,CACV,SAAS,SAAS,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,IACjE;QACF;;;;WAIG;QACH,SAAS,CAAC,EAAE,SAAS,CAAA;QACrB;;;WAGG;QACH,OAAO,CAAC,EACJ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,GAC/D,SAAS,CAAA;QACb;;;WAGG;QACH,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,SAAS,CAAA;QAC1E,8CAA8C;QAC9C,IAAI,EAAE,MAAM,CAAA;QACZ,0CAA0C;QAC1C,KAAK,EAAE,MAAM,CAAA;QACb;;;WAGG;QACH,KAAK,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;QACxD;;;WAGG;QACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzB;;;WAGG;QACH,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KACnC,CAAA;IAED;;;OAGG;IACH,KAAK,UAAU,CACb,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/B,GAAG,SAAS,OAAO,GAAG,KAAK,IACzB,CAAC,GAAG,SAAS,KAAK,GAClB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,GACjD,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG;QAC5B;;;;;WAKG;QACH,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;QAClC;;;WAGG;QACH,YAAY,CAAC,EAAE,mBAAmB,CAAC,YAAY,GAAG,SAAS,CAAA;QAC3D;;;WAGG;QACH,gBAAgB,EAAE,OAAO,CAAA;KAC1B,CAAA;CACF"}
|
package/dist/actions/email.js
CHANGED
|
@@ -10,13 +10,27 @@ import * as RegistrationOptions from '../internal/registration.js';
|
|
|
10
10
|
/**
|
|
11
11
|
* Emails the user a sign-in code. The response is the same for every address.
|
|
12
12
|
*
|
|
13
|
+
* With `accessKey`, Tempo ID first checks the access key that `Actions.email.signIn` will request, and
|
|
14
|
+
* refuses one that the sign-in would refuse, such as one above the headless ceiling, before it emails
|
|
15
|
+
* a code.
|
|
16
|
+
*
|
|
13
17
|
* @example
|
|
14
18
|
* ```ts
|
|
15
19
|
* await Actions.email.sendCode(auth, { email: 'user@example.com' })
|
|
16
20
|
* ```
|
|
17
21
|
*/
|
|
18
22
|
export async function sendCode(auth, options) {
|
|
19
|
-
|
|
23
|
+
const { accessKey, challenge, email } = options;
|
|
24
|
+
if (!accessKey && challenge !== undefined)
|
|
25
|
+
throw new ChallengeWithoutKeyError();
|
|
26
|
+
// The check reads what the access key may do, so a new access key stands in for the one that the
|
|
27
|
+
// sign-in signs.
|
|
28
|
+
const authorize = accessKey
|
|
29
|
+
? (await Headless.prepare(auth, { accessKey, challenge })).authorize
|
|
30
|
+
: undefined;
|
|
31
|
+
await Api.json(await Api.post(auth, '/v1/auth/code', {
|
|
32
|
+
json: { ...(authorize ? { authorize } : {}), email },
|
|
33
|
+
}));
|
|
20
34
|
}
|
|
21
35
|
/**
|
|
22
36
|
* Signs the user in with an emailed code, and authorizes a first-party app in the same request. The
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/actions/email.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAc,MAAM,aAAa,CAAA;AACxD,OAAO,EAAe,wBAAwB,EAAE,MAAM,UAAU,CAAA;AAEhE,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAA;AACzC,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAA;AACnD,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAA;AAKlE
|
|
1
|
+
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/actions/email.ts"],"names":[],"mappings":"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"}
|
package/dist/plugins/email.d.ts
CHANGED
|
@@ -36,6 +36,14 @@ export declare namespace email {
|
|
|
36
36
|
};
|
|
37
37
|
namespace sendCode {
|
|
38
38
|
type Parameters = {
|
|
39
|
+
/**
|
|
40
|
+
* The access key that `email.signIn` will request, which Tempo ID checks before it emails a
|
|
41
|
+
* code: what it may do, a function that returns it, or `false` for none. Defaults to the
|
|
42
|
+
* instance's `accessKey`. A backend ignores it.
|
|
43
|
+
*/
|
|
44
|
+
accessKey?: SignIn.AccessKeyOption;
|
|
45
|
+
/** The `challenge` that `email.signIn` will send. A backend ignores it. */
|
|
46
|
+
challenge?: string | undefined;
|
|
39
47
|
/** The user's email address. */
|
|
40
48
|
email: string;
|
|
41
49
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/plugins/email.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,GAAG,MAAM,oBAAoB,CAAA;AAC9C,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,KAAK,OAAO,MAAM,eAAe,CAAA;AAE7C;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,KAAK,CAAC,OAAY;IAQzC;;;OAGG;yBACwB,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/plugins/email.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,GAAG,MAAM,oBAAoB,CAAA;AAC9C,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,KAAK,OAAO,MAAM,eAAe,CAAA;AAE7C;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,KAAK,CAAC,OAAY;IAQzC;;;OAGG;yBACwB,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAapE;;;;OAIG;uBAEW,KAAK,CAAC,MAAM,CAAC,UAAU,GAClC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;YAkD1C;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,KAAK,OAAO,GAAG;QACb;;;WAGG;QACH,KAAK,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;KACtD,CAAA;IAED,UAAU,QAAQ,CAAC;QACjB,KAAK,UAAU,GAAG;YAChB;;;;eAIG;YACH,SAAS,CAAC,EAAE,MAAM,CAAC,eAAe,CAAA;YAClC,2EAA2E;YAC3E,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;YAC9B,gCAAgC;YAChC,KAAK,EAAE,MAAM,CAAA;YACb;;;eAGG;YACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAC5B,CAAA;KACF;IAED,UAAU,MAAM,CAAC;QACf,KAAK,UAAU,GAAG;YAChB;;;eAGG;YACH,SAAS,CAAC,EAAE,MAAM,CAAC,eAAe,CAAA;YAClC;;;eAGG;YACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;YAC9B,8CAA8C;YAC9C,IAAI,EAAE,MAAM,CAAA;YACZ,0CAA0C;YAC1C,KAAK,EAAE,MAAM,CAAA;YACb;;;eAGG;YACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;YACzB,mFAAmF;YACnF,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAC5B,CAAA;QAED,KAAK,UAAU,GAAG,OAAO,CAAC,OAAO,GAAG;YAClC;;;eAGG;YACH,gBAAgB,EAAE,OAAO,CAAA;SAC1B,CAAA;KACF;CACF"}
|
package/dist/plugins/email.js
CHANGED
|
@@ -34,7 +34,12 @@ export function email(options = {}) {
|
|
|
34
34
|
email: parameters.email,
|
|
35
35
|
userIp: parameters.userIp,
|
|
36
36
|
});
|
|
37
|
-
|
|
37
|
+
// The access key that the sign-in will request, which Tempo ID checks before it emails a code.
|
|
38
|
+
return Actions.email.sendCode(config, {
|
|
39
|
+
accessKey: SignIn.accessKey(context, parameters.accessKey),
|
|
40
|
+
challenge: parameters.challenge,
|
|
41
|
+
email: parameters.email,
|
|
42
|
+
});
|
|
38
43
|
},
|
|
39
44
|
/**
|
|
40
45
|
* Signs the user in with the emailed code, sets the instance's session, and returns it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/plugins/email.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AAExC,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAGtC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,KAAK,CAAC,OAAO,GAAkB,EAAE;IAC/C,OAAO,MAAM,CAAC,IAAI,CAAC;QACjB,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;YACnB,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;YAC1B,wDAAwD;YACxD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,eAAe,CAAC,CAAA;YAEtE,OAAO;gBACL;;;mBAGG;gBACH,KAAK,CAAC,QAAQ,CAAC,UAAqC;oBAClD,IAAI,OAAO;wBACT,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;4BAC5C,KAAK,EAAE,UAAU,CAAC,KAAK;4BACvB,MAAM,EAAE,UAAU,CAAC,MAAM;yBAC1B,CAAC,CAAA;oBACJ,OAAO,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/plugins/email.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AAExC,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAGtC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,KAAK,CAAC,OAAO,GAAkB,EAAE;IAC/C,OAAO,MAAM,CAAC,IAAI,CAAC;QACjB,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;YACnB,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;YAC1B,wDAAwD;YACxD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,eAAe,CAAC,CAAA;YAEtE,OAAO;gBACL;;;mBAGG;gBACH,KAAK,CAAC,QAAQ,CAAC,UAAqC;oBAClD,IAAI,OAAO;wBACT,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;4BAC5C,KAAK,EAAE,UAAU,CAAC,KAAK;4BACvB,MAAM,EAAE,UAAU,CAAC,MAAM;yBAC1B,CAAC,CAAA;oBACJ,+FAA+F;oBAC/F,OAAO,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;wBACpC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC;wBAC1D,SAAS,EAAE,UAAU,CAAC,SAAS;wBAC/B,KAAK,EAAE,UAAU,CAAC,KAAK;qBACxB,CAAC,CAAA;gBACJ,CAAC;gBACD;;;;mBAIG;gBACH,KAAK,CAAC,MAAM,CACV,UAAmC;oBAEnC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;oBACvC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;oBACjE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;oBACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAA;oBAE3C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;wBAC/B,IAAI,OAAO;4BACT,OAAO;gCACL,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;oCAC7C,SAAS;oCACT,SAAS;oCACT,IAAI;oCACJ,KAAK,EAAE,UAAU,CAAC,KAAK;oCACvB,MAAM;iCACP,CAAC,CAAC;gCACH,gBAAgB,EAAE,KAAK;6BACxB,CAAA;wBACH,MAAM,OAAO,GAAG;4BACd,SAAS;4BACT,SAAS;4BACT,IAAI;4BACJ,KAAK,EAAE,UAAU,CAAC,KAAK;4BACvB,KAAK;4BACL,IAAI;yBACL,CAAA;wBACD,IAAI,CAAC;4BACH,OAAO,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;gCACxC,GAAG,OAAO;gCACV,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE;6BAC5C,CAAC,CAAA;wBACJ,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,mFAAmF;4BACnF,0CAA0C;4BAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;gCACrD,MAAM,KAAK,CAAA;4BACb,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;wBAC9C,CAAC;oBACH,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;oBAEvB,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;oBACxC,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;oBAC5B,OAAO,EAAE,GAAG,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAA;gBAClE,CAAC;aACF,CAAA;QACH,CAAC;QACD,mFAAmF;QACnF,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,EAAE,EAAE,OAAO;KACZ,CAAC,CAAA;AACJ,CAAC"}
|
package/package.json
CHANGED
package/src/actions/email.ts
CHANGED
|
@@ -15,6 +15,10 @@ import type * as AccountActions from './account.js'
|
|
|
15
15
|
/**
|
|
16
16
|
* Emails the user a sign-in code. The response is the same for every address.
|
|
17
17
|
*
|
|
18
|
+
* With `accessKey`, Tempo ID first checks the access key that `Actions.email.signIn` will request, and
|
|
19
|
+
* refuses one that the sign-in would refuse, such as one above the headless ceiling, before it emails
|
|
20
|
+
* a code.
|
|
21
|
+
*
|
|
18
22
|
* @example
|
|
19
23
|
* ```ts
|
|
20
24
|
* await Actions.email.sendCode(auth, { email: 'user@example.com' })
|
|
@@ -24,11 +28,30 @@ export async function sendCode(
|
|
|
24
28
|
auth: Config,
|
|
25
29
|
options: sendCode.Options,
|
|
26
30
|
): Promise<void> {
|
|
27
|
-
|
|
31
|
+
const { accessKey, challenge, email } = options
|
|
32
|
+
if (!accessKey && challenge !== undefined)
|
|
33
|
+
throw new ChallengeWithoutKeyError()
|
|
34
|
+
// The check reads what the access key may do, so a new access key stands in for the one that the
|
|
35
|
+
// sign-in signs.
|
|
36
|
+
const authorize = accessKey
|
|
37
|
+
? (await Headless.prepare(auth, { accessKey, challenge })).authorize
|
|
38
|
+
: undefined
|
|
39
|
+
await Api.json(
|
|
40
|
+
await Api.post(auth, '/v1/auth/code', {
|
|
41
|
+
json: { ...(authorize ? { authorize } : {}), email },
|
|
42
|
+
}),
|
|
43
|
+
)
|
|
28
44
|
}
|
|
29
45
|
|
|
30
46
|
export declare namespace sendCode {
|
|
31
47
|
type Options = {
|
|
48
|
+
/**
|
|
49
|
+
* The access key that `Actions.email.signIn` will request. Tempo ID refuses one that the sign-in
|
|
50
|
+
* would refuse before it emails a code.
|
|
51
|
+
*/
|
|
52
|
+
accessKey?: WithAccount | undefined
|
|
53
|
+
/** The `challenge` that `Actions.email.signIn` will send. Needs `accessKey`. */
|
|
54
|
+
challenge?: string | undefined
|
|
32
55
|
/** The user's email address. */
|
|
33
56
|
email: string
|
|
34
57
|
}
|
package/src/plugins/email.ts
CHANGED
|
@@ -38,7 +38,12 @@ export function email(options: email.Options = {}) {
|
|
|
38
38
|
email: parameters.email,
|
|
39
39
|
userIp: parameters.userIp,
|
|
40
40
|
})
|
|
41
|
-
|
|
41
|
+
// The access key that the sign-in will request, which Tempo ID checks before it emails a code.
|
|
42
|
+
return Actions.email.sendCode(config, {
|
|
43
|
+
accessKey: SignIn.accessKey(context, parameters.accessKey),
|
|
44
|
+
challenge: parameters.challenge,
|
|
45
|
+
email: parameters.email,
|
|
46
|
+
})
|
|
42
47
|
},
|
|
43
48
|
/**
|
|
44
49
|
* Signs the user in with the emailed code, sets the instance's session, and returns it.
|
|
@@ -110,6 +115,14 @@ export declare namespace email {
|
|
|
110
115
|
|
|
111
116
|
namespace sendCode {
|
|
112
117
|
type Parameters = {
|
|
118
|
+
/**
|
|
119
|
+
* The access key that `email.signIn` will request, which Tempo ID checks before it emails a
|
|
120
|
+
* code: what it may do, a function that returns it, or `false` for none. Defaults to the
|
|
121
|
+
* instance's `accessKey`. A backend ignores it.
|
|
122
|
+
*/
|
|
123
|
+
accessKey?: SignIn.AccessKeyOption
|
|
124
|
+
/** The `challenge` that `email.signIn` will send. A backend ignores it. */
|
|
125
|
+
challenge?: string | undefined
|
|
113
126
|
/** The user's email address. */
|
|
114
127
|
email: string
|
|
115
128
|
/**
|