@iaurelius/accounts-expo 0.4.1 → 0.5.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 +61 -1
- package/dist/core.d.ts +18 -11
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +320 -60
- package/dist/core.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/react.d.ts +7 -0
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +7 -0
- package/dist/react.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -82,10 +82,12 @@ page's bot check (Turnstile) cannot run on a native screen: the per-address and
|
|
|
82
82
|
apply.
|
|
83
83
|
|
|
84
84
|
- Both steps throw an `OAuthError`. A refusal keeps the application's code (`INVALID_OTP`,
|
|
85
|
-
`ACCOUNT_LOCKED`, `ACCOUNT_OTP_LIMITED`, `
|
|
85
|
+
`ACCOUNT_LOCKED`, `ACCOUNT_OTP_LIMITED`, `sign_in_page_required`…). A limit without a code of its own
|
|
86
86
|
is `too_many_requests` (`status` 429), and a `5xx` or no answer `temporarily_unavailable`; both carry
|
|
87
87
|
`retryAfter` in seconds when the application says how long to wait. None of them touches the session
|
|
88
88
|
the device already had.
|
|
89
|
+
- `sign_in_page_required` is an account with a step your screen cannot show (a passkey the application
|
|
90
|
+
requires, an invitation to accept): open the hosted page with `signIn()`.
|
|
89
91
|
- The code for the session waits up to a minute, like the hosted sign-in's code exchange, and is sent
|
|
90
92
|
once: the application spends it (and issues a refresh token) as soon as it arrives, so giving up after
|
|
91
93
|
10 seconds would waste it and sending it again would only be refused.
|
|
@@ -94,6 +96,63 @@ apply.
|
|
|
94
96
|
- Signing in while already signed in ("use another account") replaces the session: once the new one is on the
|
|
95
97
|
device, the refresh token of the one before is revoked, so it does not stay alive at your application.
|
|
96
98
|
|
|
99
|
+
### Organizations
|
|
100
|
+
|
|
101
|
+
Where the application has organizations, a person who belongs to several chooses one when signing in,
|
|
102
|
+
and can change it later. Both happen on your own screens, with no browser. The organizations are the
|
|
103
|
+
ones the person can use your app in: those that have your API (your `audience`) and where they have a
|
|
104
|
+
role in it. Pass `audience` to `<AccountsProvider>`: without it there is no list.
|
|
105
|
+
|
|
106
|
+
**Choosing one to sign in.** `signInWithEmailCode` does not sign in yet: it resolves with
|
|
107
|
+
`isSignedIn: false` and the list in `organizationChoice`. Show it and call `chooseOrganization`:
|
|
108
|
+
|
|
109
|
+
```tsx
|
|
110
|
+
const { organizationChoice, signInWithEmailCode, chooseOrganization } = useAuth();
|
|
111
|
+
|
|
112
|
+
await signInWithEmailCode(email, code);
|
|
113
|
+
// organizationChoice: [{ slug: "acme", name: "Acme", role: "editor", orgRole: "member" }, …] or null
|
|
114
|
+
|
|
115
|
+
{organizationChoice?.map((o) => (
|
|
116
|
+
<Button key={o.slug} title={o.name} onPress={() => chooseOrganization(o.slug)} />
|
|
117
|
+
))}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
- The person has 5 minutes to choose, and each sign-in takes one choice. A refusal
|
|
121
|
+
(`organization_not_available`, `invalid_continuation` once the time is up) ends that sign-in and
|
|
122
|
+
`organizationChoice` goes back to `null`: start again with a new code. A `429`, a `5xx` or no answer
|
|
123
|
+
leave the choice open to try again; if the application had already taken the choice (its answer was
|
|
124
|
+
lost, or it failed on the way), that second try is refused (`invalid_continuation`), nothing of the
|
|
125
|
+
first is left alive, and the person starts again.
|
|
126
|
+
- With one organization, or none, `signInWithEmailCode` signs in as before.
|
|
127
|
+
- `signOut()` drops a choice that is waiting. The list is kept in memory only, never on the device.
|
|
128
|
+
- An application that does not offer the choice yet answers as it did: `signInWithEmailCode` throws
|
|
129
|
+
`organization_required`, and the hosted page (`signIn()`) is where to choose.
|
|
130
|
+
|
|
131
|
+
**Changing it later.** `organization` is the one the session is in, `listOrganizations()` the ones to
|
|
132
|
+
offer, and `switchOrganization(slug)` changes to another:
|
|
133
|
+
|
|
134
|
+
```tsx
|
|
135
|
+
const { organization, listOrganizations, switchOrganization } = useAuth();
|
|
136
|
+
|
|
137
|
+
const all = await listOrganizations(); // [{ slug, name, role, orgRole }, …]
|
|
138
|
+
await switchOrganization("globex"); // new tokens; getToken() gives one for globex from now on
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
- The device gets new tokens for that organization, and the ones it had stop working. The person and
|
|
142
|
+
their profile are the same. Asking for the organization the session is already in asks nothing.
|
|
143
|
+
A `getToken({ forceRefresh: true })` within 30 seconds of the change gives the token the change
|
|
144
|
+
brought, as after a refresh: a 401 for a request sent just before it is not a reason to renew again.
|
|
145
|
+
- A refusal (`organization_not_available`: not one of theirs with your app; `sign_in_page_required`)
|
|
146
|
+
throws and changes nothing.
|
|
147
|
+
- If no answer comes, or the application asks to wait (`429`, `5xx`), it throws
|
|
148
|
+
`temporarily_unavailable` (or `too_many_requests`) and the person stays signed in where they were.
|
|
149
|
+
The change stays asked for, because the application may have made it already: the SDK finishes it at
|
|
150
|
+
the next `getToken()`, the next `switchOrganization` or the next start of the app, with the tokens the
|
|
151
|
+
device has. Until then `getToken()` gives the token it has while it lasts.
|
|
152
|
+
- `signOut()` during a change, or after one that never got its answer, leaves the person signed out and
|
|
153
|
+
nothing of the change alive: revoking the token the device has ends, in the application, what it made
|
|
154
|
+
instead of it. Signing in over such a session does the same, once the new session is kept.
|
|
155
|
+
|
|
97
156
|
### Tokens and the network
|
|
98
157
|
|
|
99
158
|
- `getToken()` gives a token for your `audience`, refreshed a minute before it expires. While the token still
|
|
@@ -129,6 +188,7 @@ apply.
|
|
|
129
188
|
- **On the device:** tokens stay in SecureStore, split in parts because Android is unreliable past 2 KB.
|
|
130
189
|
- **Revocation:** a person who is banned or signed out everywhere is out at the next refresh. Sign-out revokes the refresh token.
|
|
131
190
|
- **Refresh:** only a refusal for good signs the person out: a `4xx` with an OAuth error, such as `invalid_grant` (revoked, banned), `invalid_client`, `invalid_scope` or `invalid_target` (your `audience` changed). A `429` (many phones behind one carrier IP), a `5xx`, no answer or a `4xx` without an OAuth error (a firewall's page) keeps the session and its refresh token; the access token serves while it lasts, and no refresh is tried again before the server's `Retry-After`. A refreshed ID token must be the same person (`iss`, `sub`, `aud`), and userinfo's `sub` must match.
|
|
191
|
+
- **Organizations:** the list comes only after the emailed code is verified. What finishes a sign-in that had one to choose is used once, lasts 5 minutes, and is kept in memory, never on the device. A change of organization is a new sign-in of the app, and the one it replaces ends: the refresh token the device had no longer refreshes. Its new ID token must be the same person (`iss`, `sub`, `aud`).
|
|
132
192
|
- **Sign-out during a refresh or a sign-in:** a refresh that was on its way when the person signed out (or signed in again) does not bring the old session back, and a sign-in (hosted page or your own screen) that was on its way when they signed out does not sign them in: its answer is dropped and its refresh token revoked. A sign-in answer whose ID token is not for that sign-in is refused, and its refresh token revoked too.
|
|
133
193
|
- **Bundle size:** the package uses no Node APIs and no WebCrypto (`expo-crypto` instead), and does not pull jose into your bundle.
|
|
134
194
|
|
package/dist/core.d.ts
CHANGED
|
@@ -18,11 +18,22 @@ export type Crypto = {
|
|
|
18
18
|
randomString(bytes: number): string;
|
|
19
19
|
sha256Base64Url(input: string): Promise<string>;
|
|
20
20
|
};
|
|
21
|
+
/** An organization the person can use this app in: `role` is theirs in the app's product, `orgRole` in the organization. */
|
|
22
|
+
export type Organization = {
|
|
23
|
+
slug: string;
|
|
24
|
+
name: string;
|
|
25
|
+
role: string;
|
|
26
|
+
orgRole: string;
|
|
27
|
+
};
|
|
21
28
|
export type AccountsState = {
|
|
22
29
|
isLoaded: boolean;
|
|
23
30
|
isSignedIn: boolean;
|
|
24
31
|
user: SessionUser | null;
|
|
25
32
|
sessionId: string | null;
|
|
33
|
+
/** The organization the session is in (its slug), when the access token says so: one for your `audience`. */
|
|
34
|
+
organization: string | null;
|
|
35
|
+
/** A sign-in on your own screen that has an organization left to choose: the ones to offer (chooseOrganization). */
|
|
36
|
+
organizationChoice: Organization[] | null;
|
|
26
37
|
};
|
|
27
38
|
export type ClientOptions = {
|
|
28
39
|
publishableKey: string;
|
|
@@ -54,24 +65,20 @@ export declare function createAccountsClient(o: ClientOptions): {
|
|
|
54
65
|
load(): Promise<AccountsState>;
|
|
55
66
|
/** Opens the hosted page; resolves once the person is back (signed in, or unchanged if they closed it). */
|
|
56
67
|
signIn: () => Promise<AccountsState>;
|
|
57
|
-
/** Your own sign-in screen instead of the hosted page: a code to the email, then the code. */
|
|
68
|
+
/** Your own sign-in screen instead of the hosted page: a code to the email, then the code, then (in several organizations) which one. */
|
|
58
69
|
sendEmailCode: (email: string) => Promise<{
|
|
59
70
|
waitlist: boolean;
|
|
60
71
|
}>;
|
|
61
72
|
signInWithEmailCode: (email: string, code: string) => Promise<AccountsState>;
|
|
73
|
+
chooseOrganization: (slug: string) => Promise<AccountsState>;
|
|
62
74
|
/** The same, on "create an account". */
|
|
63
75
|
signUp: () => Promise<AccountsState>;
|
|
64
|
-
|
|
65
|
-
* An access token for your API; null when signed out. One about to expire is refreshed: while it still lasts it
|
|
66
|
-
* is given at once and the refresh goes on in the background; once expired, the call waits for the refresh.
|
|
67
|
-
* forceRefresh: a new one even if this one still lasts (your API just refused it). Compare-and-refresh: several
|
|
68
|
-
* refusals of the same token make one refresh, and a token a refresh (forced or not) gave less than 30 s ago is given
|
|
69
|
-
* again instead of rotating once more. If no new token can be had now (no answer, a 429), it throws an
|
|
70
|
-
* OAuthError (temporarily_unavailable) and the session stays; it resolves to null only when the session is over.
|
|
71
|
-
*/
|
|
72
|
-
getToken(opts?: {
|
|
76
|
+
getToken: (opts?: {
|
|
73
77
|
forceRefresh?: boolean;
|
|
74
|
-
})
|
|
78
|
+
}) => Promise<string | null>;
|
|
79
|
+
/** The person's organizations for this app, and the session in another of them, without the hosted page. */
|
|
80
|
+
listOrganizations: () => Promise<Organization[]>;
|
|
81
|
+
switchOrganization: (slug: string) => Promise<AccountsState>;
|
|
75
82
|
/** Out here (the refresh token revoked) and, unless told otherwise, on the hosted pages too. */
|
|
76
83
|
signOut(opts?: {
|
|
77
84
|
endSession?: boolean;
|
package/dist/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
package/dist/core.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// The Expo SDK's logic, without Expo: sign-in on the hosted page in an authentication session (PKCE
|
|
2
|
-
// S256, state, nonce, RFC 9207's iss)
|
|
3
|
-
//
|
|
4
|
-
//
|
|
2
|
+
// S256, state, nonce, RFC 9207's iss) or on the app's own screens (a code to the email, an organization to
|
|
3
|
+
// choose), the session kept in a secure store, an access token that refreshes itself, changing organization,
|
|
4
|
+
// and sign-out. The platform's parts (store, browser, crypto) are passed in: src/expo.ts gives Expo's; the
|
|
5
|
+
// tests give Node's and the platform's own server.
|
|
5
6
|
import { OAuthError, authorizationUrl, endSessionUrl, exchangeCode, fetchUserInfo, issuerFromPublishableKey, readIdToken, refreshBackoff, refreshTokens, retryAfterOf, revokeToken, sameIdentity, sessionEnded, userFromClaims, } from "@iaurelius/accounts/oidc";
|
|
6
7
|
const now = () => Math.floor(Date.now() / 1000);
|
|
7
8
|
/**
|
|
@@ -89,6 +90,41 @@ export function queryOf(url) {
|
|
|
89
90
|
}
|
|
90
91
|
return out;
|
|
91
92
|
}
|
|
93
|
+
/** "Not now": no answer, a limit, a failure of the application, a change already under way. Anything else it refused for good. */
|
|
94
|
+
const notNow = (e) => e instanceof OAuthError && (e.status === 429 || e.status === 408 || e.status >= 500 || e.error === "switch_in_progress");
|
|
95
|
+
/** The organizations of an answer of the application (the sign-in's list, userinfo's `orgs`). */
|
|
96
|
+
function organizationsOf(v) {
|
|
97
|
+
if (!Array.isArray(v))
|
|
98
|
+
return [];
|
|
99
|
+
const out = [];
|
|
100
|
+
for (const x of v) {
|
|
101
|
+
if (!x || typeof x.slug !== "string" || !x.slug)
|
|
102
|
+
continue;
|
|
103
|
+
out.push({ slug: x.slug, name: typeof x.name === "string" && x.name ? x.name : x.slug, role: typeof x.role === "string" ? x.role : "", orgRole: typeof x.org_role === "string" ? x.org_role : "" });
|
|
104
|
+
}
|
|
105
|
+
return out;
|
|
106
|
+
}
|
|
107
|
+
/** The organization an access token is for (`org_slug`), if it is a JWT that says so. */
|
|
108
|
+
function organizationOf(accessToken) {
|
|
109
|
+
try {
|
|
110
|
+
const slug = readIdToken(accessToken).org_slug;
|
|
111
|
+
return typeof slug === "string" && slug ? slug : null;
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/** The token endpoint's answer, as the application's native routes relay it. */
|
|
118
|
+
function tokenSet(t) {
|
|
119
|
+
if (typeof t.access_token !== "string")
|
|
120
|
+
throw new OAuthError("invalid_response", "No access token.");
|
|
121
|
+
return {
|
|
122
|
+
accessToken: t.access_token,
|
|
123
|
+
expiresAt: now() + (typeof t.expires_in === "number" ? t.expires_in : 300),
|
|
124
|
+
...(typeof t.refresh_token === "string" && { refreshToken: t.refresh_token }),
|
|
125
|
+
...(typeof t.id_token === "string" && { idToken: t.id_token }),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
92
128
|
export function createAccountsClient(o) {
|
|
93
129
|
const issuer = issuerFromPublishableKey(o.publishableKey);
|
|
94
130
|
const fetch = withTimeout(o.fetch, o.requestTimeoutMs ?? 10_000);
|
|
@@ -100,8 +136,13 @@ export function createAccountsClient(o) {
|
|
|
100
136
|
const codeCreds = { ...creds, fetch: sentTwiceIfUnanswered(longest, longest) };
|
|
101
137
|
const store = chunked(o.storage);
|
|
102
138
|
const key = `accounts.${o.clientId.replace(/[^A-Za-z0-9._-]/g, "_")}`;
|
|
139
|
+
// A change of organization that is not settled yet (below, switchOrganization): the one asked for.
|
|
140
|
+
const switchKey = `${key}.switch`;
|
|
141
|
+
let switchTo = null;
|
|
142
|
+
// A sign-in on the app's own screen with an organization left to choose: in memory only (it lasts 5 minutes).
|
|
143
|
+
let choice = null;
|
|
103
144
|
let session = null;
|
|
104
|
-
let state = { isLoaded: false, isSignedIn: false, user: null, sessionId: null };
|
|
145
|
+
let state = { isLoaded: false, isSignedIn: false, user: null, sessionId: null, organization: null, organizationChoice: null };
|
|
105
146
|
const listeners = new Set();
|
|
106
147
|
function publish(loaded = true) {
|
|
107
148
|
let user = null;
|
|
@@ -111,7 +152,7 @@ export function createAccountsClient(o) {
|
|
|
111
152
|
user = userFromClaims({ ...c, ...session.u, sub: c.sub });
|
|
112
153
|
sid = typeof c.sid === "string" ? c.sid : null;
|
|
113
154
|
}
|
|
114
|
-
state = { isLoaded: loaded, isSignedIn: !!session, user, sessionId: sid };
|
|
155
|
+
state = { isLoaded: loaded, isSignedIn: !!session, user, sessionId: sid, organization: session ? organizationOf(session.at) : null, organizationChoice: choice ? choice.organizations : null };
|
|
115
156
|
for (const l of listeners)
|
|
116
157
|
l(state);
|
|
117
158
|
}
|
|
@@ -124,8 +165,18 @@ export function createAccountsClient(o) {
|
|
|
124
165
|
const write = writing.then(() => (s ? store.set(key, JSON.stringify(s)) : store.remove(key)));
|
|
125
166
|
writing = write.catch(() => undefined); // a write that fails is its caller's error, not the next write's
|
|
126
167
|
await write;
|
|
168
|
+
// No session, no change of organization to settle.
|
|
169
|
+
if (!s)
|
|
170
|
+
await noteSwitch(null);
|
|
127
171
|
publish();
|
|
128
172
|
}
|
|
173
|
+
/** The change of organization asked for and not settled yet, on record on the device: a write like any other, in its turn. */
|
|
174
|
+
async function noteSwitch(slug) {
|
|
175
|
+
switchTo = slug;
|
|
176
|
+
const write = writing.then(() => (slug ? o.storage.set(switchKey, slug) : o.storage.remove(switchKey)));
|
|
177
|
+
writing = write.catch(() => undefined);
|
|
178
|
+
await write;
|
|
179
|
+
}
|
|
129
180
|
/** The profile from userinfo, only if it is about `sub` (the ID token's person). */
|
|
130
181
|
async function profile(accessToken, sub) {
|
|
131
182
|
const c = await fetchUserInfo({ issuer, accessToken, fetch, sub });
|
|
@@ -245,14 +296,15 @@ export function createAccountsClient(o) {
|
|
|
245
296
|
throw new OAuthError("invalid_id_token", "The ID token is not for this sign-in.");
|
|
246
297
|
}
|
|
247
298
|
/**
|
|
248
|
-
* A request to the application's native
|
|
249
|
-
*
|
|
250
|
-
* the first request that reaches it, so a second one would
|
|
299
|
+
* A request to the application's native routes (no browser). The code for the session, the organization chosen
|
|
300
|
+
* and a change of organization wait as long as a code exchange (TOKEN_TIMEOUT_MS), and are sent once: the
|
|
301
|
+
* application spends the code (and the continuation) on the first request that reaches it, so a second one would
|
|
302
|
+
* only be refused. Asking for the code to be mailed has the ordinary wait.
|
|
251
303
|
*/
|
|
252
|
-
async function
|
|
304
|
+
async function nativeRequest(path, body) {
|
|
253
305
|
let res;
|
|
254
306
|
try {
|
|
255
|
-
res = await (path === "
|
|
307
|
+
res = await (path === "email-code" ? fetch : longest)(`${issuer}/api/native/${path}`, {
|
|
256
308
|
method: "POST",
|
|
257
309
|
headers: { "content-type": "application/json", accept: "application/json" },
|
|
258
310
|
body: JSON.stringify({ client_id: o.clientId, ...body }),
|
|
@@ -261,18 +313,24 @@ export function createAccountsClient(o) {
|
|
|
261
313
|
catch (e) {
|
|
262
314
|
throw new OAuthError("temporarily_unavailable", `Could not reach ${issuer}: ${e?.message ?? e}`, 503);
|
|
263
315
|
}
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
316
|
+
return { res, data: (await res.json().catch(() => ({}))) };
|
|
317
|
+
}
|
|
318
|
+
/** A refusal of those routes, with the application's code. Never anything else of the answer: it may carry a continuation. */
|
|
319
|
+
function nativeError(res, data) {
|
|
320
|
+
// A 429 or a 5xx without the application's code (Better Auth's limiter answers {"message": …}) is "not now", with
|
|
321
|
+
// its Retry-After: too_many_requests (the application's own code for a limit) or temporarily_unavailable.
|
|
322
|
+
const code = typeof data.code === "string" ? data.code
|
|
323
|
+
: typeof data.error === "string" ? data.error
|
|
324
|
+
: res.status === 429 ? "too_many_requests"
|
|
325
|
+
: res.status >= 500 ? "temporarily_unavailable"
|
|
326
|
+
: "invalid_response";
|
|
327
|
+
const message = typeof data.message === "string" ? data.message : typeof data.error_description === "string" ? data.error_description : undefined;
|
|
328
|
+
return new OAuthError(code, message, res.status, retryAfterOf(res.headers));
|
|
329
|
+
}
|
|
330
|
+
async function nativeCall(path, body) {
|
|
331
|
+
const { res, data } = await nativeRequest(path, body);
|
|
332
|
+
if (!res.ok)
|
|
333
|
+
throw nativeError(res, data);
|
|
276
334
|
return data;
|
|
277
335
|
}
|
|
278
336
|
/** The app's own sign-in screen, step 1: a code to that email. `waitlist` when the application takes
|
|
@@ -283,21 +341,67 @@ export function createAccountsClient(o) {
|
|
|
283
341
|
}
|
|
284
342
|
/**
|
|
285
343
|
* Step 2: the code, for the session. Someone new signs up the same way where the application is public. A refusal,
|
|
286
|
-
* a 429, a 5xx or no answer throws and leaves whatever session the device had as it was.
|
|
344
|
+
* a 429, a 5xx or no answer throws and leaves whatever session the device had as it was. A person in several
|
|
345
|
+
* organizations is not signed in yet: `organizationChoice` (in the state this resolves to) lists them, and
|
|
346
|
+
* chooseOrganization finishes the sign-in.
|
|
287
347
|
*/
|
|
288
348
|
async function signInWithEmailCode(email, code) {
|
|
289
349
|
const started = epoch;
|
|
290
350
|
const nonce = o.crypto.randomString(24);
|
|
291
|
-
const
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
351
|
+
const { res, data } = await nativeRequest("token", { email, code, nonce, resource: o.audience });
|
|
352
|
+
const offered = res.status === 409 && data.code === "organization_required" ? organizationsOf(data.organizations) : [];
|
|
353
|
+
if (offered.length && typeof data.continuation === "string" && data.continuation) {
|
|
354
|
+
// Signed out, or signed in, while the code was on its way: that stands (the application forgets this one by itself).
|
|
355
|
+
if (started !== epoch)
|
|
356
|
+
return state;
|
|
357
|
+
choice = { continuation: data.continuation, nonce, organizations: offered };
|
|
358
|
+
publish();
|
|
359
|
+
return state;
|
|
360
|
+
}
|
|
361
|
+
if (!res.ok)
|
|
362
|
+
throw nativeError(res, data);
|
|
363
|
+
return adopt(started, tokenSet(data), nonce);
|
|
364
|
+
}
|
|
365
|
+
// One request per continuation: the application takes it once, and a second one ends what the first got.
|
|
366
|
+
let choosing = null;
|
|
367
|
+
/**
|
|
368
|
+
* Step 3, only with `organizationChoice`: the organization (its slug), for the session. A refusal throws and the
|
|
369
|
+
* sign-in is over (the application takes each choice once: start again with a new code); a 429, a 5xx or no
|
|
370
|
+
* answer throws and leaves the choice open for another try.
|
|
371
|
+
*/
|
|
372
|
+
function chooseOrganization(slug) {
|
|
373
|
+
const c = choice;
|
|
374
|
+
if (!c)
|
|
375
|
+
return Promise.reject(new OAuthError("invalid_request", "There is no sign-in waiting for an organization."));
|
|
376
|
+
choosing ??= (async () => {
|
|
377
|
+
const started = epoch;
|
|
378
|
+
try {
|
|
379
|
+
const { res, data } = await nativeRequest("token", { continuation: c.continuation, organization: slug });
|
|
380
|
+
if (!res.ok) {
|
|
381
|
+
const e = nativeError(res, data);
|
|
382
|
+
if (notNow(e))
|
|
383
|
+
throw e;
|
|
384
|
+
// Refused for good: that continuation is spent.
|
|
385
|
+
if (choice === c)
|
|
386
|
+
choice = null;
|
|
387
|
+
publish();
|
|
388
|
+
throw e;
|
|
389
|
+
}
|
|
390
|
+
if (choice === c)
|
|
391
|
+
choice = null;
|
|
392
|
+
try {
|
|
393
|
+
return await adopt(started, tokenSet(data), c.nonce);
|
|
394
|
+
}
|
|
395
|
+
catch (e) {
|
|
396
|
+
publish();
|
|
397
|
+
throw e;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
finally {
|
|
401
|
+
choosing = null;
|
|
402
|
+
}
|
|
403
|
+
})();
|
|
404
|
+
return choosing;
|
|
301
405
|
}
|
|
302
406
|
/**
|
|
303
407
|
* A sign-in's tokens become the device's session. Their ID token has to be for this sign-in; if not, the refresh
|
|
@@ -320,12 +424,20 @@ export function createAccountsClient(o) {
|
|
|
320
424
|
if (!(await sameEpoch(started, t)))
|
|
321
425
|
return state;
|
|
322
426
|
epoch++;
|
|
427
|
+
// Another sign-in: nothing of the one before is left to finish (an organization to choose, a change of it).
|
|
428
|
+
choice = null;
|
|
323
429
|
// The session this one takes the place of ("use another account", an app that signs in again) ends at
|
|
324
430
|
// the application too, once the new one is on the device: its refresh token would stay alive there, on
|
|
325
431
|
// no device, for as long as its sign-in (30 days). A refresh of it still on its way revokes what it gets
|
|
326
432
|
// (sameEpoch); this is for the token already stored, the one a refresh had just saved included.
|
|
327
433
|
const replaced = session;
|
|
328
|
-
|
|
434
|
+
// Nothing is waited for between the check of the epoch above and the session below: a sign-out that
|
|
435
|
+
// landed in between would find the session of before, and this one would then be kept over it (NAT-01).
|
|
436
|
+
// Both writes are only queued here, the record of an unsettled change first: on the device it goes
|
|
437
|
+
// before the new session does.
|
|
438
|
+
const cleared = switchTo ? noteSwitch(null) : undefined;
|
|
439
|
+
const saved = save({ at: t.accessToken, rt: t.refreshToken, it: t.idToken, exp: t.expiresAt, u });
|
|
440
|
+
await Promise.all([cleared, saved]);
|
|
329
441
|
if (replaced?.rt && replaced.rt !== t.refreshToken)
|
|
330
442
|
await revokeToken(creds, { token: replaced.rt, hint: "refresh_token" });
|
|
331
443
|
return state;
|
|
@@ -355,6 +467,161 @@ export function createAccountsClient(o) {
|
|
|
355
467
|
const t = await exchangeCode(codeCreds, { code: q.code, redirectUri: o.redirectUri, codeVerifier: verifier, resource: o.audience });
|
|
356
468
|
return adopt(started, t, nonce);
|
|
357
469
|
}
|
|
470
|
+
// ---- changing organization
|
|
471
|
+
// The application gives the device a new sign-in for the organization asked for and ends the one it replaces as
|
|
472
|
+
// soon as the new one exists. If its answer never arrives, the refresh token on the device is one the token endpoint
|
|
473
|
+
// no longer takes: only the change itself, asked again with that token, gets the new one (the application keeps it
|
|
474
|
+
// for whoever presents the old one). So a change is on record on the device before it is sent, and until it is
|
|
475
|
+
// settled nothing else presents that refresh token: no refresh (getToken gives the token it has while it lasts),
|
|
476
|
+
// and at the next start the change goes first.
|
|
477
|
+
let switching = null;
|
|
478
|
+
const switchBackoff = refreshBackoff();
|
|
479
|
+
/** Sends the change on record and takes its answer. Rejects when it could not be settled now, or was refused. */
|
|
480
|
+
function settleSwitch() {
|
|
481
|
+
switching ??= (async () => {
|
|
482
|
+
try {
|
|
483
|
+
// A refresh on its way rotates the token this presents: after it.
|
|
484
|
+
while (refreshing)
|
|
485
|
+
await refreshing.catch(() => undefined);
|
|
486
|
+
const s = session;
|
|
487
|
+
const slug = switchTo;
|
|
488
|
+
if (!slug)
|
|
489
|
+
return;
|
|
490
|
+
if (!s?.rt)
|
|
491
|
+
return void (await noteSwitch(null));
|
|
492
|
+
const started = epoch;
|
|
493
|
+
let t;
|
|
494
|
+
try {
|
|
495
|
+
t = tokenSet(await nativeCall("switch", { refresh_token: s.rt, organization: slug, resource: o.audience }));
|
|
496
|
+
}
|
|
497
|
+
catch (e) {
|
|
498
|
+
if (notNow(e))
|
|
499
|
+
switchBackoff.failed(e);
|
|
500
|
+
else if (started === epoch) {
|
|
501
|
+
// Refused for good: nothing changed. The application rotates the refresh token it is shown before it
|
|
502
|
+
// looks at the organization, so the one on the device is renewed now, while the application still
|
|
503
|
+
// answers it (and if the session is over, this is what says so).
|
|
504
|
+
await noteSwitch(null);
|
|
505
|
+
await fresh(true).catch(() => undefined);
|
|
506
|
+
}
|
|
507
|
+
throw e;
|
|
508
|
+
}
|
|
509
|
+
switchBackoff.succeeded();
|
|
510
|
+
if (!(await sameEpoch(started, t)))
|
|
511
|
+
return;
|
|
512
|
+
// The same person, for this app, from this application (as a refresh's ID token); else the session ends here.
|
|
513
|
+
if (!t.idToken || !sameIdentity(s.it, t.idToken, { issuer, clientId: o.clientId })) {
|
|
514
|
+
if (t.refreshToken)
|
|
515
|
+
await revokeToken(creds, { token: t.refreshToken, hint: "refresh_token" });
|
|
516
|
+
await save(null);
|
|
517
|
+
throw new OAuthError("invalid_id_token", "The answer is not for this session.");
|
|
518
|
+
}
|
|
519
|
+
epoch++;
|
|
520
|
+
// As a refresh's (fresh()): this token takes the place of the one the app was using, and an API that
|
|
521
|
+
// refuses that one right after the change (a request of the organization before) is asking for this one.
|
|
522
|
+
latest = { to: t.accessToken, at: Date.now() };
|
|
523
|
+
// The new sign-in on the device first, then the record of the change: an app ended in between asks again
|
|
524
|
+
// at its next start with a token that works, never with one that does not.
|
|
525
|
+
await save({ at: t.accessToken, rt: t.refreshToken, it: t.idToken, exp: t.expiresAt, u: s.u });
|
|
526
|
+
await noteSwitch(null);
|
|
527
|
+
publish();
|
|
528
|
+
}
|
|
529
|
+
finally {
|
|
530
|
+
switching = null;
|
|
531
|
+
}
|
|
532
|
+
})();
|
|
533
|
+
return switching;
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* The session, in another of the person's organizations (its slug, from listOrganizations): new tokens for it, and
|
|
537
|
+
* the ones the device had stop working. A refusal throws and changes nothing. If no answer comes (or a 429, a
|
|
538
|
+
* 5xx), it throws `temporarily_unavailable` and the change stays asked for: it is finished by the next getToken(),
|
|
539
|
+
* the next call here or the next start of the app, whichever comes first.
|
|
540
|
+
*/
|
|
541
|
+
async function switchOrganization(slug) {
|
|
542
|
+
if (switching)
|
|
543
|
+
await switching.catch(() => undefined);
|
|
544
|
+
if (!session)
|
|
545
|
+
throw new OAuthError("login_required", "Not signed in.", 401);
|
|
546
|
+
// Already there, with nothing left to settle (a second tap): nothing to ask.
|
|
547
|
+
if (!switchTo && organizationOf(session.at) === slug)
|
|
548
|
+
return state;
|
|
549
|
+
const before = switchTo;
|
|
550
|
+
try {
|
|
551
|
+
await noteSwitch(slug);
|
|
552
|
+
}
|
|
553
|
+
catch (e) {
|
|
554
|
+
// Not on record on the device: not asked for, and never sent without its record. What was asked for
|
|
555
|
+
// before stays as it was: a change still to settle keeps being the one (its record is what the device
|
|
556
|
+
// has, and the refresh token may be one only that change can present). Unless something else has
|
|
557
|
+
// changed it meanwhile (a sign-out, another change asked for).
|
|
558
|
+
if (switchTo === slug)
|
|
559
|
+
switchTo = before;
|
|
560
|
+
throw e;
|
|
561
|
+
}
|
|
562
|
+
await settleSwitch();
|
|
563
|
+
return state;
|
|
564
|
+
}
|
|
565
|
+
/**
|
|
566
|
+
* An access token for your API; null when signed out. One about to expire is refreshed: while it still lasts it
|
|
567
|
+
* is given at once and the refresh goes on in the background; once expired, the call waits for the refresh.
|
|
568
|
+
* forceRefresh: a new one even if this one still lasts (your API just refused it). Compare-and-refresh: several
|
|
569
|
+
* refusals of the same token make one refresh, and a token a refresh (forced or not) gave less than 30 s ago is given
|
|
570
|
+
* again instead of rotating once more. If no new token can be had now (no answer, a 429), it throws an
|
|
571
|
+
* OAuthError (temporarily_unavailable) and the session stays; it resolves to null only when the session is over.
|
|
572
|
+
*/
|
|
573
|
+
async function getToken(opts = {}) {
|
|
574
|
+
if (switchTo) {
|
|
575
|
+
// A change of organization to settle first: until then the refresh token is the change's to present.
|
|
576
|
+
const before = session;
|
|
577
|
+
const lasting = (x) => (x && x.exp > now() ? x.at : null);
|
|
578
|
+
const mayAsk = !!switching || !switchBackoff.waiting;
|
|
579
|
+
if (mayAsk && opts.forceRefresh !== true && lasting(before)) {
|
|
580
|
+
settleSwitch().catch(() => undefined); // in the background: the token in hand is good meanwhile (R-03)
|
|
581
|
+
return lasting(before);
|
|
582
|
+
}
|
|
583
|
+
if (mayAsk)
|
|
584
|
+
await settleSwitch().catch(() => undefined);
|
|
585
|
+
if (switchTo) {
|
|
586
|
+
if (opts.forceRefresh === true && session)
|
|
587
|
+
throw new OAuthError("temporarily_unavailable", "Could not get a new token now; the person is still signed in. Try again in a moment.", 503, switchBackoff.waiting ? Math.ceil(switchBackoff.waiting / 1000) : undefined);
|
|
588
|
+
return lasting(session);
|
|
589
|
+
}
|
|
590
|
+
// Settled: the new sign-in's token (refused for good: the session as it was, below).
|
|
591
|
+
if (session !== before)
|
|
592
|
+
return session?.at ?? null;
|
|
593
|
+
}
|
|
594
|
+
if (opts.forceRefresh !== true)
|
|
595
|
+
return (await fresh())?.at ?? null;
|
|
596
|
+
const s = session;
|
|
597
|
+
if (!s)
|
|
598
|
+
return null;
|
|
599
|
+
if (s.at === latest.to && Date.now() - latest.at < FORCE_COOLDOWN_MS)
|
|
600
|
+
return s.at;
|
|
601
|
+
await fresh(true);
|
|
602
|
+
const after = session;
|
|
603
|
+
if (!after)
|
|
604
|
+
return null;
|
|
605
|
+
if (after.at === s.at)
|
|
606
|
+
throw new OAuthError("temporarily_unavailable", "Could not get a new token now; the person is still signed in. Try again in a moment.", 503, backoff.waiting ? Math.ceil(backoff.waiting / 1000) : undefined);
|
|
607
|
+
return after.at;
|
|
608
|
+
}
|
|
609
|
+
/**
|
|
610
|
+
* The organizations the person can use this app in (those with your API's product), for a switcher: what the
|
|
611
|
+
* application's userinfo says for a token of your `audience`. `state.organization` is the one the session is in.
|
|
612
|
+
*/
|
|
613
|
+
async function listOrganizations() {
|
|
614
|
+
const accessToken = await getToken();
|
|
615
|
+
// No token now (expired, and no way to renew it at the moment) is not "signed out".
|
|
616
|
+
if (!accessToken && session)
|
|
617
|
+
throw new OAuthError("temporarily_unavailable", "Could not read the organizations now. Try again in a moment.", 503);
|
|
618
|
+
if (!accessToken)
|
|
619
|
+
throw new OAuthError("login_required", "Not signed in.", 401);
|
|
620
|
+
const claims = await fetchUserInfo({ issuer, accessToken, fetch });
|
|
621
|
+
if (!claims)
|
|
622
|
+
throw new OAuthError("temporarily_unavailable", "Could not read the organizations now. Try again in a moment.", 503);
|
|
623
|
+
return organizationsOf(claims.orgs);
|
|
624
|
+
}
|
|
358
625
|
return {
|
|
359
626
|
get state() {
|
|
360
627
|
return state;
|
|
@@ -377,48 +644,41 @@ export function createAccountsClient(o) {
|
|
|
377
644
|
catch {
|
|
378
645
|
session = null;
|
|
379
646
|
}
|
|
647
|
+
// A change of organization the app was ended in the middle of: before anything else presents the refresh token.
|
|
648
|
+
const unsettled = await Promise.resolve(o.storage.get(switchKey)).catch(() => null);
|
|
649
|
+
if (unsettled && !session)
|
|
650
|
+
await noteSwitch(null);
|
|
651
|
+
else
|
|
652
|
+
switchTo = unsettled || null;
|
|
380
653
|
// What the device has, at once (offline, or on a slow network, the app does not wait); then fresh.
|
|
381
654
|
publish();
|
|
382
|
-
|
|
655
|
+
if (switchTo)
|
|
656
|
+
await settleSwitch().catch(() => undefined);
|
|
657
|
+
if (!switchTo)
|
|
658
|
+
await fresh(false, true);
|
|
383
659
|
publish();
|
|
384
660
|
return state;
|
|
385
661
|
},
|
|
386
662
|
/** Opens the hosted page; resolves once the person is back (signed in, or unchanged if they closed it). */
|
|
387
663
|
signIn: () => signIn(),
|
|
388
|
-
/** Your own sign-in screen instead of the hosted page: a code to the email, then the code. */
|
|
664
|
+
/** Your own sign-in screen instead of the hosted page: a code to the email, then the code, then (in several organizations) which one. */
|
|
389
665
|
sendEmailCode,
|
|
390
666
|
signInWithEmailCode,
|
|
667
|
+
chooseOrganization,
|
|
391
668
|
/** The same, on "create an account". */
|
|
392
669
|
signUp: () => signIn("create"),
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
* refusals of the same token make one refresh, and a token a refresh (forced or not) gave less than 30 s ago is given
|
|
398
|
-
* again instead of rotating once more. If no new token can be had now (no answer, a 429), it throws an
|
|
399
|
-
* OAuthError (temporarily_unavailable) and the session stays; it resolves to null only when the session is over.
|
|
400
|
-
*/
|
|
401
|
-
async getToken(opts = {}) {
|
|
402
|
-
if (opts.forceRefresh !== true)
|
|
403
|
-
return (await fresh())?.at ?? null;
|
|
404
|
-
const s = session;
|
|
405
|
-
if (!s)
|
|
406
|
-
return null;
|
|
407
|
-
if (s.at === latest.to && Date.now() - latest.at < FORCE_COOLDOWN_MS)
|
|
408
|
-
return s.at;
|
|
409
|
-
await fresh(true);
|
|
410
|
-
const after = session;
|
|
411
|
-
if (!after)
|
|
412
|
-
return null;
|
|
413
|
-
if (after.at === s.at)
|
|
414
|
-
throw new OAuthError("temporarily_unavailable", "Could not get a new token now; the person is still signed in. Try again in a moment.", 503, backoff.waiting ? Math.ceil(backoff.waiting / 1000) : undefined);
|
|
415
|
-
return after.at;
|
|
416
|
-
},
|
|
670
|
+
getToken,
|
|
671
|
+
/** The person's organizations for this app, and the session in another of them, without the hosted page. */
|
|
672
|
+
listOrganizations,
|
|
673
|
+
switchOrganization,
|
|
417
674
|
/** Out here (the refresh token revoked) and, unless told otherwise, on the hosted pages too. */
|
|
418
675
|
async signOut(opts = {}) {
|
|
419
676
|
const s = session;
|
|
420
677
|
epoch++; // a refresh on its way now will not bring the session back
|
|
678
|
+
choice = null; // nor is a sign-in waiting for its organization left to finish
|
|
421
679
|
await save(null);
|
|
680
|
+
// With a change of organization that was never settled too: revoking the token the device has ends, in the
|
|
681
|
+
// application, whatever it made instead of it (a sign-in whose answer never arrived).
|
|
422
682
|
if (s?.rt)
|
|
423
683
|
await revokeToken(creds, { token: s.rt, hint: "refresh_token" });
|
|
424
684
|
if (s && opts.endSession !== false)
|
package/dist/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,5 +4,5 @@ export { SignedIn, SignedOut, useAuth, useUser, type AccountsProviderProps } fro
|
|
|
4
4
|
export { completeSignIn };
|
|
5
5
|
/** What getToken({ forceRefresh: true }) throws when no new token can be had now (error "temporarily_unavailable"). */
|
|
6
6
|
export { OAuthError } from "@iaurelius/accounts/oidc";
|
|
7
|
-
export type { AccountsState, SessionUser } from "./core.js";
|
|
7
|
+
export type { AccountsState, Organization, SessionUser } from "./core.js";
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,cAAc,EAA6C,MAAM,WAAW,CAAC;AAG1G,eAAO,MAAM,gBAAgB,oKAA4G,CAAC;AAC1I,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,uHAAuH;AACvH,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,cAAc,EAA6C,MAAM,WAAW,CAAC;AAG1G,eAAO,MAAM,gBAAgB,oKAA4G,CAAC;AAC1I,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,uHAAuH;AACvH,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/react.d.ts
CHANGED
|
@@ -28,6 +28,10 @@ export declare function useAuth(): {
|
|
|
28
28
|
isSignedIn: boolean;
|
|
29
29
|
userId: string | null;
|
|
30
30
|
sessionId: string | null;
|
|
31
|
+
/** The organization the session is in (its slug), when your API's token says so. */
|
|
32
|
+
organization: string | null;
|
|
33
|
+
/** Signing in on your own screen with an organization left to choose: the ones to offer. Null otherwise. */
|
|
34
|
+
organizationChoice: import("./core.js").Organization[] | null;
|
|
31
35
|
getToken: (opts?: {
|
|
32
36
|
forceRefresh?: boolean;
|
|
33
37
|
}) => Promise<string | null>;
|
|
@@ -37,6 +41,9 @@ export declare function useAuth(): {
|
|
|
37
41
|
waitlist: boolean;
|
|
38
42
|
}>;
|
|
39
43
|
signInWithEmailCode: (email: string, code: string) => Promise<AccountsState>;
|
|
44
|
+
chooseOrganization: (slug: string) => Promise<AccountsState>;
|
|
45
|
+
listOrganizations: () => Promise<import("./core.js").Organization[]>;
|
|
46
|
+
switchOrganization: (slug: string) => Promise<AccountsState>;
|
|
40
47
|
signOut: (opts?: {
|
|
41
48
|
endSession?: boolean;
|
|
42
49
|
}) => Promise<void>;
|
package/dist/react.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"AACA,OAAO,EAA2D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChG,OAAO,EAA6C,KAAK,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAInI,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,oHAAoH;IACpH,cAAc,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6FAA6F;IAC7F,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,oFAAoF;AACpF,MAAM,MAAM,QAAQ,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE,CAAC;AAEnJ,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,2FACmF,qBAAqB,iCActJ;AAQD,wBAAgB,OAAO;IAGnB,QAAQ;IACR,UAAU;IACV,MAAM;IACN,SAAS;IACT,QAAQ;;;IACR,MAAM;IACN,MAAM;IACN,aAAa;;;IACb,mBAAmB;IACnB,OAAO;;;EAEV;AAED,wBAAgB,OAAO;IAEZ,QAAQ;IAAkB,UAAU;IAAoB,IAAI;EACtE;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,sCAG9D;AAED,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,sCAG/D"}
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"AACA,OAAO,EAA2D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChG,OAAO,EAA6C,KAAK,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAInI,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,oHAAoH;IACpH,cAAc,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6FAA6F;IAC7F,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,oFAAoF;AACpF,MAAM,MAAM,QAAQ,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE,CAAC;AAEnJ,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,2FACmF,qBAAqB,iCActJ;AAQD,wBAAgB,OAAO;IAGnB,QAAQ;IACR,UAAU;IACV,MAAM;IACN,SAAS;IACT,oFAAoF;IACpF,YAAY;IACZ,4GAA4G;IAC5G,kBAAkB;IAClB,QAAQ;;;IACR,MAAM;IACN,MAAM;IACN,aAAa;;;IACb,mBAAmB;IACnB,kBAAkB;IAClB,iBAAiB;IACjB,kBAAkB;IAClB,OAAO;;;EAEV;AAED,wBAAgB,OAAO;IAEZ,QAAQ;IAAkB,UAAU;IAAoB,IAAI;EACtE;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,sCAG9D;AAED,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,sCAG/D"}
|
package/dist/react.js
CHANGED
|
@@ -28,11 +28,18 @@ export function useAuth() {
|
|
|
28
28
|
isSignedIn: state.isSignedIn,
|
|
29
29
|
userId: state.user?.id ?? null,
|
|
30
30
|
sessionId: state.sessionId,
|
|
31
|
+
/** The organization the session is in (its slug), when your API's token says so. */
|
|
32
|
+
organization: state.organization,
|
|
33
|
+
/** Signing in on your own screen with an organization left to choose: the ones to offer. Null otherwise. */
|
|
34
|
+
organizationChoice: state.organizationChoice,
|
|
31
35
|
getToken: client.getToken,
|
|
32
36
|
signIn: client.signIn,
|
|
33
37
|
signUp: client.signUp,
|
|
34
38
|
sendEmailCode: client.sendEmailCode,
|
|
35
39
|
signInWithEmailCode: client.signInWithEmailCode,
|
|
40
|
+
chooseOrganization: client.chooseOrganization,
|
|
41
|
+
listOrganizations: client.listOrganizations,
|
|
42
|
+
switchOrganization: client.switchOrganization,
|
|
36
43
|
signOut: client.signOut,
|
|
37
44
|
};
|
|
38
45
|
}
|
package/dist/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iaurelius/accounts-expo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Accounts by iAurelius for Expo: sign-in on the hosted page in an authentication session, tokens in SecureStore, useAuth() and getToken() that refreshes itself.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"auth",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@iaurelius/accounts": "^0.
|
|
38
|
+
"@iaurelius/accounts": "^0.5.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"expo-crypto": "*",
|