@atlasauth/react 0.13.0 → 0.14.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 +16 -0
- package/dist/AtlasProvider.d.ts +8 -1
- package/dist/AtlasProvider.js +21 -0
- package/dist/AtlasProvider.js.map +1 -1
- package/dist/account.d.ts +7 -0
- package/dist/account.js +115 -7
- package/dist/account.js.map +1 -1
- package/dist/billing.d.ts +25 -0
- package/dist/billing.js +40 -5
- package/dist/billing.js.map +1 -1
- package/dist/components.d.ts +7 -3
- package/dist/components.js +11 -1
- package/dist/components.js.map +1 -1
- package/dist/flow.d.ts +23 -9
- package/dist/flow.js +130 -11
- package/dist/flow.js.map +1 -1
- package/dist/i18n.js +55 -0
- package/dist/i18n.js.map +1 -1
- package/dist/impersonation.d.ts +25 -0
- package/dist/impersonation.js +52 -0
- package/dist/impersonation.js.map +1 -0
- package/dist/mfa-steps.d.ts +53 -0
- package/dist/mfa-steps.js +148 -0
- package/dist/mfa-steps.js.map +1 -0
- package/dist/organization.d.ts +82 -1
- package/dist/organization.js +222 -4
- package/dist/organization.js.map +1 -1
- package/dist/reverification.d.ts +19 -0
- package/dist/reverification.js +49 -1
- package/dist/reverification.js.map +1 -1
- package/dist/sign-in.js +2 -2
- package/dist/sign-in.js.map +1 -1
- package/dist/sign-up.d.ts +6 -0
- package/dist/sign-up.js +66 -13
- package/dist/sign-up.js.map +1 -1
- package/dist/styles.js +8 -0
- package/dist/styles.js.map +1 -1
- package/dist/types.d.ts +19 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -4
package/dist/organization.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { OrganizationProfileController, type OrganizationProfileState } from '@atlasauth/js';
|
|
1
2
|
import { useOrganization } from './hooks';
|
|
3
|
+
import { useReverification } from './reverification';
|
|
2
4
|
export declare function OrganizationSwitcher(): import("react").JSX.Element;
|
|
3
5
|
/**
|
|
4
6
|
* Clerk-parity `useOrganizationList()`. The memberships the signed-in user
|
|
@@ -34,4 +36,83 @@ export declare function CreateOrganization({ onCreate, }?: {
|
|
|
34
36
|
* can make one without leaving the list.
|
|
35
37
|
*/
|
|
36
38
|
export declare function OrganizationList(): import("react").JSX.Element;
|
|
37
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Headless state for the active organization's profile: members, pending
|
|
41
|
+
* invitations and roles, with the admin actions (change role, remove, invite,
|
|
42
|
+
* revoke, resend) and the member actions (leave; delete for an admin, which
|
|
43
|
+
* parks for a password re-authentication on a stale session). The same
|
|
44
|
+
* `OrganizationProfileController` backs every SDK's `<OrganizationProfile>`.
|
|
45
|
+
*/
|
|
46
|
+
export declare function useOrganizationProfile(): {
|
|
47
|
+
organizationId: string | null;
|
|
48
|
+
state: OrganizationProfileState;
|
|
49
|
+
canManage: boolean;
|
|
50
|
+
isAdmin: boolean;
|
|
51
|
+
controller: OrganizationProfileController | null;
|
|
52
|
+
deleteOrganization(): Promise<boolean>;
|
|
53
|
+
reverification: ReturnType<typeof useReverification>;
|
|
54
|
+
};
|
|
55
|
+
export interface OrganizationProfileProps {
|
|
56
|
+
/** Called after the user leaves or deletes the organization (e.g. to navigate away). */
|
|
57
|
+
onExit?(reason: 'left' | 'deleted'): void;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Clerk-parity `<OrganizationProfile>`: the active organization's members
|
|
61
|
+
* (admins change roles and remove), invitations (admins invite, revoke and
|
|
62
|
+
* resend) and settings (leave; an admin deletes, after re-authenticating).
|
|
63
|
+
* Every control is gated on the ACTIVE org role, matching the server's rule.
|
|
64
|
+
*/
|
|
65
|
+
export declare function OrganizationProfile({ onExit }?: OrganizationProfileProps): import("react").JSX.Element | null;
|
|
66
|
+
/** One entry of an organization's audit trail, as the Frontend API returns it. */
|
|
67
|
+
export interface OrganizationAuditLogEntry {
|
|
68
|
+
object: 'audit_log';
|
|
69
|
+
id: string;
|
|
70
|
+
action: string;
|
|
71
|
+
actor: {
|
|
72
|
+
type: string;
|
|
73
|
+
id: string | null;
|
|
74
|
+
};
|
|
75
|
+
target: {
|
|
76
|
+
type: string | null;
|
|
77
|
+
id: string | null;
|
|
78
|
+
};
|
|
79
|
+
organization_id: string;
|
|
80
|
+
ip: string | null;
|
|
81
|
+
user_agent: string | null;
|
|
82
|
+
metadata: Record<string, unknown>;
|
|
83
|
+
created_at: number;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The active organization's audit trail, for org admins: one page at a time,
|
|
87
|
+
* newest first, with a "load more" cursor. `action` narrows it (exact, or a
|
|
88
|
+
* prefix ending in `.`). Returns `forbidden: true` when the signed-in member is
|
|
89
|
+
* not allowed to read it, so the caller can hide the surface.
|
|
90
|
+
*/
|
|
91
|
+
export declare function useOrganizationAuditLog(options?: {
|
|
92
|
+
pageSize?: number;
|
|
93
|
+
action?: string;
|
|
94
|
+
}): {
|
|
95
|
+
entries: OrganizationAuditLogEntry[];
|
|
96
|
+
loading: boolean;
|
|
97
|
+
forbidden: boolean;
|
|
98
|
+
hasMore: boolean;
|
|
99
|
+
loadMore(): Promise<void>;
|
|
100
|
+
reload(): Promise<void>;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* `<OrganizationAuditLog/>` — the active organization's audit trail for its
|
|
104
|
+
* admins, next to `<OrganizationProfile/>`. Renders nothing for a member who may
|
|
105
|
+
* not read it (the server is the authority; the component just follows it).
|
|
106
|
+
* Labels are props so an app can localise them.
|
|
107
|
+
*/
|
|
108
|
+
export declare function OrganizationAuditLog({ pageSize, action, labels, formatDate, }?: {
|
|
109
|
+
pageSize?: number;
|
|
110
|
+
action?: string;
|
|
111
|
+
labels?: {
|
|
112
|
+
title?: string;
|
|
113
|
+
empty?: string;
|
|
114
|
+
loadMore?: string;
|
|
115
|
+
actor?: string;
|
|
116
|
+
};
|
|
117
|
+
formatDate?(ms: number): string;
|
|
118
|
+
}): import("react").JSX.Element | null;
|
package/dist/organization.js
CHANGED
|
@@ -5,13 +5,17 @@ exports.OrganizationSwitcher = OrganizationSwitcher;
|
|
|
5
5
|
exports.useOrganizationList = useOrganizationList;
|
|
6
6
|
exports.CreateOrganization = CreateOrganization;
|
|
7
7
|
exports.OrganizationList = OrganizationList;
|
|
8
|
+
exports.useOrganizationProfile = useOrganizationProfile;
|
|
8
9
|
exports.OrganizationProfile = OrganizationProfile;
|
|
10
|
+
exports.useOrganizationAuditLog = useOrganizationAuditLog;
|
|
11
|
+
exports.OrganizationAuditLog = OrganizationAuditLog;
|
|
9
12
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
10
13
|
const react_1 = require("react");
|
|
14
|
+
const js_1 = require("@atlasauth/js");
|
|
11
15
|
const AtlasProvider_1 = require("./AtlasProvider");
|
|
12
16
|
const hooks_1 = require("./hooks");
|
|
13
17
|
const components_shared_1 = require("./components-shared");
|
|
14
|
-
const
|
|
18
|
+
const reverification_1 = require("./reverification");
|
|
15
19
|
function OrganizationSwitcher() {
|
|
16
20
|
const { memberships, organization, setActive } = (0, hooks_1.useOrganization)();
|
|
17
21
|
const t = (0, components_shared_1.useText)();
|
|
@@ -102,13 +106,227 @@ function OrganizationList() {
|
|
|
102
106
|
const itemClass = (0, components_shared_1.useClass)('menuItem', 'atlas-menu-item');
|
|
103
107
|
return ((0, jsx_runtime_1.jsxs)("div", { className: menuClass, "data-atlas": "organization-list", children: [memberships.map((membership) => ((0, jsx_runtime_1.jsx)("button", { className: itemClass, disabled: membership.organization.id === organization?.id, onClick: () => void setActive(membership.organization.id), children: membership.organization.name }, membership.organization.id))), (0, jsx_runtime_1.jsx)("span", { className: itemClass, "data-atlas": "organization-list-divider", children: t('organization.orCreate') }), (0, jsx_runtime_1.jsx)(CreateOrganization, {})] }));
|
|
104
108
|
}
|
|
105
|
-
|
|
109
|
+
/**
|
|
110
|
+
* Headless state for the active organization's profile: members, pending
|
|
111
|
+
* invitations and roles, with the admin actions (change role, remove, invite,
|
|
112
|
+
* revoke, resend) and the member actions (leave; delete for an admin, which
|
|
113
|
+
* parks for a password re-authentication on a stale session). The same
|
|
114
|
+
* `OrganizationProfileController` backs every SDK's `<OrganizationProfile>`.
|
|
115
|
+
*/
|
|
116
|
+
function useOrganizationProfile() {
|
|
117
|
+
const { organization, membership } = (0, hooks_1.useOrganization)();
|
|
118
|
+
const { has } = (0, hooks_1.useAuth)();
|
|
119
|
+
const { reload } = (0, AtlasProvider_1.useAtlas)();
|
|
120
|
+
const client = (0, components_shared_1.useMeClient)();
|
|
121
|
+
const reverification = (0, reverification_1.useReverification)();
|
|
122
|
+
const canManage = has({ permission: 'org:sys_memberships:manage' });
|
|
123
|
+
const isAdmin = membership?.role === 'org:admin';
|
|
124
|
+
const organizationId = organization?.id ?? null;
|
|
125
|
+
const controller = (0, react_1.useMemo)(() => organizationId
|
|
126
|
+
? new js_1.OrganizationProfileController(client, organizationId, {
|
|
127
|
+
canManage,
|
|
128
|
+
onChange: async () => {
|
|
129
|
+
await reload();
|
|
130
|
+
},
|
|
131
|
+
})
|
|
132
|
+
: null, [client, organizationId, canManage, reload]);
|
|
133
|
+
(0, react_1.useEffect)(() => {
|
|
134
|
+
void controller?.load();
|
|
135
|
+
}, [controller]);
|
|
136
|
+
const empty = (0, react_1.useMemo)(() => ({ status: 'idle', members: [], membersTotal: 0, invitations: [], roles: [], permissions: [], error: null, busy: null }), []);
|
|
137
|
+
const state = (0, react_1.useSyncExternalStore)((0, react_1.useCallback)((cb) => (controller ? controller.subscribe(cb) : () => undefined), [controller]), () => controller?.getState() ?? empty, () => controller?.getState() ?? empty);
|
|
138
|
+
const { withReverification } = reverification;
|
|
139
|
+
const remove = (0, react_1.useCallback)(async () => {
|
|
140
|
+
if (!organizationId)
|
|
141
|
+
return false;
|
|
142
|
+
await withReverification(() => (0, js_1.deleteOrganization)(client, organizationId));
|
|
143
|
+
await reload();
|
|
144
|
+
return true;
|
|
145
|
+
}, [client, organizationId, reload, withReverification]);
|
|
146
|
+
return { organizationId, state, canManage, isAdmin, controller, deleteOrganization: remove, reverification };
|
|
147
|
+
}
|
|
148
|
+
function memberName(member, fallback) {
|
|
149
|
+
const name = [member.user?.first_name, member.user?.last_name].filter(Boolean).join(' ');
|
|
150
|
+
return name || fallback;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Clerk-parity `<OrganizationProfile>`: the active organization's members
|
|
154
|
+
* (admins change roles and remove), invitations (admins invite, revoke and
|
|
155
|
+
* resend) and settings (leave; an admin deletes, after re-authenticating).
|
|
156
|
+
* Every control is gated on the ACTIVE org role, matching the server's rule.
|
|
157
|
+
*/
|
|
158
|
+
function OrganizationProfile({ onExit } = {}) {
|
|
106
159
|
const { organization, membership } = (0, hooks_1.useOrganization)();
|
|
160
|
+
const { userId } = (0, hooks_1.useAuth)();
|
|
107
161
|
const t = (0, components_shared_1.useText)();
|
|
162
|
+
const errorText = (0, components_shared_1.useErrorText)();
|
|
163
|
+
const cardClass = (0, components_shared_1.useClass)('card', 'atlas-card');
|
|
164
|
+
const cls = (0, components_shared_1.useClasses)();
|
|
165
|
+
const profile = useOrganizationProfile();
|
|
166
|
+
const { state, controller, canManage, isAdmin, reverification } = profile;
|
|
167
|
+
const [tab, setTab] = (0, react_1.useState)('members');
|
|
168
|
+
// The custom-role editor: null = creating a new role, else the id being edited.
|
|
169
|
+
const [editingRole, setEditingRole] = (0, react_1.useState)(null);
|
|
170
|
+
const [roleKey, setRoleKey] = (0, react_1.useState)('');
|
|
171
|
+
const [roleName, setRoleName] = (0, react_1.useState)('');
|
|
172
|
+
const [rolePerms, setRolePerms] = (0, react_1.useState)([]);
|
|
173
|
+
const [email, setEmail] = (0, react_1.useState)('');
|
|
174
|
+
const [inviteRole, setInviteRole] = (0, react_1.useState)('org:member');
|
|
175
|
+
const [confirm, setConfirm] = (0, react_1.useState)(null);
|
|
176
|
+
const [password, setPassword] = (0, react_1.useState)('');
|
|
177
|
+
const [localError, setLocalError] = (0, react_1.useState)(null);
|
|
178
|
+
if (!organization || !controller)
|
|
179
|
+
return null;
|
|
180
|
+
const buttonSecondary = cls('formButtonSecondary', 'atlas-button-secondary');
|
|
181
|
+
const buttonPrimary = cls('formButtonPrimary', 'atlas-button');
|
|
182
|
+
const busy = (key) => state.busy === key;
|
|
183
|
+
const error = localError ?? (state.error ? errorText(state.error) : null);
|
|
184
|
+
const sendInvite = async () => {
|
|
185
|
+
const address = email.trim();
|
|
186
|
+
if (!address)
|
|
187
|
+
return;
|
|
188
|
+
const out = await controller.invite(address, inviteRole);
|
|
189
|
+
if (out)
|
|
190
|
+
setEmail('');
|
|
191
|
+
};
|
|
192
|
+
const doLeave = async () => {
|
|
193
|
+
setLocalError(null);
|
|
194
|
+
if (await controller.leave())
|
|
195
|
+
onExit?.('left');
|
|
196
|
+
setConfirm(null);
|
|
197
|
+
};
|
|
198
|
+
const doDelete = async () => {
|
|
199
|
+
setLocalError(null);
|
|
200
|
+
try {
|
|
201
|
+
if (await profile.deleteOrganization())
|
|
202
|
+
onExit?.('deleted');
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
if (!(err instanceof Error && err.message === 'Reverification cancelled.')) {
|
|
206
|
+
setLocalError(err instanceof Error ? errorText(err) : t('error.generic'));
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
setConfirm(null);
|
|
210
|
+
};
|
|
211
|
+
const roleOptions = state.roles.length > 0 ? state.roles : [{ key: 'org:member', name: 'org:member' }];
|
|
212
|
+
const customRoles = state.roles.filter((r) => Boolean(r.organization_id));
|
|
213
|
+
const resetRoleForm = () => {
|
|
214
|
+
setEditingRole(null);
|
|
215
|
+
setRoleKey('');
|
|
216
|
+
setRoleName('');
|
|
217
|
+
setRolePerms([]);
|
|
218
|
+
};
|
|
219
|
+
const saveRole = async () => {
|
|
220
|
+
const out = editingRole
|
|
221
|
+
? await controller.updateRole(editingRole, { name: roleName.trim(), permissions: rolePerms })
|
|
222
|
+
: await controller.createRole({ key: roleKey.trim(), name: roleName.trim(), permissions: rolePerms });
|
|
223
|
+
if (out)
|
|
224
|
+
resetRoleForm();
|
|
225
|
+
};
|
|
226
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: cardClass, "data-atlas": "organization-profile", children: [(0, jsx_runtime_1.jsx)("h1", { className: cls('headerTitle', 'atlas-heading'), children: organization.name }), (0, jsx_runtime_1.jsxs)("p", { className: cls('headerSubtitle', 'atlas-subtitle'), children: [t('organization.roleLabel'), ": ", membership?.role] }), (0, jsx_runtime_1.jsx)("div", { className: cls('menu', 'atlas-menu'), role: "tablist", children: ['members', ...(canManage ? ['invitations', 'roles'] : []), 'settings'].map((key) => ((0, jsx_runtime_1.jsx)("button", { type: "button", role: "tab", "aria-selected": tab === key, className: cls('menuItem', 'atlas-menu-item'), "data-atlas": `organization-tab-${key}`, onClick: () => setTab(key), children: t(`organization.${key}`) }, key))) }), error ? ((0, jsx_runtime_1.jsx)("p", { className: cls('alert', 'atlas-alert'), role: "alert", children: error })) : null, tab === 'members' ? ((0, jsx_runtime_1.jsx)("ul", { className: cls('list', 'atlas-list'), "data-atlas": "organization-members", children: state.members.map((member) => {
|
|
227
|
+
const self = member.user?.id === userId;
|
|
228
|
+
const id = member.user?.id ?? member.id;
|
|
229
|
+
return ((0, jsx_runtime_1.jsxs)("li", { "data-atlas": "organization-member", children: [(0, jsx_runtime_1.jsxs)("span", { children: [memberName(member, t('organization.unnamedMember')), self ? ` ${t('organization.you')}` : ''] }), canManage && !self && member.user ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("select", { "aria-label": t('organization.roleLabel'), className: cls('formFieldInput', 'atlas-input'), value: member.role, disabled: busy(`role:${id}`), onChange: (event) => void controller.changeRole(id, event.target.value), children: roleOptions.map((role) => ((0, jsx_runtime_1.jsx)("option", { value: role.key, children: role.name }, role.key))) }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: buttonSecondary, disabled: busy(`remove:${id}`), onClick: () => void controller.removeMember(id), children: t('organization.remove') })] })) : ((0, jsx_runtime_1.jsxs)("span", { children: [" \u00B7 ", member.role] }))] }, member.id));
|
|
230
|
+
}) })) : null, tab === 'invitations' && canManage ? ((0, jsx_runtime_1.jsxs)("div", { "data-atlas": "organization-invitations", children: [(0, jsx_runtime_1.jsxs)("form", { onSubmit: (event) => {
|
|
231
|
+
event.preventDefault();
|
|
232
|
+
void sendInvite();
|
|
233
|
+
}, children: [(0, jsx_runtime_1.jsxs)("label", { className: cls('formField', 'atlas-field'), children: [(0, jsx_runtime_1.jsx)("span", { className: cls('formFieldLabel', 'atlas-field-label'), children: t('organization.emailLabel') }), (0, jsx_runtime_1.jsx)("input", { className: cls('formFieldInput', 'atlas-input'), type: "email", value: email, onChange: (event) => setEmail(event.target.value) })] }), (0, jsx_runtime_1.jsxs)("label", { className: cls('formField', 'atlas-field'), children: [(0, jsx_runtime_1.jsx)("span", { className: cls('formFieldLabel', 'atlas-field-label'), children: t('organization.roleLabel') }), (0, jsx_runtime_1.jsx)("select", { className: cls('formFieldInput', 'atlas-input'), value: inviteRole, onChange: (event) => setInviteRole(event.target.value), children: roleOptions.map((role) => ((0, jsx_runtime_1.jsx)("option", { value: role.key, children: role.name }, role.key))) })] }), (0, jsx_runtime_1.jsx)("button", { type: "submit", className: buttonPrimary, disabled: busy('invite') || !email.trim(), children: t('organization.sendInvite') })] }), state.invitations.length === 0 ? ((0, jsx_runtime_1.jsx)("p", { className: cls('text', 'atlas-text'), children: t('organization.noInvitations') })) : ((0, jsx_runtime_1.jsx)("ul", { className: cls('list', 'atlas-list'), children: state.invitations.map((inv) => ((0, jsx_runtime_1.jsxs)("li", { "data-atlas": "organization-invitation", children: [(0, jsx_runtime_1.jsxs)("span", { children: [inv.email_address, " \u00B7 ", inv.role] }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: buttonSecondary, disabled: busy(`resend:${inv.id}`), onClick: () => void controller.resendInvitation(inv.id), children: t('organization.resend') }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: buttonSecondary, disabled: busy(`revoke:${inv.id}`), onClick: () => void controller.revokeInvitation(inv.id), children: t('organization.revoke') })] }, inv.id))) }))] })) : null, tab === 'roles' && canManage ? ((0, jsx_runtime_1.jsxs)("div", { "data-atlas": "organization-roles", children: [customRoles.length === 0 ? ((0, jsx_runtime_1.jsx)("p", { className: cls('text', 'atlas-text'), children: t('organization.noCustomRoles') })) : ((0, jsx_runtime_1.jsx)("ul", { className: cls('list', 'atlas-list'), children: customRoles.map((role) => ((0, jsx_runtime_1.jsxs)("li", { "data-atlas": "organization-role", children: [(0, jsx_runtime_1.jsxs)("span", { children: [role.name, " \u00B7 ", role.key] }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: buttonSecondary, onClick: () => {
|
|
234
|
+
setEditingRole(role.id ?? null);
|
|
235
|
+
setRoleKey(role.key);
|
|
236
|
+
setRoleName(role.name);
|
|
237
|
+
setRolePerms(role.permissions ?? []);
|
|
238
|
+
}, children: t('organization.editRole') }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: buttonSecondary, disabled: !role.id || busy(`role:delete:${role.id}`), onClick: () => role.id && void controller.deleteRole(role.id), children: t('organization.deleteRole') })] }, role.id ?? role.key))) })), (0, jsx_runtime_1.jsxs)("form", { "data-atlas": "organization-role-form", onSubmit: (event) => {
|
|
239
|
+
event.preventDefault();
|
|
240
|
+
void saveRole();
|
|
241
|
+
}, children: [editingRole ? null : ((0, jsx_runtime_1.jsxs)("label", { className: cls('formField', 'atlas-field'), children: [(0, jsx_runtime_1.jsx)("span", { className: cls('formFieldLabel', 'atlas-field-label'), children: t('organization.roleKey') }), (0, jsx_runtime_1.jsx)("input", { className: cls('formFieldInput', 'atlas-input'), name: "role_key", value: roleKey, onChange: (event) => setRoleKey(event.target.value) })] })), (0, jsx_runtime_1.jsxs)("label", { className: cls('formField', 'atlas-field'), children: [(0, jsx_runtime_1.jsx)("span", { className: cls('formFieldLabel', 'atlas-field-label'), children: t('organization.roleName') }), (0, jsx_runtime_1.jsx)("input", { className: cls('formFieldInput', 'atlas-input'), name: "role_name", value: roleName, onChange: (event) => setRoleName(event.target.value) })] }), (0, jsx_runtime_1.jsxs)("fieldset", { className: cls('formField', 'atlas-field'), children: [(0, jsx_runtime_1.jsx)("legend", { className: cls('formFieldLabel', 'atlas-field-label'), children: t('organization.rolePermissions') }), state.permissions.map((permission) => ((0, jsx_runtime_1.jsxs)("label", { "data-atlas": "organization-role-permission", children: [(0, jsx_runtime_1.jsx)("input", { type: "checkbox", value: permission.key, checked: rolePerms.includes(permission.key), onChange: (event) => setRolePerms((current) => event.target.checked
|
|
242
|
+
? [...current, permission.key]
|
|
243
|
+
: current.filter((key) => key !== permission.key)) }), ' ', permission.name] }, permission.key)))] }), (0, jsx_runtime_1.jsx)("button", { type: "submit", className: buttonPrimary, disabled: !roleName.trim() || (!editingRole && !roleKey.trim()) || state.busy?.startsWith('role:') === true, children: editingRole ? t('organization.saveRole') : t('organization.createRole') }), editingRole ? ((0, jsx_runtime_1.jsx)("button", { type: "button", className: buttonSecondary, onClick: resetRoleForm, children: t('organization.cancel') })) : null] })] })) : null, tab === 'settings' ? ((0, jsx_runtime_1.jsx)("div", { "data-atlas": "organization-settings", children: confirm ? ((0, jsx_runtime_1.jsxs)("div", { role: "dialog", "data-atlas": `organization-confirm-${confirm}`, children: [(0, jsx_runtime_1.jsx)("p", { className: cls('text', 'atlas-text'), children: t(confirm === 'leave' ? 'organization.leaveConfirm' : 'organization.deleteConfirm', {
|
|
244
|
+
name: organization.name,
|
|
245
|
+
}) }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: buttonPrimary, disabled: busy('leave') || busy('delete'), onClick: () => void (confirm === 'leave' ? doLeave() : doDelete()), children: t('organization.confirm') }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: buttonSecondary, onClick: () => setConfirm(null), children: t('organization.cancel') })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("button", { type: "button", className: buttonSecondary, onClick: () => setConfirm('leave'), children: t('organization.leave') }), isAdmin ? ((0, jsx_runtime_1.jsx)("button", { type: "button", className: buttonSecondary, onClick: () => setConfirm('delete'), children: t('organization.delete') })) : null] })) })) : null, reverification.needsReverification ? ((0, jsx_runtime_1.jsxs)("div", { "data-atlas": "organization-reverification", role: "dialog", "aria-label": t('reverification.title'), children: [(0, jsx_runtime_1.jsx)("p", { className: cls('text', 'atlas-text'), children: (0, jsx_runtime_1.jsx)("strong", { children: t('reverification.title') }) }), (0, jsx_runtime_1.jsx)("p", { className: cls('text', 'atlas-text'), children: t('reverification.subtitle') }), (0, jsx_runtime_1.jsxs)("label", { className: cls('formField', 'atlas-field'), children: [(0, jsx_runtime_1.jsx)("span", { className: cls('formFieldLabel', 'atlas-field-label'), children: t('reverification.passwordLabel') }), (0, jsx_runtime_1.jsx)("input", { className: cls('formFieldInput', 'atlas-account-input'), type: "password", autoComplete: "current-password", value: password, onChange: (event) => setPassword(event.target.value) })] }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: buttonPrimary, onClick: () => void reverification
|
|
246
|
+
.completeReverification({ strategy: 'password', password })
|
|
247
|
+
.then(() => setPassword(''))
|
|
248
|
+
.catch((err) => setLocalError(err instanceof Error ? errorText(err) : t('error.generic'))), children: t('reverification.submit') }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: buttonSecondary, onClick: () => {
|
|
249
|
+
setPassword('');
|
|
250
|
+
reverification.cancelReverification();
|
|
251
|
+
}, children: t('reverification.cancel') })] })) : null] }));
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* The active organization's audit trail, for org admins: one page at a time,
|
|
255
|
+
* newest first, with a "load more" cursor. `action` narrows it (exact, or a
|
|
256
|
+
* prefix ending in `.`). Returns `forbidden: true` when the signed-in member is
|
|
257
|
+
* not allowed to read it, so the caller can hide the surface.
|
|
258
|
+
*/
|
|
259
|
+
function useOrganizationAuditLog(options = {}) {
|
|
260
|
+
const { organization } = (0, hooks_1.useOrganization)();
|
|
261
|
+
const client = (0, components_shared_1.useMeClient)();
|
|
262
|
+
const [entries, setEntries] = (0, react_1.useState)([]);
|
|
263
|
+
const [cursor, setCursor] = (0, react_1.useState)(null);
|
|
264
|
+
const [hasMore, setHasMore] = (0, react_1.useState)(false);
|
|
265
|
+
const [loading, setLoading] = (0, react_1.useState)(false);
|
|
266
|
+
const [forbidden, setForbidden] = (0, react_1.useState)(false);
|
|
267
|
+
const orgId = organization?.id;
|
|
268
|
+
const pageSize = options.pageSize ?? 20;
|
|
269
|
+
const action = options.action;
|
|
270
|
+
const fetchPage = (0, react_1.useCallback)(async (after) => {
|
|
271
|
+
if (!orgId)
|
|
272
|
+
return;
|
|
273
|
+
setLoading(true);
|
|
274
|
+
try {
|
|
275
|
+
const params = new URLSearchParams({ limit: String(pageSize) });
|
|
276
|
+
if (after)
|
|
277
|
+
params.set('starting_after', after);
|
|
278
|
+
if (action)
|
|
279
|
+
params.set('action', action);
|
|
280
|
+
const res = await client.get(`/v1/client/organizations/${encodeURIComponent(orgId)}/audit_logs?${params.toString()}`);
|
|
281
|
+
if (!res.ok || !res.data) {
|
|
282
|
+
setForbidden(res.status === 403 || res.status === 404);
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
const page = res.data;
|
|
286
|
+
setForbidden(false);
|
|
287
|
+
setEntries((prev) => (after ? [...prev, ...page.data] : page.data));
|
|
288
|
+
setCursor(page.next_cursor);
|
|
289
|
+
setHasMore(page.has_more);
|
|
290
|
+
}
|
|
291
|
+
finally {
|
|
292
|
+
setLoading(false);
|
|
293
|
+
}
|
|
294
|
+
}, [client, orgId, pageSize, action]);
|
|
295
|
+
(0, react_1.useEffect)(() => {
|
|
296
|
+
setEntries([]);
|
|
297
|
+
setCursor(null);
|
|
298
|
+
void fetchPage(null);
|
|
299
|
+
}, [fetchPage]);
|
|
300
|
+
return {
|
|
301
|
+
entries,
|
|
302
|
+
loading,
|
|
303
|
+
forbidden,
|
|
304
|
+
hasMore,
|
|
305
|
+
loadMore: async () => {
|
|
306
|
+
if (cursor)
|
|
307
|
+
await fetchPage(cursor);
|
|
308
|
+
},
|
|
309
|
+
reload: () => fetchPage(null),
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
/** `organization_invitation.created` → `Organization invitation created`. */
|
|
313
|
+
function describeAction(action) {
|
|
314
|
+
const text = action.replace(/[._]+/g, ' ').trim();
|
|
315
|
+
return text.charAt(0).toUpperCase() + text.slice(1);
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* `<OrganizationAuditLog/>` — the active organization's audit trail for its
|
|
319
|
+
* admins, next to `<OrganizationProfile/>`. Renders nothing for a member who may
|
|
320
|
+
* not read it (the server is the authority; the component just follows it).
|
|
321
|
+
* Labels are props so an app can localise them.
|
|
322
|
+
*/
|
|
323
|
+
function OrganizationAuditLog({ pageSize, action, labels = {}, formatDate = (ms) => new Date(ms).toLocaleString(), } = {}) {
|
|
324
|
+
const { organization } = (0, hooks_1.useOrganization)();
|
|
325
|
+
const log = useOrganizationAuditLog({ pageSize, action });
|
|
108
326
|
const cardClass = (0, components_shared_1.useClass)('card', 'atlas-card');
|
|
109
327
|
const cls = (0, components_shared_1.useClasses)();
|
|
110
|
-
if (!organization)
|
|
328
|
+
if (!organization || log.forbidden)
|
|
111
329
|
return null;
|
|
112
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: cardClass, children: [(0, jsx_runtime_1.jsx)("
|
|
330
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: cardClass, "data-atlas": "organization-audit-log", children: [(0, jsx_runtime_1.jsx)("h2", { className: cls('headerTitle', 'atlas-title'), children: labels.title ?? 'Audit log' }), log.entries.length === 0 && !log.loading ? ((0, jsx_runtime_1.jsx)("p", { className: cls('headerSubtitle', 'atlas-subtitle'), children: labels.empty ?? 'No activity recorded yet.' })) : ((0, jsx_runtime_1.jsx)("ul", { className: cls('list', 'atlas-audit-list'), children: log.entries.map((entry) => ((0, jsx_runtime_1.jsxs)("li", { className: cls('listItem', 'atlas-audit-item'), "data-action": entry.action, children: [(0, jsx_runtime_1.jsx)("strong", { children: describeAction(entry.action) }), (0, jsx_runtime_1.jsxs)("span", { className: "atlas-audit-meta", children: [' · ', formatDate(entry.created_at), entry.actor.id ? ` · ${labels.actor ?? 'by'} ${entry.actor.type} ${entry.actor.id}` : ''] })] }, entry.id))) })), log.hasMore ? ((0, jsx_runtime_1.jsx)("button", { className: cls('formButtonSecondary', 'atlas-button-secondary'), disabled: log.loading, onClick: () => void log.loadMore(), children: labels.loadMore ?? 'Load more' })) : null] }));
|
|
113
331
|
}
|
|
114
332
|
//# sourceMappingURL=organization.js.map
|
package/dist/organization.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organization.js","sourceRoot":"","sources":["../src/organization.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AAQb,oDAuBC;AASD,kDAsBC;AASD,gDAgEC;AAQD,4CAwBC;AAED,kDAqBC;;AA5LD,iCAA8C;AAC9C,mDAA2C;AAC3C,mCAA0C;AAC1C,2DAAiF;AACjF,6DAA+C;AAE/C,SAAgB,oBAAoB;IAClC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACnE,MAAM,CAAC,GAAG,IAAA,2BAAO,GAAE,CAAC;IACpB,MAAM,SAAS,GAAG,IAAA,4BAAQ,EAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,IAAA,4BAAQ,EAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IAE1D,OAAO,CACL,iCAAK,SAAS,EAAE,SAAS,aACvB,mCAAQ,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,YAC9D,CAAC,CAAC,uBAAuB,CAAC,GACpB,EACR,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAC/B,mCAEE,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,YAAY,EAAE,EAAE,EACzD,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,YAExD,UAAU,CAAC,YAAY,CAAC,IAAI,IALxB,UAAU,CAAC,YAAY,CAAC,EAAE,CAMxB,CACV,CAAC,IACE,CACP,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,mBAAmB;IAIjC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAC1C,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,wBAAQ,GAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAA,+BAAW,GAAE,CAAC;IAE7B,MAAM,kBAAkB,GAAG,IAAA,mBAAW,EACpC,KAAK,EAAE,IAAY,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAA+B,0BAA0B,EAAE;YACtF,IAAI;SACL,CAAC,CAAC;QACH,0EAA0E;QAC1E,+BAA+B;QAC/B,MAAM,MAAM,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC,EACD,CAAC,MAAM,EAAE,MAAM,CAAC,CACjB,CAAC;IAEF,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAAC,EACjC,QAAQ,MAGN,EAAE;IACJ,MAAM,EAAE,kBAAkB,EAAE,GAAG,mBAAmB,EAAE,CAAC;IACrD,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACxC,MAAM,CAAC,GAAG,IAAA,2BAAO,GAAE,CAAC;IACpB,MAAM,SAAS,GAAG,IAAA,4BAAQ,EAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,IAAA,8BAAU,GAAE,CAAC;IACzB,MAAM,UAAU,GAAG,IAAA,4BAAQ,EAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,IAAA,4BAAQ,EAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,IAAA,4BAAQ,EAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,IAAA,4BAAQ,EAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAE7D,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IACrC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAgB,IAAI,CAAC,CAAC;IAExD,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC9C,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;YACD,MAAM,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxB,OAAO,CAAC,EAAE,CAAC,CAAC;YACZ,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;QAC/B,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,kCACE,SAAS,EAAE,SAAS,gBACT,qBAAqB,EAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YAClB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,MAAM,EAAE,CAAC;QAChB,CAAC,aAED,+BAAI,SAAS,EAAE,UAAU,YAAG,CAAC,CAAC,0BAA0B,CAAC,GAAM,EAC/D,mCAAO,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,aAC/C,iCAAM,SAAS,EAAE,GAAG,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,YAAG,CAAC,CAAC,wBAAwB,CAAC,GAAQ,EACjG,kCAAO,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAI,IACzF,EACP,KAAK,CAAC,CAAC,CAAC,CACP,8BAAG,SAAS,EAAE,UAAU,EAAE,IAAI,EAAC,OAAO,YACnC,KAAK,GACJ,CACL,CAAC,CAAC,CAAC,IAAI,EACR,mCAAQ,SAAS,EAAE,WAAW,EAAE,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YACzE,CAAC,CAAC,qBAAqB,CAAC,GAClB,IACJ,CACR,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB;IAC9B,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACnE,MAAM,CAAC,GAAG,IAAA,2BAAO,GAAE,CAAC;IACpB,MAAM,SAAS,GAAG,IAAA,4BAAQ,EAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,IAAA,4BAAQ,EAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IAE1D,OAAO,CACL,iCAAK,SAAS,EAAE,SAAS,gBAAa,mBAAmB,aACtD,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAC/B,mCAEE,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,YAAY,EAAE,EAAE,EACzD,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,YAExD,UAAU,CAAC,YAAY,CAAC,IAAI,IALxB,UAAU,CAAC,YAAY,CAAC,EAAE,CAMxB,CACV,CAAC,EACF,iCAAM,SAAS,EAAE,SAAS,gBAAa,2BAA2B,YAC/D,CAAC,CAAC,uBAAuB,CAAC,GACtB,EACP,uBAAC,kBAAkB,KAAG,IAClB,CACP,CAAC;AACJ,CAAC;AAED,SAAgB,mBAAmB;IACjC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACvD,MAAM,CAAC,GAAG,IAAA,2BAAO,GAAE,CAAC;IACpB,MAAM,SAAS,GAAG,IAAA,4BAAQ,EAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,IAAA,8BAAU,GAAE,CAAC;IAEzB,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAE/B,OAAO,CACL,iCAAK,SAAS,EAAE,SAAS,aACvB,+BAAI,SAAS,EAAE,GAAG,CAAC,aAAa,EAAE,eAAe,CAAC,YAAG,YAAY,CAAC,IAAI,GAAM,EAC5E,+BAAG,SAAS,EAAE,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,aAClD,CAAC,CAAC,wBAAwB,CAAC,QAAI,UAAU,EAAE,IAAI,IAC9C,EAGJ,uBAAC,4BAAO,IAAC,UAAU,EAAC,4BAA4B,YAC9C,mCAAQ,SAAS,EAAE,GAAG,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,YAAG,CAAC,CAAC,qBAAqB,CAAC,GAAU,GACpG,IACN,CACP,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"organization.js","sourceRoot":"","sources":["../src/organization.tsx"],"names":[],"mappings":"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"}
|
package/dist/reverification.d.ts
CHANGED
|
@@ -19,3 +19,22 @@ export declare function useReverification(): {
|
|
|
19
19
|
completeReverification(input: ReauthInput): Promise<void>;
|
|
20
20
|
cancelReverification(): void;
|
|
21
21
|
};
|
|
22
|
+
/** What {@link useReverification} returns; the prompt drives it. */
|
|
23
|
+
export type Reverification = ReturnType<typeof useReverification>;
|
|
24
|
+
/** A cancelled reverification rejects the parked call with this message. */
|
|
25
|
+
export declare const REVERIFICATION_CANCELLED = "Reverification cancelled.";
|
|
26
|
+
/** True for the rejection a user's own "Cancel" produces (not worth an error). */
|
|
27
|
+
export declare function isReverificationCancelled(err: unknown): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* The drop-in "Confirm it's you" prompt for a parked {@link useReverification}
|
|
30
|
+
* call. Renders nothing until a sensitive action came back `STEP_UP_REQUIRED`;
|
|
31
|
+
* then it asks for the password, re-authenticates in place, and the parked
|
|
32
|
+
* action retries once. The account components (`<UserProfile>`, `<ManageMfa>`,
|
|
33
|
+
* `<ManagePasskeys>`, the phone and email sections) all use it, so a stale
|
|
34
|
+
* session never fails a destructive action silently.
|
|
35
|
+
*/
|
|
36
|
+
export declare function ReverificationPrompt({ reverification, name, }: {
|
|
37
|
+
reverification: Reverification;
|
|
38
|
+
/** `data-atlas` hook for styling/tests. */
|
|
39
|
+
name?: string;
|
|
40
|
+
}): import("react").JSX.Element | null;
|
package/dist/reverification.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
'use client';
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.REVERIFICATION_CANCELLED = void 0;
|
|
4
5
|
exports.useReverification = useReverification;
|
|
6
|
+
exports.isReverificationCancelled = isReverificationCancelled;
|
|
7
|
+
exports.ReverificationPrompt = ReverificationPrompt;
|
|
8
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
9
|
const react_1 = require("react");
|
|
6
10
|
const js_1 = require("@atlasauth/js");
|
|
7
11
|
const AtlasProvider_1 = require("./AtlasProvider");
|
|
12
|
+
const components_shared_1 = require("./components-shared");
|
|
8
13
|
/**
|
|
9
14
|
* Clerk-parity `useReverification()`. A thin, headless wrapper over the EXISTING
|
|
10
15
|
* step-up path (`@atlasauth/js`'s {@link reauthenticate} → `POST /v1/client/me/reauthenticate`)
|
|
@@ -68,8 +73,51 @@ function useReverification() {
|
|
|
68
73
|
const job = pending.current;
|
|
69
74
|
pending.current = null;
|
|
70
75
|
setNeedsReverification(false);
|
|
71
|
-
job?.reject(new Error(
|
|
76
|
+
job?.reject(new Error(exports.REVERIFICATION_CANCELLED));
|
|
72
77
|
}, []);
|
|
73
78
|
return { withReverification, needsReverification, completeReverification, cancelReverification };
|
|
74
79
|
}
|
|
80
|
+
/** A cancelled reverification rejects the parked call with this message. */
|
|
81
|
+
exports.REVERIFICATION_CANCELLED = 'Reverification cancelled.';
|
|
82
|
+
/** True for the rejection a user's own "Cancel" produces (not worth an error). */
|
|
83
|
+
function isReverificationCancelled(err) {
|
|
84
|
+
return err instanceof Error && err.message === exports.REVERIFICATION_CANCELLED;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* The drop-in "Confirm it's you" prompt for a parked {@link useReverification}
|
|
88
|
+
* call. Renders nothing until a sensitive action came back `STEP_UP_REQUIRED`;
|
|
89
|
+
* then it asks for the password, re-authenticates in place, and the parked
|
|
90
|
+
* action retries once. The account components (`<UserProfile>`, `<ManageMfa>`,
|
|
91
|
+
* `<ManagePasskeys>`, the phone and email sections) all use it, so a stale
|
|
92
|
+
* session never fails a destructive action silently.
|
|
93
|
+
*/
|
|
94
|
+
function ReverificationPrompt({ reverification, name = 'reverification', }) {
|
|
95
|
+
const t = (0, components_shared_1.useText)();
|
|
96
|
+
const errorText = (0, components_shared_1.useErrorText)();
|
|
97
|
+
const cls = (0, components_shared_1.useClasses)();
|
|
98
|
+
const [password, setPassword] = (0, react_1.useState)('');
|
|
99
|
+
const [error, setError] = (0, react_1.useState)(null);
|
|
100
|
+
const [busy, setBusy] = (0, react_1.useState)(false);
|
|
101
|
+
if (!reverification.needsReverification)
|
|
102
|
+
return null;
|
|
103
|
+
const confirm = async () => {
|
|
104
|
+
setError(null);
|
|
105
|
+
setBusy(true);
|
|
106
|
+
try {
|
|
107
|
+
await reverification.completeReverification({ strategy: 'password', password });
|
|
108
|
+
setPassword('');
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
setError(err instanceof Error ? errorText(err) : t('error.generic'));
|
|
112
|
+
}
|
|
113
|
+
finally {
|
|
114
|
+
setBusy(false);
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
return ((0, jsx_runtime_1.jsxs)("div", { "data-atlas": name, role: "dialog", "aria-label": t('reverification.title'), children: [(0, jsx_runtime_1.jsx)("p", { className: cls('text', 'atlas-text'), children: (0, jsx_runtime_1.jsx)("strong", { children: t('reverification.title') }) }), (0, jsx_runtime_1.jsx)("p", { className: cls('text', 'atlas-text'), children: t('reverification.subtitle') }), (0, jsx_runtime_1.jsxs)("label", { className: cls('formField', 'atlas-field'), children: [(0, jsx_runtime_1.jsx)("span", { className: cls('formFieldLabel', 'atlas-field-label'), children: t('reverification.passwordLabel') }), (0, jsx_runtime_1.jsx)("input", { className: cls('formFieldInput', 'atlas-account-input'), type: "password", autoComplete: "current-password", value: password, onChange: (e) => setPassword(e.target.value) })] }), error ? (0, jsx_runtime_1.jsx)("p", { className: cls('formFieldError', 'atlas-error'), role: "alert", children: error }) : null, (0, jsx_runtime_1.jsx)("button", { className: cls('formButtonPrimary', 'atlas-button'), type: "button", disabled: busy, onClick: () => void confirm(), children: t('reverification.submit') }), (0, jsx_runtime_1.jsx)("button", { className: cls('formButtonSecondary', 'atlas-button-secondary'), type: "button", onClick: () => {
|
|
118
|
+
setPassword('');
|
|
119
|
+
setError(null);
|
|
120
|
+
reverification.cancelReverification();
|
|
121
|
+
}, children: t('reverification.cancel') })] }));
|
|
122
|
+
}
|
|
75
123
|
//# sourceMappingURL=reverification.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reverification.js","sourceRoot":"","sources":["../src/reverification.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC
|
|
1
|
+
{"version":3,"file":"reverification.js","sourceRoot":"","sources":["../src/reverification.tsx"],"names":[],"mappings":"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"}
|
package/dist/sign-in.js
CHANGED
|
@@ -13,12 +13,12 @@ const captcha_1 = require("./captcha");
|
|
|
13
13
|
const flow_1 = require("./flow");
|
|
14
14
|
const version_1 = require("./version");
|
|
15
15
|
function SignIn(props = {}) {
|
|
16
|
-
const { state, submit, client, finish, captcha, prepare, usePassword } = (0, flow_1.useFlow)({
|
|
16
|
+
const { state, submit, client, finish, captcha, prepare, usePassword, saveRecoveryCodes } = (0, flow_1.useFlow)({
|
|
17
17
|
afterUrl: props.afterUrl,
|
|
18
18
|
referral: props.referral,
|
|
19
19
|
referralConsent: props.referralConsent,
|
|
20
20
|
});
|
|
21
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(flow_1.AttemptFlow, { attempt: state.attempt, busy: state.busy, errors: state.errors, sessionKept: state.sessionKept, titleKey: "signIn.title", hideTitle: props.hideTitle, onSubmit: submit, captcha: (0, jsx_runtime_1.jsx)(captcha_1.CaptchaSlot, { controller: captcha }), prepared: state.prepared ?? null, onPrepare: prepare, onUsePassword: usePassword }), state.attempt?.status !== 'complete' ? (0, jsx_runtime_1.jsx)(flow_1.SignUpPrompt, { signUpUrl: props.signUpUrl, afterUrl: props.afterUrl }) : null, !state.attempt ? ((0, jsx_runtime_1.jsx)(flow_1.SocialSignInButtons, { client: client, onComplete: finish, oneTap: props.googleOneTap, oauthMode: props.oauthMode, onProviderUnavailable: props.onProviderUnavailable, googleButton: props.googleButton })) : null] }));
|
|
21
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [!state.attempt ? (0, jsx_runtime_1.jsx)(flow_1.LastUsedHint, { client: client }) : null, (0, jsx_runtime_1.jsx)(flow_1.AttemptFlow, { attempt: state.attempt, busy: state.busy, errors: state.errors, sessionKept: state.sessionKept, titleKey: "signIn.title", hideTitle: props.hideTitle, onSubmit: submit, captcha: (0, jsx_runtime_1.jsx)(captcha_1.CaptchaSlot, { controller: captcha }), prepared: state.prepared ?? null, onPrepare: prepare, onUsePassword: usePassword, recoveryCodes: (0, js_1.pendingRecoveryCodes)(state), onRecoveryCodesSaved: saveRecoveryCodes }), state.attempt?.status !== 'complete' ? (0, jsx_runtime_1.jsx)(flow_1.SignUpPrompt, { signUpUrl: props.signUpUrl, afterUrl: props.afterUrl }) : null, !state.attempt ? ((0, jsx_runtime_1.jsx)(flow_1.SocialSignInButtons, { client: client, onComplete: finish, oneTap: props.googleOneTap, oauthMode: props.oauthMode, onProviderUnavailable: props.onProviderUnavailable, googleButton: props.googleButton })) : null] }));
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
24
|
* §6 headless native sign-in, for a consumer that renders its OWN Google button
|
package/dist/sign-in.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sign-in.js","sourceRoot":"","sources":["../src/sign-in.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;
|
|
1
|
+
{"version":3,"file":"sign-in.js","sourceRoot":"","sources":["../src/sign-in.tsx"],"names":[],"mappings":"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"}
|
package/dist/sign-up.d.ts
CHANGED
|
@@ -13,6 +13,12 @@ import { type FlowProps } from './flow';
|
|
|
13
13
|
* All of it is read from the instance's settings, so a field, a consent policy
|
|
14
14
|
* or a captcha switched on in the dashboard appears here with no code change.
|
|
15
15
|
*
|
|
16
|
+
* When the instance offers passkey-only sign-up (`account.passkeySignUp`) and
|
|
17
|
+
* the browser supports passkeys, the form offers "Sign up with a passkey": no
|
|
18
|
+
* password field, the email only when the instance collects one, and — after
|
|
19
|
+
* any email proof — a "Create passkey" step. The account is created by the
|
|
20
|
+
* server only when that passkey registers.
|
|
21
|
+
*
|
|
16
22
|
* When the app can't deliver the verification email
|
|
17
23
|
* (`instanceSettings.emailDelivery.passwordSignUp === false`) the form is
|
|
18
24
|
* replaced by a "can't send email" notice (`signUp.emailUnavailable`) — the
|