@ofidj/entry 3.13.0 → 3.15.0
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 +5 -5
- package/dom.d.ts +30 -1
- package/dom.js +83 -12
- package/index.d.ts +1 -1
- package/index.js +2 -2
- package/model.d.ts +6 -0
- package/model.js +19 -3
- package/package.json +1 -1
- package/server.d.ts +5 -1
- package/server.js +61 -8
- package/style.css +146 -2
package/README.md
CHANGED
|
@@ -4,9 +4,9 @@ The Fidj entry, as a package: the sign-in and account screens, the service
|
|
|
4
4
|
agreement, the provider window and the design system. One implementation, shared
|
|
5
5
|
by Fidj's own console, every generated app and mleweb.
|
|
6
6
|
|
|
7
|
-
Read the [workspace README](../README.md) for the product target and
|
|
8
|
-
[AGENTS.md](../AGENTS.md) for the working rules. The flow these screens
|
|
9
|
-
implement is [Entry: one flow, the same everywhere](../README.md#entry-one-flow-the-same-everywhere).
|
|
7
|
+
Read the [workspace README](../fidj-brain/README.md) for the product target and
|
|
8
|
+
[AGENTS.md](../fidj-brain/AGENTS.md) for the working rules. The flow these screens
|
|
9
|
+
implement is [Entry: one flow, the same everywhere](../fidj-brain/README.md#entry-one-flow-the-same-everywhere).
|
|
10
10
|
|
|
11
11
|
## Why it exists
|
|
12
12
|
|
|
@@ -139,7 +139,7 @@ package rather than reimplementing its behavior locally.
|
|
|
139
139
|
|
|
140
140
|
## The entry flow
|
|
141
141
|
|
|
142
|
-
[The workspace README](../README.md#entry-one-flow-the-same-everywhere) defines
|
|
142
|
+
[The workspace README](../fidj-brain/README.md#entry-one-flow-the-same-everywhere) defines
|
|
143
143
|
it; this package implements it, so every surface gets the same one.
|
|
144
144
|
|
|
145
145
|
```ts
|
|
@@ -196,7 +196,7 @@ what opens the door.
|
|
|
196
196
|
|
|
197
197
|
## Release
|
|
198
198
|
|
|
199
|
-
This package joins [the one release series](../README.md#one-release-series-for-every-ofidj-package)
|
|
199
|
+
This package joins [the one release series](../fidj-brain/README.md#one-release-series-for-every-ofidj-package)
|
|
200
200
|
and publishes from `./dist` when its `package` branch is pushed. It sits after
|
|
201
201
|
`@ofidj/contracts` and `@ofidj/node` and before `@ofidj/generator-fidj` in the
|
|
202
202
|
dependency chain, because the generator and the console both consume it.
|
package/dom.d.ts
CHANGED
|
@@ -9,9 +9,14 @@ export declare function badgeStrip(entries?: string[]): string;
|
|
|
9
9
|
export declare function credentialFields(state: {
|
|
10
10
|
email: string;
|
|
11
11
|
password: string;
|
|
12
|
+
}, options?: {
|
|
13
|
+
passkey?: boolean;
|
|
12
14
|
}): string;
|
|
15
|
+
export declare function walletDoor(): string;
|
|
13
16
|
export declare function bindPasswordReveal(root: ParentNode): void;
|
|
14
|
-
export declare function accountForm(route: string, state: AccountState
|
|
17
|
+
export declare function accountForm(route: string, state: AccountState, options?: {
|
|
18
|
+
compact?: boolean;
|
|
19
|
+
}): string;
|
|
15
20
|
export declare function returnNotice(asking: string): string;
|
|
16
21
|
export declare function providerEntry(title: string, appId: string, credentials: string, isFidjItself?: boolean, shape?: SigninShape): string;
|
|
17
22
|
export declare function agreementScreen(title: string, agreement: {
|
|
@@ -26,3 +31,27 @@ export declare function acceptedAgreement(form: HTMLFormElement): {
|
|
|
26
31
|
export declare function bindAgreementScreen(form: HTMLFormElement | null): void;
|
|
27
32
|
export declare function showEmailEntry(open: boolean, focus?: boolean): void;
|
|
28
33
|
export declare function showVersionBadge(version: string, apiEndpoint?: string): void;
|
|
34
|
+
export declare function passkeySupported(): boolean;
|
|
35
|
+
export declare function passkeyAssertion(options: any): Promise<{
|
|
36
|
+
id: any;
|
|
37
|
+
rawId: string;
|
|
38
|
+
type: any;
|
|
39
|
+
response: {
|
|
40
|
+
clientDataJSON: string;
|
|
41
|
+
authenticatorData: string;
|
|
42
|
+
signature: string;
|
|
43
|
+
userHandle: string | undefined;
|
|
44
|
+
};
|
|
45
|
+
clientExtensionResults: {};
|
|
46
|
+
}>;
|
|
47
|
+
export declare function passkeyRegistration(options: any): Promise<{
|
|
48
|
+
id: any;
|
|
49
|
+
rawId: string;
|
|
50
|
+
type: any;
|
|
51
|
+
response: {
|
|
52
|
+
clientDataJSON: string;
|
|
53
|
+
attestationObject: string;
|
|
54
|
+
transports: any;
|
|
55
|
+
};
|
|
56
|
+
clientExtensionResults: {};
|
|
57
|
+
}>;
|
package/dom.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
// screen nests signin-trust inside its inner div and the interaction screen
|
|
10
10
|
// makes it a sibling, so a single shell builder would have had to change one of
|
|
11
11
|
// them. That is a decision, not a move.
|
|
12
|
-
import { accountModel, agreementModel, credentialsModel, providerEntryModel, returnNoticeModel, signInHint, verificationWaitModel, } from "./index.js";
|
|
12
|
+
import { accountModel, agreementModel, credentialsModel, emailDividerLabel, passkeyDoorModel, providerEntryModel, returnNoticeModel, signInHint, verificationWaitModel, walletDoorModel, } from "./index.js";
|
|
13
13
|
export const escape = (value) => String(value ?? "").replace(/[&<>"']/g, (char) => ({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" })[char]);
|
|
14
14
|
const attribute = (name, value) => value === undefined || value === false || value === ""
|
|
15
15
|
? ""
|
|
@@ -50,14 +50,22 @@ export function badgeStrip(entries) {
|
|
|
50
50
|
.map((entry) => `<span>${escape(entry)}</span>`)
|
|
51
51
|
.join("")}</footer>`;
|
|
52
52
|
}
|
|
53
|
-
export function credentialFields(state) {
|
|
53
|
+
export function credentialFields(state, options = {}) {
|
|
54
54
|
const model = credentialsModel(state);
|
|
55
|
-
|
|
55
|
+
const passkey = options.passkey
|
|
56
|
+
? `<button class="primary passkey" type="submit" id="${escape(passkeyDoorModel.id)}" name="${escape(passkeyDoorModel.name)}" value="${escape(passkeyDoorModel.value)}" formnovalidate>${escape(passkeyDoorModel.label)}</button>` +
|
|
57
|
+
`<p class="entry-divider"><span>${escape(emailDividerLabel)}</span></p>`
|
|
58
|
+
: "";
|
|
59
|
+
return (passkey +
|
|
60
|
+
`<label for="email">${escape(model.email.label)}</label><input id="email" type="email" value="${escape(model.email.value)}" placeholder="${escape(model.email.placeholder)}" autocomplete="username">` +
|
|
56
61
|
`<div class="field-head"><label for="password">${escape(model.password.label)}</label><a href="${escape(model.forgot.href)}">${escape(model.forgot.label)}</a></div>` +
|
|
57
62
|
`<div class="password-field"><input id="password" type="password" value="${escape(model.password.value)}" placeholder="${escape(model.password.placeholder)}" autocomplete="current-password"><button type="button" id="reveal" aria-controls="password">${escape(model.reveal.label)}</button></div>` +
|
|
58
63
|
`<button class="primary" type="submit" name="entry" value="credentials">${escape(model.submit.label)}</button>` +
|
|
59
64
|
`<button class="secondary" type="submit" name="signup" value="true">${escape(model.signup.label)}</button>`);
|
|
60
65
|
}
|
|
66
|
+
export function walletDoor() {
|
|
67
|
+
return `<p class="wallet-door" aria-disabled="true"><span>${escape(walletDoorModel.label)}</span><span class="wallet-date">${escape(walletDoorModel.date)}</span></p>`;
|
|
68
|
+
}
|
|
61
69
|
export function bindPasswordReveal(root) {
|
|
62
70
|
root
|
|
63
71
|
.querySelectorAll("button[aria-controls]")
|
|
@@ -77,7 +85,7 @@ export function bindPasswordReveal(root) {
|
|
|
77
85
|
}
|
|
78
86
|
// The four account screens, drawn from the model that decides which of them has
|
|
79
87
|
// a form to show.
|
|
80
|
-
export function accountForm(route, state) {
|
|
88
|
+
export function accountForm(route, state, options = {}) {
|
|
81
89
|
const model = accountModel(route, state);
|
|
82
90
|
const fields = model.fields
|
|
83
91
|
.map((field) => {
|
|
@@ -95,9 +103,10 @@ export function accountForm(route, state) {
|
|
|
95
103
|
return `<h2>${escape(model.heading)}</h2><p>${escape(model.intro)}</p>${form}${alternative}`;
|
|
96
104
|
// My account keeps its own shape: an identity line, a status the page
|
|
97
105
|
// refreshes in place, and the controls that act on it.
|
|
98
|
-
return (
|
|
99
|
-
|
|
100
|
-
`<
|
|
106
|
+
return ((options.compact
|
|
107
|
+
? ""
|
|
108
|
+
: `<h2>${escape(model.heading)}</h2><p class="account-identity">Signed in as <strong>${escape(state.accountEmail)}</strong></p>`) +
|
|
109
|
+
(model.intro ? `<p>${escape(model.intro)}</p>` : "") +
|
|
101
110
|
`<p id="verification-status">${escape(model.status)}</p>` +
|
|
102
111
|
model.extras
|
|
103
112
|
.map((control) => `<button id="${escape(control.id)}">${escape(control.label)}</button>`)
|
|
@@ -140,10 +149,7 @@ export function providerEntry(title, appId, credentials, isFidjItself = false, s
|
|
|
140
149
|
// recorded is what was displayed.
|
|
141
150
|
export function agreementScreen(title, agreement, href) {
|
|
142
151
|
const model = agreementModel(title, agreement);
|
|
143
|
-
return `<
|
|
144
|
-
<p class="signin-lead">${escape(model.lead)}</p>
|
|
145
|
-
<div class="agreement-text" tabindex="0">${escape(model.text)}</div>
|
|
146
|
-
<label class="agreement-choice"><input id="service-agreement" type="checkbox" required aria-required="true" data-version="${escape(model.version)}"><span>I accept the <a class="agreement-document" href="${escape(href)}" target="fidj-agreement" rel="noopener">service agreement · ${escape(model.versionLabel)} ↗</a></span></label>
|
|
152
|
+
return `<label class="agreement-choice"><input id="service-agreement" type="checkbox" required aria-required="true" data-version="${escape(model.version)}"><span>I accept the <a class="agreement-document" href="${escape(href)}" target="fidj-agreement" rel="noopener">service agreement · ${escape(model.versionLabel)} ↗</a></span></label>
|
|
147
153
|
<button class="primary" type="submit"${model.submitDisabled ? " disabled" : ""}>${escape(model.submitLabel)}</button>`;
|
|
148
154
|
}
|
|
149
155
|
// Screen two, drawn under the form that started it.
|
|
@@ -248,4 +254,69 @@ export function showVersionBadge(version, apiEndpoint) {
|
|
|
248
254
|
.catch(() => undefined);
|
|
249
255
|
}
|
|
250
256
|
}
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FBeUM7QUFDekMsRUFBRTtBQUNGLCtFQUErRTtBQUMvRSw4RUFBOEU7QUFDOUUsZ0ZBQWdGO0FBQ2hGLHVFQUF1RTtBQUN2RSxFQUFFO0FBQ0YsZ0ZBQWdGO0FBQ2hGLDRFQUE0RTtBQUM1RSxnRkFBZ0Y7QUFDaEYsd0NBQXdDO0FBRXhDLE9BQU8sRUFDTCxZQUFZLEVBQ1osY0FBYyxFQUNkLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixxQkFBcUIsR0FLdEIsTUFBTSxZQUFZLENBQUM7QUFFcEIsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FDdkMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQ3pCLFVBQVUsRUFDVixDQUFDLElBQUksRUFBRSxFQUFFLENBQ1AsQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQ3ZFLElBQUksQ0FDSixDQUNMLENBQUM7QUFFSixNQUFNLFNBQVMsR0FBRyxDQUFDLElBQVksRUFBRSxLQUFpQyxFQUFFLEVBQUUsQ0FDcEUsS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEtBQUssS0FBSyxFQUFFO0lBQ3BELENBQUMsQ0FBQyxFQUFFO0lBQ0osQ0FBQyxDQUFDLElBQUksSUFBSSxLQUFLLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0FBRXBDLE1BQU0sTUFBTSxHQUFHLENBQUMsT0FBcUIsRUFBRSxVQUFVLEdBQUcsRUFBRSxFQUFFLEVBQUU7SUFDeEQsTUFBTSxPQUFPLEdBQUc7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
|
|
257
|
+
// Passkeys in the browser (v3 P1-4). The API speaks base64url JSON; WebAuthn
|
|
258
|
+
// speaks ArrayBuffers. These carry one to the other, both ways, for every
|
|
259
|
+
// surface that runs the ceremony on a page of its own.
|
|
260
|
+
const fromBase64url = (value) => {
|
|
261
|
+
const base64 = value.replace(/-/g, "+").replace(/_/g, "/");
|
|
262
|
+
const binary = atob(base64 + "===".slice((base64.length + 3) % 4));
|
|
263
|
+
return Uint8Array.from(binary, (c) => c.charCodeAt(0)).buffer;
|
|
264
|
+
};
|
|
265
|
+
const toBase64url = (buffer) => btoa(String.fromCharCode(...new Uint8Array(buffer)))
|
|
266
|
+
.replace(/\+/g, "-")
|
|
267
|
+
.replace(/\//g, "_")
|
|
268
|
+
.replace(/=+$/, "");
|
|
269
|
+
const withIds = (list = []) => list.map((entry) => ({ ...entry, id: fromBase64url(entry.id) }));
|
|
270
|
+
export function passkeySupported() {
|
|
271
|
+
return (typeof window !== "undefined" &&
|
|
272
|
+
Boolean(window.PublicKeyCredential) &&
|
|
273
|
+
typeof navigator !== "undefined" &&
|
|
274
|
+
Boolean(navigator.credentials));
|
|
275
|
+
}
|
|
276
|
+
export async function passkeyAssertion(options) {
|
|
277
|
+
const credential = await navigator.credentials.get({
|
|
278
|
+
publicKey: {
|
|
279
|
+
...options,
|
|
280
|
+
challenge: fromBase64url(options.challenge),
|
|
281
|
+
allowCredentials: withIds(options.allowCredentials),
|
|
282
|
+
},
|
|
283
|
+
});
|
|
284
|
+
const response = credential.response;
|
|
285
|
+
return {
|
|
286
|
+
id: credential.id,
|
|
287
|
+
rawId: toBase64url(credential.rawId),
|
|
288
|
+
type: credential.type,
|
|
289
|
+
response: {
|
|
290
|
+
clientDataJSON: toBase64url(response.clientDataJSON),
|
|
291
|
+
authenticatorData: toBase64url(response.authenticatorData),
|
|
292
|
+
signature: toBase64url(response.signature),
|
|
293
|
+
userHandle: response.userHandle
|
|
294
|
+
? toBase64url(response.userHandle)
|
|
295
|
+
: undefined,
|
|
296
|
+
},
|
|
297
|
+
clientExtensionResults: {},
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
export async function passkeyRegistration(options) {
|
|
301
|
+
const credential = await navigator.credentials.create({
|
|
302
|
+
publicKey: {
|
|
303
|
+
...options,
|
|
304
|
+
challenge: fromBase64url(options.challenge),
|
|
305
|
+
user: { ...options.user, id: fromBase64url(options.user.id) },
|
|
306
|
+
excludeCredentials: withIds(options.excludeCredentials),
|
|
307
|
+
},
|
|
308
|
+
});
|
|
309
|
+
const response = credential.response;
|
|
310
|
+
return {
|
|
311
|
+
id: credential.id,
|
|
312
|
+
rawId: toBase64url(credential.rawId),
|
|
313
|
+
type: credential.type,
|
|
314
|
+
response: {
|
|
315
|
+
clientDataJSON: toBase64url(response.clientDataJSON),
|
|
316
|
+
attestationObject: toBase64url(response.attestationObject),
|
|
317
|
+
transports: response.getTransports ? response.getTransports() : [],
|
|
318
|
+
},
|
|
319
|
+
clientExtensionResults: {},
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FBeUM7QUFDekMsRUFBRTtBQUNGLCtFQUErRTtBQUMvRSw4RUFBOEU7QUFDOUUsZ0ZBQWdGO0FBQ2hGLHVFQUF1RTtBQUN2RSxFQUFFO0FBQ0YsZ0ZBQWdGO0FBQ2hGLDRFQUE0RTtBQUM1RSxnRkFBZ0Y7QUFDaEYsd0NBQXdDO0FBRXhDLE9BQU8sRUFDTCxZQUFZLEVBQ1osY0FBYyxFQUNkLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsVUFBVSxFQUNWLHFCQUFxQixFQUNyQixlQUFlLEdBS2hCLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQ3ZDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUN6QixVQUFVLEVBQ1YsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNQLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUN2RSxJQUFJLENBQ0osQ0FDTCxDQUFDO0FBRUosTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFZLEVBQUUsS0FBaUMsRUFBRSxFQUFFLENBQ3BFLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxLQUFLLEtBQUssRUFBRTtJQUNwRCxDQUFDLENBQUMsRUFBRTtJQUNKLENBQUMsQ0FBQyxJQUFJLElBQUksS0FBSyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUVwQyxNQUFNLE1BQU0sR0FBRyxDQUFDLE9BQXFCLEVBQUUsVUFBVSxHQUFH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
|
package/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { agreementRequired, agreementFromRefusal, verificationPending, signInErrorMessage, acceptance, providerEntryModel, agreementModel, verificationWaitModel, accountModel, credentialsModel, returnNoticeModel, pollVerification, type SigninShape, type EntryControl, type ProviderEntryModel, type AgreementModel, type VerificationState, type VerificationWaitModel, type AccountState, type AccountField, type AccountModel, type CredentialsModel, } from "./model.js";
|
|
1
|
+
export { agreementRequired, agreementFromRefusal, verificationPending, signInErrorMessage, acceptance, providerEntryModel, agreementModel, verificationWaitModel, accountModel, credentialsModel, passkeyDoorModel, emailDividerLabel, walletDoorModel, returnNoticeModel, pollVerification, type SigninShape, type EntryControl, type ProviderEntryModel, type AgreementModel, type VerificationState, type VerificationWaitModel, type AccountState, type AccountField, type AccountModel, type CredentialsModel, } from "./model.js";
|
|
2
2
|
export { signInHint, rememberSignIn, forgetSignIn } from "./remembered.js";
|
package/index.js
CHANGED
|
@@ -11,6 +11,6 @@
|
|
|
11
11
|
// Two subpaths carry what cannot be pure:
|
|
12
12
|
// @ofidj/entry/dom the HTML renderer and the helpers that drive a document
|
|
13
13
|
// @ofidj/entry/window the Fidj window and the answer it relays back
|
|
14
|
-
export { agreementRequired, agreementFromRefusal, verificationPending, signInErrorMessage, acceptance, providerEntryModel, agreementModel, verificationWaitModel, accountModel, credentialsModel, returnNoticeModel, pollVerification, } from "./model.js";
|
|
14
|
+
export { agreementRequired, agreementFromRefusal, verificationPending, signInErrorMessage, acceptance, providerEntryModel, agreementModel, verificationWaitModel, accountModel, credentialsModel, passkeyDoorModel, emailDividerLabel, walletDoorModel, returnNoticeModel, pollVerification, } from "./model.js";
|
|
15
15
|
export { signInHint, rememberSignIn, forgetSignIn } from "./remembered.js";
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUVBQW1FO0FBQ25FLEVBQUU7QUFDRixnRkFBZ0Y7QUFDaEYsNkVBQTZFO0FBQzdFLCtFQUErRTtBQUMvRSxnRkFBZ0Y7QUFDaEYsOEVBQThFO0FBQzlFLDZFQUE2RTtBQUM3RSxrRUFBa0U7QUFDbEUsRUFBRTtBQUNGLDBDQUEwQztBQUMxQyxpRkFBaUY7QUFDakYsdUVBQXVFO0FBQ3ZFLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLGdCQUFnQixHQVdqQixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQyJ9
|
package/model.d.ts
CHANGED
|
@@ -119,6 +119,12 @@ export type CredentialsModel = {
|
|
|
119
119
|
submit: EntryControl;
|
|
120
120
|
signup: EntryControl;
|
|
121
121
|
};
|
|
122
|
+
export declare const passkeyDoorModel: EntryControl;
|
|
123
|
+
export declare const emailDividerLabel = "or with your email";
|
|
124
|
+
export declare const walletDoorModel: {
|
|
125
|
+
label: string;
|
|
126
|
+
date: string;
|
|
127
|
+
};
|
|
122
128
|
export declare function credentialsModel(state: {
|
|
123
129
|
email: string;
|
|
124
130
|
password: string;
|
package/model.js
CHANGED
|
@@ -298,8 +298,8 @@ export function accountModel(route, state) {
|
|
|
298
298
|
};
|
|
299
299
|
return {
|
|
300
300
|
...empty,
|
|
301
|
-
heading: "
|
|
302
|
-
intro: "
|
|
301
|
+
heading: "Profile",
|
|
302
|
+
intro: "",
|
|
303
303
|
status: state.emailVerified
|
|
304
304
|
? "Your email address is verified."
|
|
305
305
|
: "Your email is not verified yet.",
|
|
@@ -322,6 +322,22 @@ export function accountModel(route, state) {
|
|
|
322
322
|
],
|
|
323
323
|
};
|
|
324
324
|
}
|
|
325
|
+
// The passkey door (v3): the first way in, where the passkey can run. The
|
|
326
|
+
// email and password stay under it, reached by the divider's words.
|
|
327
|
+
export const passkeyDoorModel = {
|
|
328
|
+
id: "entry-passkey",
|
|
329
|
+
name: "entry",
|
|
330
|
+
value: "passkey",
|
|
331
|
+
kind: "primary",
|
|
332
|
+
label: "Continue with a passkey",
|
|
333
|
+
};
|
|
334
|
+
export const emailDividerLabel = "or with your email";
|
|
335
|
+
// A promise of direction, not a feature: drawn, dated, and never a button
|
|
336
|
+
// until the wallets exist.
|
|
337
|
+
export const walletDoorModel = {
|
|
338
|
+
label: "EU Digital Identity Wallet / France Identité",
|
|
339
|
+
date: "From Dec 2026",
|
|
340
|
+
};
|
|
325
341
|
// Both doors, and what was already typed. The entry is rebuilt on every render
|
|
326
342
|
// and a refused sign-in is a render, so the values come back in rather than
|
|
327
343
|
// being lost with the markup that held them.
|
|
@@ -403,4 +419,4 @@ export function pollVerification(options) {
|
|
|
403
419
|
timer = setTimeout(ask, interval);
|
|
404
420
|
return stop;
|
|
405
421
|
}
|
|
406
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0JBQXNCO0FBQ3RCLEVBQUU7QUFDRiwrRUFBK0U7QUFDL0UsMkVBQTJFO0FBQzNFLHNFQUFzRTtBQUN0RSxnRkFBZ0Y7QUFDaEYsc0VBQXNFO0FBQ3RFLEVBQUU7QUFDRixnRkFBZ0Y7QUFDaEYsK0VBQStFO0FBQy9FLGdGQUFnRjtBQUNoRiw4RUFBOEU7QUFDOUUsMkJBQTJCO0FBSTNCLDhFQUE4RTtBQUM5RSx1QkFBdUI7QUFDdkIsOEVBQThFO0FBRTlFLE1BQU0sa0JBQWtCLEdBQUcsb0JBQW9CLENBQUM7QUFFaEQscUVBQXFFO0FBQ3JFLEVBQUU7QUFDRixnRkFBZ0Y7QUFDaEYsNEVBQTRFO0FBQzVFLDBFQUEwRTtBQUMxRSw4RUFBOEU7QUFDOUUsOEVBQThFO0FBQzlFLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFjO0lBQzlDLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3RELE1BQU0sTUFBTSxHQUFHLEtBSWQsQ0FBQztJQUNGLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxHQUFHO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDckMsS0FBSyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNqRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pFLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxnRkFBZ0Y7QUFDaEYsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSwyRUFBMkU7QUFDM0UsZ0ZBQWdG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
|
|
422
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0JBQXNCO0FBQ3RCLEVBQUU7QUFDRiwrRUFBK0U7QUFDL0UsMkVBQTJFO0FBQzNFLHNFQUFzRTtBQUN0RSxnRkFBZ0Y7QUFDaEYsc0VBQXNFO0FBQ3RFLEVBQUU7QUFDRixnRkFBZ0Y7QUFDaEYsK0VBQStFO0FBQy9FLGdGQUFnRjtBQUNoRiw4RUFBOEU7QUFDOUUsMkJBQTJCO0FBSTNCLDhFQUE4RTtBQUM5RSx1QkFBdUI7QUFDdkIsOEVBQThFO0FBRTlFLE1BQU0sa0JBQWtCLEdBQUcsb0JBQW9CLENBQUM7QUFFaEQscUVBQXFFO0FBQ3JFLEVBQUU7QUFDRixnRkFBZ0Y7QUFDaEYsNEVBQTRFO0FBQzVFLDBFQUEwRTtBQUMxRSw4RUFBOEU7QUFDOUUsOEVBQThFO0FBQzlFLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFjO0lBQzlDLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3RELE1BQU0sTUFBTSxHQUFHLEtBSWQsQ0FBQztJQUNGLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxHQUFHO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDckMsS0FBSyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNqRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pFLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxnRkFBZ0Y7QUFDaEYsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSwyRUFBMkU7QUFDM0UsZ0ZBQWdG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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ofidj/entry",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.15.0",
|
|
4
4
|
"description": "The Fidj entry: sign-in, account recovery, the service agreement and the design system, shared verbatim by Fidj, the generated apps and the console.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
package/server.d.ts
CHANGED
|
@@ -19,6 +19,10 @@ export type OidcInteractionPage = {
|
|
|
19
19
|
termsUri?: string;
|
|
20
20
|
privacyUri?: string;
|
|
21
21
|
recognisedEmail?: string;
|
|
22
|
+
passkey?: {
|
|
23
|
+
ticket: string;
|
|
24
|
+
options: unknown;
|
|
25
|
+
};
|
|
22
26
|
};
|
|
23
|
-
export declare const oidcInteractionScript = "(() => {\n const bindPasswordReveal = (root) => {\n root.querySelectorAll(\"button[aria-controls]\").forEach((button) => {\n const field = root.querySelector(\"#\" + button.getAttribute(\"aria-controls\"));\n if (!field) return;\n button.addEventListener(\"click\", () => {\n const hidden = field.type === \"password\";\n field.type = hidden ? \"text\" : \"password\";\n button.textContent = hidden ? \"Hide\" : \"Show\";\n });\n });\n };\n const bindAgreement = (root) => {\n const checkbox = root.querySelector('input[name=\"terms\"]');\n const submit = root.querySelector('button[value=\"continue\"]');\n if (!checkbox || !submit) return;\n const update = () => { submit.disabled = !checkbox.checked; };\n checkbox.addEventListener(\"change\", update);\n update();\n };\n const bindAgreementWindow = (root) => {\n root.querySelectorAll(\"a.agreement-document\").forEach((link) => {\n link.addEventListener(\"click\", (event) => {\n event.preventDefault();\n window.open(link.href, \"fidj-agreement\", \"popup,width=640,height=720,left=40,top=40,noopener\");\n });\n });\n };\n bindPasswordReveal(document);\n bindAgreement(document);\n bindAgreementWindow(document);\n})();";
|
|
27
|
+
export declare const oidcInteractionScript = "(() => {\n const bindPasswordReveal = (root) => {\n root.querySelectorAll(\"button[aria-controls]\").forEach((button) => {\n const field = root.querySelector(\"#\" + button.getAttribute(\"aria-controls\"));\n if (!field) return;\n button.addEventListener(\"click\", () => {\n const hidden = field.type === \"password\";\n field.type = hidden ? \"text\" : \"password\";\n button.textContent = hidden ? \"Hide\" : \"Show\";\n });\n });\n };\n const bindAgreement = (root) => {\n const checkbox = root.querySelector('input[name=\"terms\"]');\n const submit = root.querySelector('button[value=\"continue\"]');\n if (!checkbox || !submit) return;\n const update = () => { submit.disabled = !checkbox.checked; };\n checkbox.addEventListener(\"change\", update);\n update();\n };\n const bindAgreementWindow = (root) => {\n root.querySelectorAll(\"a.agreement-document\").forEach((link) => {\n link.addEventListener(\"click\", (event) => {\n event.preventDefault();\n window.open(link.href, \"fidj-agreement\", \"popup,width=640,height=720,left=40,top=40,noopener\");\n });\n });\n };\n // The passkey ceremony, on a page that may not fetch: the options came with\n // the page, the answer leaves with the form.\n const fromB64url = (value) => {\n const base64 = value.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const bytes = atob(base64 + \"===\".slice((base64.length + 3) % 4));\n return Uint8Array.from(bytes, (c) => c.charCodeAt(0)).buffer;\n };\n const toB64url = (buffer) =>\n btoa(String.fromCharCode(...new Uint8Array(buffer))).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n const bindPasskey = (root) => {\n const button = root.querySelector('button[value=\"passkey\"][data-passkey-options]');\n if (!button) return;\n if (!window.PublicKeyCredential || !navigator.credentials) {\n button.hidden = true;\n return;\n }\n button.addEventListener(\"click\", async (event) => {\n event.preventDefault();\n const form = button.form;\n const options = JSON.parse(button.dataset.passkeyOptions);\n const publicKey = {\n ...options,\n challenge: fromB64url(options.challenge),\n allowCredentials: (options.allowCredentials || []).map((c) => ({ ...c, id: fromB64url(c.id) })),\n };\n try {\n const credential = await navigator.credentials.get({ publicKey });\n const r = credential.response;\n form.querySelector('input[name=\"passkey\"]').value = JSON.stringify({\n id: credential.id,\n rawId: toB64url(credential.rawId),\n type: credential.type,\n response: {\n clientDataJSON: toB64url(r.clientDataJSON),\n authenticatorData: toB64url(r.authenticatorData),\n signature: toB64url(r.signature),\n userHandle: r.userHandle ? toB64url(r.userHandle) : undefined,\n },\n clientExtensionResults: {},\n });\n const action = document.createElement(\"input\");\n action.type = \"hidden\";\n action.name = \"action\";\n action.value = \"passkey\";\n form.append(action);\n form.querySelectorAll(\"[required]\").forEach((field) => field.removeAttribute(\"required\"));\n form.submit();\n } catch (e) {\n // Cancelled or refused by the device: the email form is still there.\n }\n });\n };\n bindPasswordReveal(document);\n bindPasskey(document);\n bindAgreement(document);\n bindAgreementWindow(document);\n})();";
|
|
24
28
|
export declare function oidcInteractionPage(page: OidcInteractionPage): string;
|
package/server.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { agreementModel, credentialsModel, returnNoticeModel, } from "./model.js";
|
|
1
|
+
import { agreementModel, credentialsModel, emailDividerLabel, passkeyDoorModel, returnNoticeModel, } from "./model.js";
|
|
2
2
|
import { escape } from "./dom.js";
|
|
3
3
|
export const oidcInteractionScript = `(() => {
|
|
4
4
|
const bindPasswordReveal = (root) => {
|
|
@@ -28,15 +28,71 @@ export const oidcInteractionScript = `(() => {
|
|
|
28
28
|
});
|
|
29
29
|
});
|
|
30
30
|
};
|
|
31
|
+
// The passkey ceremony, on a page that may not fetch: the options came with
|
|
32
|
+
// the page, the answer leaves with the form.
|
|
33
|
+
const fromB64url = (value) => {
|
|
34
|
+
const base64 = value.replace(/-/g, "+").replace(/_/g, "/");
|
|
35
|
+
const bytes = atob(base64 + "===".slice((base64.length + 3) % 4));
|
|
36
|
+
return Uint8Array.from(bytes, (c) => c.charCodeAt(0)).buffer;
|
|
37
|
+
};
|
|
38
|
+
const toB64url = (buffer) =>
|
|
39
|
+
btoa(String.fromCharCode(...new Uint8Array(buffer))).replace(/\\+/g, "-").replace(/\\//g, "_").replace(/=+$/, "");
|
|
40
|
+
const bindPasskey = (root) => {
|
|
41
|
+
const button = root.querySelector('button[value="passkey"][data-passkey-options]');
|
|
42
|
+
if (!button) return;
|
|
43
|
+
if (!window.PublicKeyCredential || !navigator.credentials) {
|
|
44
|
+
button.hidden = true;
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
button.addEventListener("click", async (event) => {
|
|
48
|
+
event.preventDefault();
|
|
49
|
+
const form = button.form;
|
|
50
|
+
const options = JSON.parse(button.dataset.passkeyOptions);
|
|
51
|
+
const publicKey = {
|
|
52
|
+
...options,
|
|
53
|
+
challenge: fromB64url(options.challenge),
|
|
54
|
+
allowCredentials: (options.allowCredentials || []).map((c) => ({ ...c, id: fromB64url(c.id) })),
|
|
55
|
+
};
|
|
56
|
+
try {
|
|
57
|
+
const credential = await navigator.credentials.get({ publicKey });
|
|
58
|
+
const r = credential.response;
|
|
59
|
+
form.querySelector('input[name="passkey"]').value = JSON.stringify({
|
|
60
|
+
id: credential.id,
|
|
61
|
+
rawId: toB64url(credential.rawId),
|
|
62
|
+
type: credential.type,
|
|
63
|
+
response: {
|
|
64
|
+
clientDataJSON: toB64url(r.clientDataJSON),
|
|
65
|
+
authenticatorData: toB64url(r.authenticatorData),
|
|
66
|
+
signature: toB64url(r.signature),
|
|
67
|
+
userHandle: r.userHandle ? toB64url(r.userHandle) : undefined,
|
|
68
|
+
},
|
|
69
|
+
clientExtensionResults: {},
|
|
70
|
+
});
|
|
71
|
+
const action = document.createElement("input");
|
|
72
|
+
action.type = "hidden";
|
|
73
|
+
action.name = "action";
|
|
74
|
+
action.value = "passkey";
|
|
75
|
+
form.append(action);
|
|
76
|
+
form.querySelectorAll("[required]").forEach((field) => field.removeAttribute("required"));
|
|
77
|
+
form.submit();
|
|
78
|
+
} catch (e) {
|
|
79
|
+
// Cancelled or refused by the device: the email form is still there.
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
};
|
|
31
83
|
bindPasswordReveal(document);
|
|
84
|
+
bindPasskey(document);
|
|
32
85
|
bindAgreement(document);
|
|
33
86
|
bindAgreementWindow(document);
|
|
34
87
|
})();`;
|
|
35
88
|
const baseStyles = `*{box-sizing:border-box}body{margin:0;padding:24px;font:16px system-ui;color:#153e37;background:#f3f6f1}main{width:min(100%,720px);min-height:calc(100vh - 48px);margin:0 auto;overflow:hidden;border:1px solid #b9ccc0;border-radius:20px;background:white}.oidc-brand{display:flex;align-items:center;gap:16px;padding:18px 28px;background:#173e36;color:white}.oidc-brand img{width:48px;height:48px}.oidc-brand p{margin:0;font-size:21px;font-weight:700;line-height:1.08}section{padding:32px 36px 40px}section>h1{margin:0 0 10px;font-size:30px;line-height:1.15}section>p{line-height:1.45}form{margin-top:24px}label{display:block;margin:20px 0 8px}input,button{width:100%;padding:14px;border:1px solid #b9ccc0;border-radius:10px;font:inherit}button{margin-top:14px;background:#173e36;color:white;cursor:pointer;font-weight:600}.secondary{background:white;color:#173e36}.cancel{border-color:transparent;background:transparent}.notice{margin:0 0 4px;padding:12px 14px;border:1px solid #ef4b42;background:#fdecea;color:#8a1c16;border-radius:8px}.return{margin:0;font-size:14px;color:#3f5c52}.field-head,.password-field{display:flex;align-items:flex-end;gap:12px}.field-head{justify-content:space-between}.field-head label{margin-bottom:0}.field-link{font-size:14px;color:#3f5c52}.password-field input{flex:1}.password-field button{width:auto;margin-top:0}.account-picker{display:grid;grid-template-columns:44px minmax(0,1fr) 24px;align-items:center;gap:12px;padding:12px 14px;border:1px solid #b9ccc0;border-radius:12px;background:#f3f6f1}.account-avatar{display:grid;width:44px;height:44px;place-items:center;border-radius:50%;background:#173e36;color:white;font-size:18px;font-weight:700}.account-copy{display:flex;min-width:0;flex-direction:column;gap:2px}.account-copy small{font-size:12px;color:#3f5c52}.account-email{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-check{font-size:20px;font-weight:700}.permission-title{margin:22px 0 8px;font-weight:600}.permission-list{margin:0;padding:12px 14px 12px 36px;border:1px solid #b9ccc0;border-radius:12px}.permission-list li{padding:3px 0}.account-switch{text-align:left}.agreement-choice{display:flex;align-items:flex-start;gap:10px;margin:20px 0 8px}.agreement-choice input{width:auto}.fineprint{margin:6px 0;font-size:14px;color:#3f5c52}.agreement-link{display:inline-block;margin:2px 0 8px;color:#173e36;font-weight:600}@media(max-width:700px){body{padding:0}main{min-height:100vh;border:0;border-radius:0}.oidc-brand{padding:16px 24px}.oidc-brand img{width:44px;height:44px}.oidc-brand p{font-size:19px}section{padding:26px 24px 34px}section>h1{font-size:26px}}`;
|
|
36
|
-
const styles = `${baseStyles}button:disabled{border-color:#d4d9d5;background:#d4d9d5;color:#778079;cursor:not-allowed}.agreement-choice a{color:#173e36;font-weight:600}`;
|
|
89
|
+
const styles = `${baseStyles}.divider{display:flex;align-items:center;gap:12px;margin:22px 0 0;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#3f5c52}.divider::before,.divider::after{content:"";flex:1;height:1px;background:#b9ccc0}button:disabled{border-color:#d4d9d5;background:#d4d9d5;color:#778079;cursor:not-allowed}.agreement-choice a{color:#173e36;font-weight:600}`;
|
|
90
|
+
const passkeyDoor = (page) => page.passkey
|
|
91
|
+
? `<button class="passkey" name="action" value="${escape(passkeyDoorModel.value)}" data-passkey-options="${escape(JSON.stringify(page.passkey.options))}" formnovalidate>${escape(passkeyDoorModel.label)}</button><input type="hidden" name="passkeyTicket" value="${escape(page.passkey.ticket)}"><input type="hidden" name="passkey" value=""><p class="divider"><span>${escape(emailDividerLabel)}</span></p>`
|
|
92
|
+
: "";
|
|
37
93
|
const loginFields = (page) => {
|
|
38
94
|
const model = credentialsModel({ email: page.email || "", password: "" });
|
|
39
|
-
return
|
|
95
|
+
return `${passkeyDoor(page)}<label for="email">${escape(model.email.label)}</label><input id="email" type="email" name="email" value="${escape(model.email.value)}" autocomplete="username" required><div class="field-head"><label for="password">${escape(model.password.label)}</label>${page.forgotHref ? `<a class="field-link" href="${escape(page.forgotHref)}">${escape(model.forgot.label)}</a>` : ""}</div><div class="password-field"><input id="password" type="password" name="password" autocomplete="current-password" required><button type="button" aria-controls="password">${escape(model.reveal.label)}</button></div><button name="action" value="continue">Sign in</button><button class="secondary" name="action" value="signup">Create a Fidj account</button>${page.googleEnabled ? '<button class="secondary" name="action" value="google" formnovalidate>Continue with linked Google account</button>' : ""}<button class="secondary" name="action" value="cancel" formnovalidate>Cancel</button>`;
|
|
40
96
|
};
|
|
41
97
|
const waitFields = (page) => {
|
|
42
98
|
const state = page.notYet
|
|
@@ -55,10 +111,7 @@ const consentFields = (page) => {
|
|
|
55
111
|
const agreementChoice = page.agreement && page.agreementHref
|
|
56
112
|
? `<label class="agreement-choice"><input type="checkbox" name="terms" value="true" required> <span>I accept the <a class="agreement-document" href="${escape(page.agreementHref)}" target="fidj-agreement" rel="noopener">service agreement · version ${escape(page.agreement.version)} ↗</a></span></label>`
|
|
57
113
|
: `<label class="agreement-choice"><input type="checkbox" name="terms" value="true" required> ${escape(agreement.checkboxLabel)}</label>`;
|
|
58
|
-
|
|
59
|
-
? `<div class="agreement-text" tabindex="0">${escape(agreement.text)}</div>`
|
|
60
|
-
: "";
|
|
61
|
-
return `${identity}<p class="permission-title">${escape(page.appTitle)} will receive:</p><ul class="permission-list">${(page.scopes || []).map((scope) => `<li>${escape(scope)}</li>`).join("")}</ul>${agreementText}${agreementChoice}<button name="action" value="continue" disabled>Allow and continue</button><button class="secondary account-switch" name="action" value="switch" formnovalidate>Use another account</button><button class="cancel" name="action" value="cancel" formnovalidate>Cancel</button><script src="/oidc/assets/entry.js" defer></script>`;
|
|
114
|
+
return `${identity}<p class="permission-title">${escape(page.appTitle)} will receive:</p><ul class="permission-list">${(page.scopes || []).map((scope) => `<li>${escape(scope)}</li>`).join("")}</ul>${agreementChoice}<button name="action" value="continue" disabled>Allow and continue</button><button class="secondary account-switch" name="action" value="switch" formnovalidate>Use another account</button><button class="cancel" name="action" value="cancel" formnovalidate>Cancel</button><script src="/oidc/assets/entry.js" defer></script>`;
|
|
62
115
|
};
|
|
63
116
|
export function oidcInteractionPage(page) {
|
|
64
117
|
const waiting = page.mode === "waiting";
|
|
@@ -80,4 +133,4 @@ export function oidcInteractionPage(page) {
|
|
|
80
133
|
: consentFields(page);
|
|
81
134
|
return `<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>${waiting ? "Check your email" : login ? "Sign in" : "Authorize"} · Fidj</title><style>${styles}</style><main><header class="oidc-brand"><img src="/oidc/assets/logo.png" alt="Fidj" width="58" height="58"><p>Your identity.<br>Your choices.</p></header><section><h1>${heading}</h1>${lead ? `<p>${lead}</p>` : ""}<p class="return">${escape(returnNoticeModel(page.appTitle))}</p>${waiting || !page.notice ? "" : `<p class="notice" role="alert">${escape(page.notice)}</p>`}<form method="post" action="${escape(page.action)}"><input type="hidden" name="csrf" value="${escape(page.csrf)}">${fields}</form><p><small>Fidj never shares your password with the app.</small></p></section></main>${login ? '<script src="/oidc/assets/entry.js" defer></script>' : ""}</html>`;
|
|
82
135
|
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsY0FBYyxFQUNkLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUNsQixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBeUJsQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Bb0YvQixDQUFDO0FBRVAsTUFBTSxVQUFVLEdBQUcscWtGQUFxa0YsQ0FBQztBQUN6bEYsTUFBTSxNQUFNLEdBQUcsR0FBRyxVQUFVLDJXQUEyVyxDQUFDO0FBRXhZLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBeUIsRUFBRSxFQUFFLENBQ2hELElBQUksQ0FBQyxPQUFPO0lBQ1YsQ0FBQyxDQUFDLGdEQUFnRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLDJCQUEyQixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLG9CQUFvQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLDZEQUE2RCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsMkVBQTJFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhO0lBQ2xaLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFFVCxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQXlCLEVBQUUsRUFBRTtJQUNoRCxNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRSxRQUFR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
|
package/style.css
CHANGED
|
@@ -153,7 +153,13 @@ main {
|
|
|
153
153
|
height: 22px;
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
-
|
|
156
|
+
/* Field captions. Scoped away from a mounted module, because this stylesheet
|
|
157
|
+
* belongs to the whole document and the console mounts inside it: an element
|
|
158
|
+
* selector on `label` reached the console's own row titles and printed them in
|
|
159
|
+
* mono small-caps. `.has-module` is the hook the shell already sets when it
|
|
160
|
+
* hands the document to an app — the comment above it says nothing of the
|
|
161
|
+
* shell's layout should reach the app, and its typography is no different. */
|
|
162
|
+
body:not(.has-module) label {
|
|
157
163
|
display: block;
|
|
158
164
|
font-family: var(--fidj-font-mono);
|
|
159
165
|
font-size: 11px;
|
|
@@ -778,6 +784,48 @@ body.has-module {
|
|
|
778
784
|
max-width: 680px;
|
|
779
785
|
margin: 2rem auto;
|
|
780
786
|
}
|
|
787
|
+
.profile-summary {
|
|
788
|
+
display: flex;
|
|
789
|
+
align-items: center;
|
|
790
|
+
gap: 12px;
|
|
791
|
+
margin-bottom: 12px;
|
|
792
|
+
padding: 14px 16px;
|
|
793
|
+
border: 1px solid var(--fidj-line-soft);
|
|
794
|
+
border-radius: var(--fidj-radius);
|
|
795
|
+
background: var(--fidj-surface);
|
|
796
|
+
}
|
|
797
|
+
.profile-summary-copy {
|
|
798
|
+
display: grid;
|
|
799
|
+
min-width: 0;
|
|
800
|
+
margin-right: auto;
|
|
801
|
+
gap: 2px;
|
|
802
|
+
}
|
|
803
|
+
.profile-summary-copy strong,
|
|
804
|
+
.profile-summary-copy span {
|
|
805
|
+
overflow: hidden;
|
|
806
|
+
text-overflow: ellipsis;
|
|
807
|
+
white-space: nowrap;
|
|
808
|
+
}
|
|
809
|
+
.profile-summary-copy > span:last-child {
|
|
810
|
+
color: var(--fidj-text-faint);
|
|
811
|
+
font-size: 13px;
|
|
812
|
+
}
|
|
813
|
+
.profile-public {
|
|
814
|
+
display: flex;
|
|
815
|
+
flex: 0 0 auto;
|
|
816
|
+
margin: 0;
|
|
817
|
+
}
|
|
818
|
+
.profile-public img {
|
|
819
|
+
display: block;
|
|
820
|
+
}
|
|
821
|
+
.profile-summary .danger {
|
|
822
|
+
flex: 0 0 auto;
|
|
823
|
+
color: var(--fidj-danger);
|
|
824
|
+
border-color: var(--fidj-danger);
|
|
825
|
+
}
|
|
826
|
+
.profile-body {
|
|
827
|
+
margin: 0;
|
|
828
|
+
}
|
|
781
829
|
.content-account button {
|
|
782
830
|
margin: 0.4rem 0.4rem 0.4rem 0;
|
|
783
831
|
}
|
|
@@ -789,6 +837,8 @@ body.has-module {
|
|
|
789
837
|
* sit in the page under a bar that carried only a name, which read as two
|
|
790
838
|
* headers for one app and put the way out a scroll away from the way in. */
|
|
791
839
|
.topbar .content-nav {
|
|
840
|
+
align-self: stretch;
|
|
841
|
+
align-items: stretch;
|
|
792
842
|
border: 0;
|
|
793
843
|
border-left: 1px solid var(--fidj-ink-line-soft);
|
|
794
844
|
border-radius: 0;
|
|
@@ -798,6 +848,9 @@ body.has-module {
|
|
|
798
848
|
flex-wrap: nowrap;
|
|
799
849
|
}
|
|
800
850
|
.topbar .content-nav button {
|
|
851
|
+
display: flex;
|
|
852
|
+
align-items: center;
|
|
853
|
+
height: 100%;
|
|
801
854
|
padding: 8px 12px;
|
|
802
855
|
font-size: 13.5px;
|
|
803
856
|
color: var(--fidj-on-ink-faint);
|
|
@@ -840,9 +893,50 @@ body.has-module {
|
|
|
840
893
|
* It gives way before the app's own name does. */
|
|
841
894
|
.topbar .content-nav #account-tab {
|
|
842
895
|
overflow: hidden;
|
|
843
|
-
text-overflow: ellipsis;
|
|
844
896
|
min-width: 0;
|
|
845
897
|
}
|
|
898
|
+
.topbar .content-nav .tab-label {
|
|
899
|
+
min-width: 0;
|
|
900
|
+
overflow: hidden;
|
|
901
|
+
text-overflow: ellipsis;
|
|
902
|
+
white-space: nowrap;
|
|
903
|
+
}
|
|
904
|
+
@media (max-width: 760px) {
|
|
905
|
+
.topbar {
|
|
906
|
+
gap: 7px;
|
|
907
|
+
padding-inline: 10px;
|
|
908
|
+
}
|
|
909
|
+
.topbar .brand-name {
|
|
910
|
+
display: none;
|
|
911
|
+
}
|
|
912
|
+
.topbar .content-nav {
|
|
913
|
+
min-width: 0;
|
|
914
|
+
padding-left: 0;
|
|
915
|
+
gap: 0;
|
|
916
|
+
border-left: 0;
|
|
917
|
+
}
|
|
918
|
+
.topbar .content-nav::before {
|
|
919
|
+
content: "";
|
|
920
|
+
align-self: center;
|
|
921
|
+
height: 24px;
|
|
922
|
+
margin-right: 8px;
|
|
923
|
+
border-left: 1px solid var(--fidj-ink-line-soft);
|
|
924
|
+
}
|
|
925
|
+
.topbar .content-nav button {
|
|
926
|
+
min-width: 0;
|
|
927
|
+
padding-inline: 6px;
|
|
928
|
+
font-size: 12px;
|
|
929
|
+
}
|
|
930
|
+
.topbar .content-nav #account-tab {
|
|
931
|
+
max-width: 15ch;
|
|
932
|
+
}
|
|
933
|
+
.profile-summary {
|
|
934
|
+
flex-wrap: wrap;
|
|
935
|
+
}
|
|
936
|
+
.profile-summary-copy {
|
|
937
|
+
flex-basis: calc(100% - 7rem);
|
|
938
|
+
}
|
|
939
|
+
}
|
|
846
940
|
.signin-logo {
|
|
847
941
|
width: 22px;
|
|
848
942
|
height: 22px;
|
|
@@ -1157,3 +1251,53 @@ button.quiet {
|
|
|
1157
1251
|
font-size: 13.5px;
|
|
1158
1252
|
line-height: 1.5;
|
|
1159
1253
|
}
|
|
1254
|
+
|
|
1255
|
+
/* v3: the passkey is the first door; the email form sits under a divider;
|
|
1256
|
+
the wallet is a dated promise, not a button. */
|
|
1257
|
+
.primary.passkey {
|
|
1258
|
+
width: 100%;
|
|
1259
|
+
padding: 14px;
|
|
1260
|
+
font-size: 15px;
|
|
1261
|
+
}
|
|
1262
|
+
|
|
1263
|
+
.entry-divider {
|
|
1264
|
+
display: flex;
|
|
1265
|
+
align-items: center;
|
|
1266
|
+
gap: 12px;
|
|
1267
|
+
margin: 22px 0;
|
|
1268
|
+
font-family: var(--fidj-font-mono);
|
|
1269
|
+
font-size: 10.5px;
|
|
1270
|
+
letter-spacing: 0.1em;
|
|
1271
|
+
text-transform: uppercase;
|
|
1272
|
+
color: var(--fidj-text-faint);
|
|
1273
|
+
}
|
|
1274
|
+
|
|
1275
|
+
.entry-divider::before,
|
|
1276
|
+
.entry-divider::after {
|
|
1277
|
+
content: "";
|
|
1278
|
+
flex: 1;
|
|
1279
|
+
height: 1px;
|
|
1280
|
+
background: var(--fidj-line-soft);
|
|
1281
|
+
}
|
|
1282
|
+
|
|
1283
|
+
.wallet-door {
|
|
1284
|
+
display: flex;
|
|
1285
|
+
align-items: center;
|
|
1286
|
+
gap: 10px;
|
|
1287
|
+
margin: 22px 0 0;
|
|
1288
|
+
padding: 10px 12px;
|
|
1289
|
+
border: 1px dashed var(--fidj-line-strong);
|
|
1290
|
+
font-size: 13px;
|
|
1291
|
+
color: var(--fidj-text-faint);
|
|
1292
|
+
}
|
|
1293
|
+
|
|
1294
|
+
.wallet-door .wallet-date {
|
|
1295
|
+
margin-left: auto;
|
|
1296
|
+
font-family: var(--fidj-font-mono);
|
|
1297
|
+
font-size: 10.5px;
|
|
1298
|
+
letter-spacing: 0.06em;
|
|
1299
|
+
text-transform: uppercase;
|
|
1300
|
+
border: 1px solid var(--fidj-line);
|
|
1301
|
+
padding: 3px 7px;
|
|
1302
|
+
white-space: nowrap;
|
|
1303
|
+
}
|