@atlasauth/solid 0.1.2 → 0.3.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/CHANGELOG.md +81 -0
- package/dist/accessors.d.ts +3 -2
- package/dist/accessors.js +1 -1
- package/dist/accessors.js.map +1 -1
- package/dist/provider.d.ts +18 -3
- package/dist/provider.js +66 -21
- package/dist/provider.js.map +1 -1
- package/dist/widgets.d.ts +5 -0
- package/dist/widgets.js +305 -38
- package/dist/widgets.js.map +1 -1
- package/package.json +4 -3
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# @atlasauth/solid changelog
|
|
2
|
+
|
|
3
|
+
## 0.3.0
|
|
4
|
+
Requires `@atlasauth/js` 0.8.0.
|
|
5
|
+
- **Safer sign-out.** `signOut(options?: SignOutOptions)` now resolves `SignOutResult`
|
|
6
|
+
(`{ revoked: boolean; activeSessionId?: string }`) instead of `void` — on `AtlasClient.signOut` and
|
|
7
|
+
`useAuth().signOut`. Existing `await signOut()` call sites keep working.
|
|
8
|
+
- The session is tombstoned (in `localStorage`, per Frontend API origin, shared by every tab) BEFORE the
|
|
9
|
+
revoke, which is retried once; a reload, a token refresh, a sibling tab or a tab opened later never
|
|
10
|
+
re-adopts a signed-out session from a refresh cookie the revoke did not clear. Such a revoke is re-tried
|
|
11
|
+
in the background, and the tombstone dropped once it lands.
|
|
12
|
+
- `revoked: false` — the server never confirmed the revoke; this browser is signed out regardless.
|
|
13
|
+
`{ strict: true }` rejects with a `SignOutError` (`code: 'SIGN_OUT_REVOKE_FAILED'`, `sessionId`, `status`)
|
|
14
|
+
in that case, after the local sign-out.
|
|
15
|
+
- `activeSessionId` — a parked session the server promoted on revoke; it is adopted.
|
|
16
|
+
- With no cached token the revoke still runs (the current session, or `GET /v1/client`, names it).
|
|
17
|
+
- Another tab signing out of this session now signs this tab out too.
|
|
18
|
+
- Built on `SignOutGuard` from `@atlasauth/js`; unmounting `<AtlasProvider>` stops its watch and cancels
|
|
19
|
+
pending background re-tries (it never revokes).
|
|
20
|
+
- **OAuth popup landing.** On boot the provider completes a popup landing whose opener a
|
|
21
|
+
Cross-Origin-Opener-Policy severed (`#atlas_popup_result=…`): the result is relayed to the opener and the
|
|
22
|
+
window closes, or — with no opener listening — its ticket is exchanged here (or the page moves to its
|
|
23
|
+
`continuationUrl`). After a successful ticket exchange inside the Atlas popup the opener is woken and the
|
|
24
|
+
popup closes (`closeOAuthPopupAfterSignIn`); an ordinary tab never closes.
|
|
25
|
+
- **Email delivery.** The prebuilt widgets read `emailDelivery` from the instance settings they load:
|
|
26
|
+
- `<SignUp>` shows a "can't send email" notice (new catalog key `signUp.emailUnavailable`, en-US text
|
|
27
|
+
"This app can't send email right now. Try another sign-in method or contact the app owner.") instead of
|
|
28
|
+
the email + password form when `passwordSignUp` is `false`.
|
|
29
|
+
- `<SignIn>`'s first-factor step now offers the server's strategies through `offeredFirstFactors`: a
|
|
30
|
+
password field when `password` is offered, and "Email me a code" / "Email me a sign-in link" when
|
|
31
|
+
`email_code` / `email_link` are offered and email can be delivered (hidden when `available` is `false`).
|
|
32
|
+
- **Added** `SIGN_UP_TEXT['signUp.emailUnavailable']`.
|
|
33
|
+
|
|
34
|
+
## 0.2.0
|
|
35
|
+
- **`<SignUp>` now creates accounts.** Its first step is a create-account form (the instance's
|
|
36
|
+
configured sign-up fields, email, password and the legal-consent row) that posts
|
|
37
|
+
`POST /v1/client/sign_ups`; the emailed-code step and the ticket exchange then run through the shared
|
|
38
|
+
flow. Previously `<SignUp>` rendered the sign-in identifier step and could not create an account.
|
|
39
|
+
- **Captcha renders automatically.** When the instance turns captcha on for a flow, `<SignUp>` and
|
|
40
|
+
`<SignIn>` show the provider's widget (Turnstile, hCaptcha, reCAPTCHA v2/v3/Enterprise) in the
|
|
41
|
+
configured mode (`visible`, `managed`, or `invisible` — run on submit), send its token as
|
|
42
|
+
`captcha_token`, answer the sign-in `needs_captcha` step (continuing as soon as it is solved), and on
|
|
43
|
+
`CAPTCHA_REQUIRED` / `CAPTCHA_FAILED` show a message and a fresh widget.
|
|
44
|
+
- **Changed:** the flow now shows field-scoped errors (e.g. a rejected password) as alerts too;
|
|
45
|
+
previously only form-level errors were shown. Inputs are re-created only when the step changes, so
|
|
46
|
+
typed values survive a refused submit.
|
|
47
|
+
- **Added** `SIGN_UP_TEXT` — the en-US strings of the create-account form and captcha, under the same
|
|
48
|
+
catalog keys as `@atlasauth/react`: `signUp.title`, `signUp.submit`, `signUp.emailLabel`,
|
|
49
|
+
`signUp.passwordLabel`, `signUp.optionalField`, `signUp.selectPlaceholder`, `signUp.consentAgree`,
|
|
50
|
+
`signUp.consentNotice`, `signUp.terms`, `signUp.privacy`, `signUp.and`, `captcha.prompt`,
|
|
51
|
+
`captcha.required`, `captcha.failed`.
|
|
52
|
+
- New element classes `atlas-captcha`, `atlas-consent`, `atlas-choices`, `atlas-choice`, `atlas-text`,
|
|
53
|
+
`atlas-link`.
|
|
54
|
+
- **`frontendApi` is validated at `<AtlasProvider>`.** A missing (or non-string) or malformed value now throws an
|
|
55
|
+
`AtlasConfigError` (from `@atlasauth/js`; `code: 'FRONTEND_API_REQUIRED'` or `'FRONTEND_API_INVALID'`)
|
|
56
|
+
instead of silently sending requests to relative URLs on the app's own origin. Accepted: an absolute
|
|
57
|
+
`https:` URL (`http:` only for localhost / local development hosts), or `"same-origin"` / a root-relative path such as `"/atlas"` for a reverse proxy.
|
|
58
|
+
- **Deprecated:** `frontendApi: ""` (the original same-origin spelling) still works as same-origin, with a
|
|
59
|
+
one-time console warning; use `"same-origin"` instead.
|
|
60
|
+
|
|
61
|
+
## 0.1.2
|
|
62
|
+
|
|
63
|
+
### Added
|
|
64
|
+
- `signOut()` now runs OIDC front-channel logout before clearing local state: the front-channel logout URLs returned when the session is revoked are loaded in hidden iframes (up to 5 seconds), so other apps signed in through the session are signed out in this browser too. Pass `signOut({ frontchannel: false })` to skip it. `signOut` on `AtlasClient` and `useAuth()` now accepts an optional `SignOutOptions`.
|
|
65
|
+
|
|
66
|
+
## 0.1.1
|
|
67
|
+
|
|
68
|
+
### Added
|
|
69
|
+
- `useAuth()` now also returns `status()` (`loading` | `signed_in` | `signed_out`) and `session()` (the active session, or `null`) accessors alongside `isLoaded` / `isSignedIn`.
|
|
70
|
+
|
|
71
|
+
## 0.1.0
|
|
72
|
+
|
|
73
|
+
First published release.
|
|
74
|
+
|
|
75
|
+
### Added
|
|
76
|
+
- `AtlasProvider` and `createAtlasClient()` for SolidJS, built on `@atlasauth/js`.
|
|
77
|
+
- Reactive accessors: `useAuth()`, `useUser()`, `useSession()` and `useAtlas()`.
|
|
78
|
+
- Guards: `SignedIn`, `SignedOut`, `AtlasLoading`, `AtlasLoaded` and `Protect`.
|
|
79
|
+
- Mountable `SignIn`, `SignUp` and `UserButton` components, plus `mountSignInWidget()`, `mountSignUpWidget()` and `mountUserButtonWidget()`.
|
|
80
|
+
- Types `AtlasUser`, `AtlasSession`, `SessionClaims`, `AuthStatus` and `AtlasState`.
|
|
81
|
+
|
package/dist/accessors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ProtectCondition, type ProviderToken, type SignOutOptions } from '@atlasauth/js';
|
|
1
|
+
import { type ProtectCondition, type ProviderToken, type SignOutOptions, type SignOutResult } from '@atlasauth/js';
|
|
2
2
|
import type { AuthStatus } from './provider';
|
|
3
3
|
import type { AtlasSession, AtlasUser } from './types';
|
|
4
4
|
/**
|
|
@@ -39,7 +39,8 @@ export declare function useAuth(): {
|
|
|
39
39
|
orgRole: () => string | null;
|
|
40
40
|
getToken: () => Promise<string | null>;
|
|
41
41
|
getProviderToken: (provider: string) => Promise<ProviderToken | null>;
|
|
42
|
-
|
|
42
|
+
/** Resolves `{ revoked, activeSessionId? }`; see `AtlasClient.signOut`. */
|
|
43
|
+
signOut: (options?: SignOutOptions) => Promise<SignOutResult>;
|
|
43
44
|
/** Mirrors `<Protect>`, for logic that is not a render decision. */
|
|
44
45
|
has: (condition: ProtectCondition) => boolean;
|
|
45
46
|
};
|
package/dist/accessors.js
CHANGED
package/dist/accessors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accessors.js","sourceRoot":"","sources":["../src/accessors.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"accessors.js","sourceRoot":"","sources":["../src/accessors.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,GAKT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAIrC;;;;;;;;;GASG;AAEH,MAAM,UAAU,OAAO;IAWrB,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC1B,OAAO;QACL,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS;QACjD,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW;QACrD,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;QAC7B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;KAC1C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU;IAIxB,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC1B,OAAO;QACL,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS;QACjD,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO;IAkBrB,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC1B,OAAO;QACL,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS;QACjD,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW;QACrD,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;QACjC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;QACnC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI;QAC9C,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI;QACjD,KAAK,EAAE,GAAG,EAAE,CAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAA6B,IAAI,IAAI;QACxE,OAAO,EAAE,GAAG,EAAE,CAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,QAA+B,IAAI,IAAI;QAC5E,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,OAAO;KACrE,CAAC;AACJ,CAAC"}
|
package/dist/provider.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type JSX } from 'solid-js';
|
|
2
|
-
import { type ProviderToken, type SignOutOptions } from '@atlasauth/js';
|
|
2
|
+
import { type ProviderToken, type SignOutOptions, type SignOutResult } from '@atlasauth/js';
|
|
3
3
|
import type { AtlasOrganizationMembership, AtlasSession, AtlasUser, SessionClaims } from './types';
|
|
4
4
|
/**
|
|
5
5
|
* The Solid peer of React's `<AtlasProvider>` and Vue's `createAtlas()` plugin.
|
|
@@ -54,7 +54,15 @@ export interface AtlasClient {
|
|
|
54
54
|
* is never exposed.
|
|
55
55
|
*/
|
|
56
56
|
getProviderToken(provider: string): Promise<ProviderToken | null>;
|
|
57
|
-
|
|
57
|
+
/**
|
|
58
|
+
* Sign out of the current session. Resolves `{ revoked, activeSessionId? }`:
|
|
59
|
+
* `revoked: false` means the server never confirmed the revoke (this browser
|
|
60
|
+
* is signed out regardless, and never re-adopts the session); with
|
|
61
|
+
* `{ strict: true }` that case rejects with a `SignOutError` instead, after
|
|
62
|
+
* the local sign-out. `activeSessionId` is a parked session the server
|
|
63
|
+
* promoted, which is adopted.
|
|
64
|
+
*/
|
|
65
|
+
signOut(options?: SignOutOptions): Promise<SignOutResult>;
|
|
58
66
|
setActiveOrganization(organizationId: string | null): Promise<void>;
|
|
59
67
|
reload(): Promise<void>;
|
|
60
68
|
/**
|
|
@@ -71,7 +79,14 @@ export interface AtlasClient {
|
|
|
71
79
|
}
|
|
72
80
|
export interface AtlasProviderProps {
|
|
73
81
|
publishableKey: string;
|
|
74
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* The instance's Frontend API: an absolute URL such as
|
|
84
|
+
* `"https://auth.example.com"`, or `"same-origin"` / a path such as `"/atlas"`
|
|
85
|
+
* behind a reverse proxy on the app's own origin. Required at runtime — a
|
|
86
|
+
* missing or malformed value throws an `AtlasConfigError`
|
|
87
|
+
* (`FRONTEND_API_REQUIRED` / `FRONTEND_API_INVALID`). Optional in the type
|
|
88
|
+
* only so existing call sites keep compiling.
|
|
89
|
+
*/
|
|
75
90
|
frontendApi?: string;
|
|
76
91
|
/** Injected in tests to drive the client through a mocked network. */
|
|
77
92
|
fetchImpl?: typeof fetch;
|
package/dist/provider.js
CHANGED
|
@@ -2,7 +2,7 @@ import { onCleanup, onMount } from 'solid-js';
|
|
|
2
2
|
import { createStore } from 'solid-js/store';
|
|
3
3
|
import { isServer } from 'solid-js/web';
|
|
4
4
|
import { h } from './h';
|
|
5
|
-
import { FapiClient, TokenCache, getProviderToken as fetchProviderToken, msUntilRefresh, readExpiry, readRedirectResult,
|
|
5
|
+
import { FapiClient, SignOutGuard, TokenCache, closeOAuthPopupAfterSignIn, completeOAuthPopupLanding, getProviderToken as fetchProviderToken, mapOAuthPopupPayload, msUntilRefresh, readExpiry, readRedirectResult, resolveFrontendApi, stripRedirectParams, } from '@atlasauth/js';
|
|
6
6
|
import { AtlasContext } from './context';
|
|
7
7
|
import { mountSignInWidget, mountSignUpWidget, mountUserButtonWidget } from './widgets';
|
|
8
8
|
/**
|
|
@@ -12,7 +12,9 @@ import { mountSignInWidget, mountSignUpWidget, mountUserButtonWidget } from './w
|
|
|
12
12
|
*/
|
|
13
13
|
export function createAtlasClient(options) {
|
|
14
14
|
const publishableKey = options.publishableKey;
|
|
15
|
-
|
|
15
|
+
// Throws on a missing/invalid value rather than quietly sending every request
|
|
16
|
+
// to a relative path on the app's origin.
|
|
17
|
+
const baseUrl = resolveFrontendApi(options.frontendApi, { component: '<AtlasProvider>' });
|
|
16
18
|
const doFetch = options.fetchImpl ?? fetch;
|
|
17
19
|
const [state, setState] = createStore({
|
|
18
20
|
status: 'loading',
|
|
@@ -44,7 +46,16 @@ export function createAtlasClient(options) {
|
|
|
44
46
|
...init?.headers,
|
|
45
47
|
},
|
|
46
48
|
});
|
|
49
|
+
// Sessions this browser signed out of (shared by every tab, per Frontend
|
|
50
|
+
// API): never re-adopted from a still-valid refresh cookie, even when the
|
|
51
|
+
// revoke did not reach the server — not by a reload or refresh, nor by a tab
|
|
52
|
+
// opened later. The guard also re-tries such a revoke in the background.
|
|
53
|
+
const guard = new SignOutGuard({ request: call, frontendApi: baseUrl });
|
|
47
54
|
const applyToken = (jwt, sessionId) => {
|
|
55
|
+
// A refresh that was in flight when the user signed out must not put the
|
|
56
|
+
// signed-out session's token back.
|
|
57
|
+
if (guard.isSignedOut(sessionId))
|
|
58
|
+
return;
|
|
48
59
|
const expiresAt = readExpiry(jwt);
|
|
49
60
|
if (!expiresAt)
|
|
50
61
|
return;
|
|
@@ -73,7 +84,11 @@ export function createAtlasClient(options) {
|
|
|
73
84
|
if (!response.ok)
|
|
74
85
|
throw new Error('boot failed');
|
|
75
86
|
const body = (await response.json());
|
|
76
|
-
|
|
87
|
+
// A session this browser signed out of (the revoke never landed, so the
|
|
88
|
+
// refresh cookie still works): stay signed out; the guard re-tries the
|
|
89
|
+
// revoke in the background and drops the tombstone once it lands.
|
|
90
|
+
const refused = !!body.session && guard.refuse(body.session.id);
|
|
91
|
+
if (!body.session || !body.user || refused) {
|
|
77
92
|
cache.clear();
|
|
78
93
|
setState({ status: 'signed_out', user: null, session: null, claims: null, memberships: [] });
|
|
79
94
|
scheduleRefresh();
|
|
@@ -130,19 +145,17 @@ export function createAtlasClient(options) {
|
|
|
130
145
|
const fapiClient = new FapiClient({ publishableKey, baseUrl, fetchImpl: doFetch });
|
|
131
146
|
const getProviderToken = (provider) => fetchProviderToken(fapiClient, provider);
|
|
132
147
|
const signOut = async (options) => {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}).catch(() => undefined);
|
|
138
|
-
// OIDC Front-Channel Logout: let the apps signed in through this session
|
|
139
|
-
// clear theirs in this browser (hidden iframes, capped at 5 s). Best-effort.
|
|
140
|
-
if (options?.frontchannel !== false)
|
|
141
|
-
await runFrontChannelLogoutFromResponse(revoked);
|
|
142
|
-
}
|
|
148
|
+
// Tombstone → revoke (retried once) → front-channel logout. With no cached
|
|
149
|
+
// token (a boot that carried no JWT) the store's session, or failing that
|
|
150
|
+
// `GET /v1/client`, names the session — the revoke works from the cookies.
|
|
151
|
+
const attempt = await guard.revoke(cache.peek()?.sessionId ?? state.session?.id ?? null, options);
|
|
143
152
|
cache.clear();
|
|
144
153
|
setState({ status: 'signed_out', user: null, session: null, claims: null, memberships: [] });
|
|
145
154
|
scheduleRefresh();
|
|
155
|
+
// The server promoted a parked session on revoke: adopt it.
|
|
156
|
+
if (guard.promoted(attempt))
|
|
157
|
+
await reload();
|
|
158
|
+
return guard.settle(attempt, options);
|
|
146
159
|
};
|
|
147
160
|
const setActiveOrganization = async (organizationId) => {
|
|
148
161
|
const current = cache.peek();
|
|
@@ -168,19 +181,41 @@ export function createAtlasClient(options) {
|
|
|
168
181
|
* boots signed-out — exactly as intended.
|
|
169
182
|
*/
|
|
170
183
|
const boot = async () => {
|
|
171
|
-
const
|
|
172
|
-
|
|
173
|
-
|
|
184
|
+
const browser = !isServer && typeof window !== 'undefined';
|
|
185
|
+
const fromUrl = browser ? readRedirectResult(window.location.search) : null;
|
|
186
|
+
let result = fromUrl;
|
|
187
|
+
// This page may be the landing of a sign-in popup whose opener a
|
|
188
|
+
// Cross-Origin-Opener-Policy severed (`#atlas_popup_result=…`): relay the
|
|
189
|
+
// result to the opener and close. When no opener takes it (its tab is
|
|
190
|
+
// gone), finish the sign-in here like a redirect.
|
|
191
|
+
const landing = browser ? await completeOAuthPopupLanding().catch(() => null) : null;
|
|
192
|
+
if (landing && !landing.delivered) {
|
|
193
|
+
const outcome = mapOAuthPopupPayload(landing.payload);
|
|
194
|
+
if (outcome?.ticket && outcome.attemptId) {
|
|
195
|
+
result = { attemptId: outcome.attemptId, ticket: outcome.ticket };
|
|
196
|
+
}
|
|
197
|
+
else if (outcome?.continuationUrl) {
|
|
198
|
+
// A second factor / connect / provider error: the redirect flow's page.
|
|
199
|
+
window.location.replace(outcome.continuationUrl);
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
let exchanged = false;
|
|
174
204
|
if (result?.ticket) {
|
|
175
|
-
await call('/v1/client/tickets/exchange', {
|
|
205
|
+
const response = await call('/v1/client/tickets/exchange', {
|
|
176
206
|
method: 'POST',
|
|
177
207
|
body: JSON.stringify({ attempt_id: result.attemptId, ticket: result.ticket }),
|
|
178
208
|
}).catch(() => undefined);
|
|
209
|
+
exchanged = !!response?.ok;
|
|
179
210
|
}
|
|
180
|
-
if (
|
|
211
|
+
if (fromUrl && browser) {
|
|
181
212
|
window.history.replaceState({}, document.title, stripRedirectParams(window.location.href));
|
|
182
213
|
}
|
|
183
214
|
await reload();
|
|
215
|
+
// Signed in inside the Atlas popup: hand back to the waiting opener and
|
|
216
|
+
// close (a no-op in an ordinary tab).
|
|
217
|
+
if (exchanged)
|
|
218
|
+
void closeOAuthPopupAfterSignIn();
|
|
184
219
|
};
|
|
185
220
|
// `client` is referenced inside the mount seams; the arrows only run once the
|
|
186
221
|
// `const` is initialised, so the self-reference is sound.
|
|
@@ -198,14 +233,23 @@ export function createAtlasClient(options) {
|
|
|
198
233
|
mountSignUp: (el) => mountSignUpWidget(client, el),
|
|
199
234
|
mountUserButton: (el) => mountUserButtonWidget(client, el),
|
|
200
235
|
};
|
|
201
|
-
//
|
|
202
|
-
//
|
|
236
|
+
// Another tab signed out of THIS session (its tombstone reached the shared
|
|
237
|
+
// store): drop the token and re-check, which refuses the session.
|
|
238
|
+
const stopWatching = guard.watch(() => state.session?.id ?? cache.peek()?.sessionId, () => {
|
|
239
|
+
cache.clear();
|
|
240
|
+
void reload();
|
|
241
|
+
});
|
|
242
|
+
// Clear the refresh timer, the sibling-tab watch and any scheduled background
|
|
243
|
+
// revoke re-try WITHOUT revoking the session — the provider calls this on
|
|
244
|
+
// unmount. `signOut()` would log the user out server-side, which is
|
|
203
245
|
// emphatically not what unmounting a React/Vue/Solid tree should do.
|
|
204
246
|
const dispose = () => {
|
|
205
247
|
if (timer) {
|
|
206
248
|
clearTimeout(timer);
|
|
207
249
|
timer = null;
|
|
208
250
|
}
|
|
251
|
+
stopWatching();
|
|
252
|
+
guard.dispose();
|
|
209
253
|
};
|
|
210
254
|
return { client, boot, dispose };
|
|
211
255
|
}
|
|
@@ -225,7 +269,8 @@ export function AtlasProvider(props) {
|
|
|
225
269
|
onMount(() => {
|
|
226
270
|
void boot();
|
|
227
271
|
});
|
|
228
|
-
// The client's refresh timer
|
|
272
|
+
// The client's refresh timer, sibling-tab watch and background revoke
|
|
273
|
+
// re-tries outlive a render; drop them (stop + dispose the sign-out guard)
|
|
229
274
|
// when the provider unmounts so a torn-down app does not keep polling.
|
|
230
275
|
onCleanup(dispose);
|
|
231
276
|
}
|
package/dist/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAY,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,UAAU,EACV,UAAU,EACV,gBAAgB,IAAI,kBAAkB,EACtC,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
|
package/dist/widgets.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { type JSX } from 'solid-js';
|
|
2
2
|
import type { AtlasClient } from './provider';
|
|
3
|
+
/**
|
|
4
|
+
* The en-US strings of the create-account form and the captcha, under the same
|
|
5
|
+
* catalog keys `@atlasauth/react` uses (`@atlasauth/localizations`).
|
|
6
|
+
*/
|
|
7
|
+
export declare const SIGN_UP_TEXT: Record<string, string>;
|
|
3
8
|
export declare function mountSignInWidget(client: AtlasClient, el: HTMLElement): () => void;
|
|
4
9
|
export declare function mountSignUpWidget(client: AtlasClient, el: HTMLElement): () => void;
|
|
5
10
|
export declare function mountUserButtonWidget(client: AtlasClient, el: HTMLElement): () => void;
|
package/dist/widgets.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Show, createEffect, createSignal, onCleanup, onMount } from 'solid-js';
|
|
1
|
+
import { Show, createEffect, createMemo, createSignal, onCleanup, onMount, } from 'solid-js';
|
|
2
2
|
import { isServer, render } from 'solid-js/web';
|
|
3
3
|
import { h } from './h';
|
|
4
|
-
import { FapiClient,
|
|
4
|
+
import { EMAIL_UNAVAILABLE_MESSAGE, FapiClient, advanceWithCaptcha, createCaptchaController, createSignUp, fetchInstanceSettings, flowFromPending, flowNeedsCaptcha, nextStep, offeredFirstFactors, pollAttempt, prepareFactor, shouldKeepPolling, signInCaptchaOptions, } from '@atlasauth/js';
|
|
5
5
|
import { useAtlas } from './context';
|
|
6
6
|
/** A labelled, UNCONTROLLED input — its value is read from the form's
|
|
7
7
|
* `FormData` on submit, which sidesteps per-keystroke signal churn for a plain
|
|
@@ -12,11 +12,53 @@ function field(name, label, type = 'text') {
|
|
|
12
12
|
h('input', { class: 'atlas-input', name, type }),
|
|
13
13
|
]);
|
|
14
14
|
}
|
|
15
|
-
/**
|
|
15
|
+
/** The flow's errors, rendered as alerts. Field-scoped ones (e.g. a rejected
|
|
16
|
+
* password) are included: these forms have no per-field error slot, and an
|
|
17
|
+
* error the user never sees is a form they cannot get past. */
|
|
16
18
|
function renderErrors(errors) {
|
|
17
|
-
return errors
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
return errors.map((error) => h('p', { class: 'atlas-error', role: 'alert' }, error.message));
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The en-US strings of the create-account form and the captcha, under the same
|
|
23
|
+
* catalog keys `@atlasauth/react` uses (`@atlasauth/localizations`).
|
|
24
|
+
*/
|
|
25
|
+
export const SIGN_UP_TEXT = {
|
|
26
|
+
'signUp.title': 'Sign up',
|
|
27
|
+
'signUp.submit': 'Continue',
|
|
28
|
+
'signUp.emailLabel': 'Email address',
|
|
29
|
+
'signUp.passwordLabel': 'Password',
|
|
30
|
+
'signUp.optionalField': '{label} (optional)',
|
|
31
|
+
'signUp.selectPlaceholder': 'Select…',
|
|
32
|
+
'signUp.consentAgree': 'I agree to the',
|
|
33
|
+
'signUp.consentNotice': 'By continuing you agree to the',
|
|
34
|
+
'signUp.terms': 'Terms of Service',
|
|
35
|
+
'signUp.privacy': 'Privacy Policy',
|
|
36
|
+
'signUp.and': 'and',
|
|
37
|
+
'signUp.emailUnavailable': EMAIL_UNAVAILABLE_MESSAGE,
|
|
38
|
+
'captcha.prompt': 'Complete the security check to continue.',
|
|
39
|
+
'captcha.required': 'Please complete the security check, then try again.',
|
|
40
|
+
'captcha.failed': "The security check didn't pass. Please try again.",
|
|
41
|
+
};
|
|
42
|
+
const t = (key, vars = {}) => (SIGN_UP_TEXT[key] ?? key).replace(/\{(\w+)\}/g, (m, name) => vars[name] ?? m);
|
|
43
|
+
/**
|
|
44
|
+
* The element a flow's captcha widget draws into, while `drawn()` says the flow
|
|
45
|
+
* needs one (see `createCaptchaController` in `@atlasauth/js`). The controller is
|
|
46
|
+
* attached once the element is in the document and detached when it leaves.
|
|
47
|
+
*/
|
|
48
|
+
function captchaSlot(controller, drawn) {
|
|
49
|
+
return (() => {
|
|
50
|
+
if (!drawn())
|
|
51
|
+
return null;
|
|
52
|
+
const el = document.createElement('div');
|
|
53
|
+
el.className = 'atlas-captcha';
|
|
54
|
+
el.setAttribute('data-atlas-captcha', '');
|
|
55
|
+
queueMicrotask(() => {
|
|
56
|
+
if (el.isConnected)
|
|
57
|
+
controller.attach(el);
|
|
58
|
+
});
|
|
59
|
+
onCleanup(() => controller.attach(null));
|
|
60
|
+
return el;
|
|
61
|
+
});
|
|
20
62
|
}
|
|
21
63
|
/** The fields for the current server-driven step. The `unknown`/default branch
|
|
22
64
|
* says so out loud rather than rendering a blank box the user cannot act on. */
|
|
@@ -39,6 +81,10 @@ function renderFields(kind) {
|
|
|
39
81
|
return [field('code', 'Email code')];
|
|
40
82
|
case 'collect_new_password':
|
|
41
83
|
return [field('password', 'New password', 'password')];
|
|
84
|
+
case 'collect_captcha':
|
|
85
|
+
// §5 the server withheld the attempt until a captcha clears. Solving the
|
|
86
|
+
// widget resubmits the identifier on its own; the button retries.
|
|
87
|
+
return [h('p', { class: 'atlas-text' }, t('captcha.prompt'))];
|
|
42
88
|
case 'await_oauth':
|
|
43
89
|
return [h('p', 'Continue in the window that opened.')];
|
|
44
90
|
case 'done':
|
|
@@ -47,41 +93,221 @@ function renderFields(kind) {
|
|
|
47
93
|
return [h('p', { class: 'atlas-error' }, 'This step needs an updated app. Please reload.')];
|
|
48
94
|
}
|
|
49
95
|
}
|
|
50
|
-
|
|
51
|
-
|
|
96
|
+
/** The "this app can't send email" state, in place of a form that would need it. */
|
|
97
|
+
function emailUnavailable() {
|
|
98
|
+
return h('p', { class: 'atlas-error', role: 'alert' }, t('signUp.emailUnavailable'));
|
|
99
|
+
}
|
|
100
|
+
/** A first factor's strategy name — the server sends plain names; tolerate `{ strategy }` entries too. */
|
|
101
|
+
function strategyNames(strategies) {
|
|
102
|
+
return strategies
|
|
103
|
+
.map((s) => (typeof s === 'string' ? s : s?.strategy))
|
|
104
|
+
.filter((s) => typeof s === 'string');
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* The first-factor step: the factors this app can actually offer
|
|
108
|
+
* (`offeredFirstFactors` — no email code / link while it cannot deliver email).
|
|
109
|
+
* A password field when `password` is offered (or the server sent no list), a
|
|
110
|
+
* button per emailed factor, and the "can't send email" notice when nothing is
|
|
111
|
+
* left. Once a code was sent only the code field remains, so the submit is
|
|
112
|
+
* the email-code attempt.
|
|
113
|
+
*/
|
|
114
|
+
function renderFirstFactor(offered, listed, sent, send) {
|
|
115
|
+
if (sent === 'email_code')
|
|
116
|
+
return [field('code', 'Email code')];
|
|
117
|
+
if (sent === 'email_link')
|
|
118
|
+
return [h('p', { class: 'atlas-text' }, 'Check your email for a sign-in link.')];
|
|
119
|
+
const out = [];
|
|
120
|
+
if (!listed || offered.includes('password'))
|
|
121
|
+
out.push(field('password', 'Password', 'password'));
|
|
122
|
+
if (offered.includes('email_code')) {
|
|
123
|
+
out.push(h('button', { class: 'atlas-link', type: 'button', onClick: () => send('email_code') }, 'Email me a code'));
|
|
124
|
+
}
|
|
125
|
+
if (offered.includes('email_link')) {
|
|
126
|
+
out.push(h('button', { class: 'atlas-link', type: 'button', onClick: () => send('email_link') }, 'Email me a sign-in link'));
|
|
127
|
+
}
|
|
128
|
+
if (!out.length)
|
|
129
|
+
out.push(emailUnavailable());
|
|
130
|
+
return out;
|
|
131
|
+
}
|
|
132
|
+
function renderSubmit(kind, busy, hidden = false) {
|
|
133
|
+
if (hidden || kind === 'done' || kind === 'await_oauth')
|
|
52
134
|
return null;
|
|
53
135
|
return h('button', { class: 'atlas-button', type: 'submit', disabled: busy }, 'Continue');
|
|
54
136
|
}
|
|
137
|
+
/** One configured sign-up field's control (uncontrolled — read from `FormData`). */
|
|
138
|
+
function signUpControl(f) {
|
|
139
|
+
switch (f.type) {
|
|
140
|
+
case 'checkbox':
|
|
141
|
+
return h('input', { type: 'checkbox', name: f.key, value: 'true' });
|
|
142
|
+
case 'select':
|
|
143
|
+
return h('select', { class: 'atlas-input', name: f.key, required: f.required }, [
|
|
144
|
+
h('option', { value: '' }, f.placeholder ?? t('signUp.selectPlaceholder')),
|
|
145
|
+
...f.options.map((o) => h('option', { value: o }, o)),
|
|
146
|
+
]);
|
|
147
|
+
case 'textarea':
|
|
148
|
+
return h('textarea', {
|
|
149
|
+
class: 'atlas-input',
|
|
150
|
+
name: f.key,
|
|
151
|
+
rows: 3,
|
|
152
|
+
required: f.required,
|
|
153
|
+
placeholder: f.placeholder ?? undefined,
|
|
154
|
+
});
|
|
155
|
+
case 'radio':
|
|
156
|
+
case 'multiselect':
|
|
157
|
+
return h('span', { class: 'atlas-choices' }, f.options.map((o) => h('label', { class: 'atlas-choice' }, [
|
|
158
|
+
h('input', { type: f.type === 'radio' ? 'radio' : 'checkbox', name: f.key, value: o }),
|
|
159
|
+
o,
|
|
160
|
+
])));
|
|
161
|
+
default: {
|
|
162
|
+
const type = ['email', 'tel', 'url', 'number', 'date'].includes(f.type) ? f.type : 'text';
|
|
163
|
+
return h('input', {
|
|
164
|
+
class: 'atlas-input',
|
|
165
|
+
type,
|
|
166
|
+
name: f.key,
|
|
167
|
+
required: f.required,
|
|
168
|
+
placeholder: f.placeholder ?? undefined,
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* The create-account step's fields: the instance's configured extra fields,
|
|
175
|
+
* email + password, and the legal-consent row. Re-rendered only when the
|
|
176
|
+
* settings change, so what the user typed survives a refused submit.
|
|
177
|
+
*/
|
|
178
|
+
function renderSignUpFields(settings) {
|
|
179
|
+
const legal = settings?.legal;
|
|
180
|
+
const showLegal = !!legal && (!!legal.termsUrl || !!legal.privacyUrl);
|
|
181
|
+
const links = [];
|
|
182
|
+
if (legal?.termsUrl) {
|
|
183
|
+
links.push(h('a', { class: 'atlas-link', href: legal.termsUrl, target: '_blank', rel: 'noopener noreferrer' }, t('signUp.terms')));
|
|
184
|
+
}
|
|
185
|
+
if (legal?.privacyUrl) {
|
|
186
|
+
if (links.length)
|
|
187
|
+
links.push(` ${t('signUp.and')} `);
|
|
188
|
+
links.push(h('a', { class: 'atlas-link', href: legal.privacyUrl, target: '_blank', rel: 'noopener noreferrer' }, t('signUp.privacy')));
|
|
189
|
+
}
|
|
190
|
+
return [
|
|
191
|
+
...(settings?.signUpFields ?? []).map((f) =>
|
|
192
|
+
// A choice group holds several inputs, so it can't sit inside one <label>.
|
|
193
|
+
h(f.type === 'radio' || f.type === 'multiselect' ? 'div' : 'label', { class: 'atlas-field' }, [
|
|
194
|
+
h('span', f.required ? f.label : t('signUp.optionalField', { label: f.label })),
|
|
195
|
+
signUpControl(f),
|
|
196
|
+
])),
|
|
197
|
+
h('label', { class: 'atlas-field' }, [
|
|
198
|
+
h('span', t('signUp.emailLabel')),
|
|
199
|
+
h('input', { class: 'atlas-input', name: 'email', type: 'email', autocomplete: 'email', required: true }),
|
|
200
|
+
]),
|
|
201
|
+
h('label', { class: 'atlas-field' }, [
|
|
202
|
+
h('span', t('signUp.passwordLabel')),
|
|
203
|
+
h('input', { class: 'atlas-input', name: 'password', type: 'password', autocomplete: 'new-password', required: true }),
|
|
204
|
+
]),
|
|
205
|
+
showLegal
|
|
206
|
+
? h('label', { class: 'atlas-consent' }, [
|
|
207
|
+
legal.required ? h('input', { type: 'checkbox', name: 'consent', value: 'true', required: true }) : null,
|
|
208
|
+
h('span', { class: 'atlas-text' }, [
|
|
209
|
+
t(legal.required ? 'signUp.consentAgree' : 'signUp.consentNotice'),
|
|
210
|
+
' ',
|
|
211
|
+
...links,
|
|
212
|
+
'.',
|
|
213
|
+
]),
|
|
214
|
+
])
|
|
215
|
+
: null,
|
|
216
|
+
];
|
|
217
|
+
}
|
|
218
|
+
/** Read a form into values; repeated names (a multiselect) are comma-joined,
|
|
219
|
+
* the same encoding as React, the embed widget and the hosted page. */
|
|
220
|
+
function formValues(form) {
|
|
221
|
+
const values = {};
|
|
222
|
+
new FormData(form).forEach((value, key) => {
|
|
223
|
+
values[key] = key in values ? `${values[key]}, ${String(value)}` : String(value);
|
|
224
|
+
});
|
|
225
|
+
return values;
|
|
226
|
+
}
|
|
55
227
|
/**
|
|
56
228
|
* The server-driven sign-in / sign-up flow. Never decides what comes next: it
|
|
57
229
|
* drives through `advance` (the driver owns the step→endpoint mapping) and
|
|
58
|
-
* renders whatever `status` the server returned.
|
|
59
|
-
*
|
|
230
|
+
* renders whatever `status` the server returned. In `sign-up` mode the first
|
|
231
|
+
* step is the create-account form, which POSTs `/v1/client/sign_ups`; from there
|
|
232
|
+
* it is the same driver (the emailed-code step, then the ticket exchange). Both
|
|
233
|
+
* draw the instance's captcha when it is required.
|
|
60
234
|
*/
|
|
61
235
|
function Flow(props) {
|
|
62
236
|
const client = props.client;
|
|
63
237
|
const fapi = new FapiClient({ publishableKey: client.publishableKey, baseUrl: client.frontendApi });
|
|
64
238
|
// Seeded from a redirect that returned mid-flow (OAuth owing a second
|
|
65
239
|
// factor), so the user resumes at the demanded step instead of restarting.
|
|
66
|
-
const [state,
|
|
240
|
+
const [state, setStateRaw] = createSignal(props.mode === 'sign-in' ? flowFromPending(client.pendingAttempt) : flowFromPending(null));
|
|
241
|
+
const [settings, setSettingsRaw] = createSignal(null);
|
|
242
|
+
// §5 the per-flow captcha, driven by the instance's settings so turning it on
|
|
243
|
+
// in the dashboard needs no code change. Configured synchronously with every
|
|
244
|
+
// state / settings change, before the view reads `drawn`.
|
|
245
|
+
const captcha = createCaptchaController();
|
|
246
|
+
const signUpCaptcha = createCaptchaController();
|
|
247
|
+
const [captchaDrawn, setCaptchaDrawn] = createSignal(false);
|
|
248
|
+
const [signUpCaptchaDrawn, setSignUpCaptchaDrawn] = createSignal(false);
|
|
249
|
+
let identifier = '';
|
|
250
|
+
const syncCaptcha = () => {
|
|
251
|
+
const current = settings();
|
|
252
|
+
const flow = state();
|
|
253
|
+
if (props.mode === 'sign-in') {
|
|
254
|
+
captcha.configure(signInCaptchaOptions(current?.captchaFlows.signIn, flow, () => submit({})));
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
const signUpFlow = current?.captchaFlows.signUp;
|
|
258
|
+
signUpCaptcha.configure({ flow: signUpFlow, active: !flow.attempt && flowNeedsCaptcha(signUpFlow) });
|
|
259
|
+
}
|
|
260
|
+
setCaptchaDrawn(captcha.needed);
|
|
261
|
+
setSignUpCaptchaDrawn(signUpCaptcha.needed);
|
|
262
|
+
};
|
|
263
|
+
const setState = (next) => {
|
|
264
|
+
setStateRaw(next);
|
|
265
|
+
syncCaptcha();
|
|
266
|
+
};
|
|
267
|
+
if (!isServer) {
|
|
268
|
+
void fetchInstanceSettings(fapi).then((loaded) => {
|
|
269
|
+
if (!loaded)
|
|
270
|
+
return;
|
|
271
|
+
setSettingsRaw(loaded);
|
|
272
|
+
syncCaptcha();
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
onCleanup(() => {
|
|
276
|
+
captcha.destroy();
|
|
277
|
+
signUpCaptcha.destroy();
|
|
278
|
+
});
|
|
279
|
+
// A completion response carries a one-time ticket (§7.1). FAPI is
|
|
280
|
+
// cross-origin to the app and cannot set the cookie on its own response,
|
|
281
|
+
// so exchange the ticket over a request THEN re-boot, so the rest of the
|
|
282
|
+
// app sees a signed-in user — and no session token ever rode in a URL.
|
|
283
|
+
const finish = async (next) => {
|
|
284
|
+
setState(next);
|
|
285
|
+
if (next.attempt?.status === 'complete') {
|
|
286
|
+
if (next.ticket) {
|
|
287
|
+
await fapi.post('/v1/client/tickets/exchange', {
|
|
288
|
+
attempt_id: next.attempt.id,
|
|
289
|
+
ticket: next.ticket,
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
await client.reload();
|
|
293
|
+
}
|
|
294
|
+
};
|
|
67
295
|
const submit = (values) => {
|
|
68
296
|
void (async () => {
|
|
69
297
|
setState((s) => ({ ...s, busy: true, errors: [] }));
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
await client.reload();
|
|
84
|
-
}
|
|
298
|
+
const out = await advanceWithCaptcha(fapi, state(), values, { captcha, identifier, t });
|
|
299
|
+
identifier = out.identifier;
|
|
300
|
+
await finish(out.state);
|
|
301
|
+
})();
|
|
302
|
+
};
|
|
303
|
+
const create = (values) => {
|
|
304
|
+
void (async () => {
|
|
305
|
+
setState((s) => ({ ...s, busy: true, errors: [] }));
|
|
306
|
+
// The consent box is `required` when the instance requires agreement, so a
|
|
307
|
+
// submitted form always carries it then; without a requirement it is moot.
|
|
308
|
+
const { consent, ...rest } = values;
|
|
309
|
+
const agreed = settings()?.legal.required ? consent === 'true' : true;
|
|
310
|
+
await finish(await createSignUp(fapi, rest, { consent: agreed, captcha: signUpCaptcha, t }));
|
|
85
311
|
})();
|
|
86
312
|
};
|
|
87
313
|
// §5.3 magic-link poll: a sign-in finished on another device. Restart on each
|
|
@@ -113,26 +339,67 @@ function Flow(props) {
|
|
|
113
339
|
}, 2_000);
|
|
114
340
|
});
|
|
115
341
|
onCleanup(stopPolling);
|
|
116
|
-
|
|
342
|
+
// The step KIND, memoized, so the inputs are re-created only when the step
|
|
343
|
+
// changes — not on every busy/error update, which would wipe what was typed.
|
|
344
|
+
const kind = createMemo(() => {
|
|
345
|
+
const attempt = state().attempt;
|
|
346
|
+
if (!attempt)
|
|
347
|
+
return props.mode === 'sign-up' ? 'create_account' : 'collect_identifier';
|
|
348
|
+
return nextStep(attempt).kind;
|
|
349
|
+
});
|
|
350
|
+
// §email delivery: the first factors this app can offer, keyed as a string so
|
|
351
|
+
// the inputs are re-created only when the offer itself changes.
|
|
352
|
+
const firstFactor = createMemo(() => {
|
|
117
353
|
const attempt = state().attempt;
|
|
118
|
-
|
|
354
|
+
const step = attempt ? nextStep(attempt) : null;
|
|
355
|
+
if (step?.kind !== 'collect_first_factor')
|
|
356
|
+
return '';
|
|
357
|
+
const listed = strategyNames(step.strategies ?? []);
|
|
358
|
+
const offered = offeredFirstFactors(listed, settings()?.emailDelivery);
|
|
359
|
+
return `${listed.length ? 'listed' : 'unlisted'}:${offered.join(',')}`;
|
|
360
|
+
});
|
|
361
|
+
const [emailSent, setEmailSent] = createSignal(null);
|
|
362
|
+
createEffect(() => {
|
|
363
|
+
kind();
|
|
364
|
+
setEmailSent(null);
|
|
365
|
+
});
|
|
366
|
+
const sendEmailFactor = (strategy) => {
|
|
367
|
+
void (async () => {
|
|
368
|
+
setState((s) => ({ ...s, busy: true, errors: [] }));
|
|
369
|
+
const next = await prepareFactor(fapi, state(), strategy);
|
|
370
|
+
setState(next);
|
|
371
|
+
if (!next.errors.length)
|
|
372
|
+
setEmailSent(strategy);
|
|
373
|
+
})();
|
|
119
374
|
};
|
|
375
|
+
// §email delivery: a password sign-up needs a verification email; when the
|
|
376
|
+
// app cannot send one, say so instead of a form that cannot finish.
|
|
377
|
+
const signUpBlocked = () => kind() === 'create_account' && settings()?.emailDelivery?.passwordSignUp === false;
|
|
120
378
|
return h('form', {
|
|
121
379
|
class: 'atlas-card',
|
|
122
380
|
onSubmit: (event) => {
|
|
123
381
|
event.preventDefault();
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
submit(values);
|
|
382
|
+
const values = formValues(event.currentTarget);
|
|
383
|
+
if (kind() === 'create_account')
|
|
384
|
+
create(values);
|
|
385
|
+
else
|
|
386
|
+
submit(values);
|
|
130
387
|
},
|
|
131
388
|
}, [
|
|
132
389
|
h('h1', { class: 'atlas-title' }, props.title),
|
|
133
390
|
() => renderErrors(state().errors),
|
|
134
|
-
() =>
|
|
135
|
-
|
|
391
|
+
() => {
|
|
392
|
+
if (kind() === 'create_account')
|
|
393
|
+
return signUpBlocked() ? emailUnavailable() : renderSignUpFields(settings());
|
|
394
|
+
if (kind() === 'collect_first_factor') {
|
|
395
|
+
const [listed, offered] = firstFactor().split(':');
|
|
396
|
+
return renderFirstFactor(offered ? offered.split(',') : [], listed === 'listed', emailSent(), sendEmailFactor);
|
|
397
|
+
}
|
|
398
|
+
return renderFields(kind());
|
|
399
|
+
},
|
|
400
|
+
captchaSlot(signUpCaptcha, () => kind() === 'create_account' && !signUpBlocked() && signUpCaptchaDrawn()),
|
|
401
|
+
captchaSlot(captcha, () => (kind() === 'collect_identifier' || kind() === 'collect_captcha') && captchaDrawn()),
|
|
402
|
+
() => renderSubmit(kind(), state().busy, signUpBlocked() || emailSent() === 'email_link'),
|
|
136
403
|
]);
|
|
137
404
|
}
|
|
138
405
|
/** The signed-in user's avatar + a menu whose only built-in action is sign-out
|
|
@@ -168,10 +435,10 @@ function UserButtonView(client) {
|
|
|
168
435
|
// --- Mount seams, called by the client's `mountX` methods. `render` returns the
|
|
169
436
|
// disposer that `onCleanup` later invokes to tear the nested root down. ---
|
|
170
437
|
export function mountSignInWidget(client, el) {
|
|
171
|
-
return render(() => Flow({ client, title: 'Sign in' }), el);
|
|
438
|
+
return render(() => Flow({ client, title: 'Sign in', mode: 'sign-in' }), el);
|
|
172
439
|
}
|
|
173
440
|
export function mountSignUpWidget(client, el) {
|
|
174
|
-
return render(() => Flow({ client, title: 'Sign up' }), el);
|
|
441
|
+
return render(() => Flow({ client, title: 'Sign up', mode: 'sign-up' }), el);
|
|
175
442
|
}
|
|
176
443
|
export function mountUserButtonWidget(client, el) {
|
|
177
444
|
return render(() => UserButtonView(client), el);
|
package/dist/widgets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widgets.js","sourceRoot":"","sources":["../src/widgets.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"widgets.js","sourceRoot":"","sources":["../src/widgets.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlasauth/solid",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
}
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@atlasauth/js": "0.
|
|
14
|
+
"@atlasauth/js": "0.8.0"
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
17
|
"solid-js": ">=1.8"
|
|
@@ -28,7 +28,8 @@
|
|
|
28
28
|
},
|
|
29
29
|
"files": [
|
|
30
30
|
"dist",
|
|
31
|
-
"README.md"
|
|
31
|
+
"README.md",
|
|
32
|
+
"CHANGELOG.md"
|
|
32
33
|
],
|
|
33
34
|
"repository": {
|
|
34
35
|
"type": "git",
|