@astram/frontend-core 0.1.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.
Files changed (38) hide show
  1. package/LICENSE +21 -0
  2. package/dist/auth/accountService.d.ts +112 -0
  3. package/dist/auth/accountService.d.ts.map +1 -0
  4. package/dist/auth/accountService.js +210 -0
  5. package/dist/auth/accountService.js.map +1 -0
  6. package/dist/auth/auditService.d.ts +45 -0
  7. package/dist/auth/auditService.d.ts.map +1 -0
  8. package/dist/auth/auditService.js +58 -0
  9. package/dist/auth/auditService.js.map +1 -0
  10. package/dist/auth/authService.d.ts +96 -0
  11. package/dist/auth/authService.d.ts.map +1 -0
  12. package/dist/auth/authService.js +121 -0
  13. package/dist/auth/authService.js.map +1 -0
  14. package/dist/auth/identityService.d.ts +199 -0
  15. package/dist/auth/identityService.d.ts.map +1 -0
  16. package/dist/auth/identityService.js +374 -0
  17. package/dist/auth/identityService.js.map +1 -0
  18. package/dist/auth/index.d.ts +13 -0
  19. package/dist/auth/index.d.ts.map +1 -0
  20. package/dist/auth/index.js +13 -0
  21. package/dist/auth/index.js.map +1 -0
  22. package/dist/auth/returnPath.d.ts +23 -0
  23. package/dist/auth/returnPath.d.ts.map +1 -0
  24. package/dist/auth/returnPath.js +95 -0
  25. package/dist/auth/returnPath.js.map +1 -0
  26. package/dist/auth/session.d.ts +38 -0
  27. package/dist/auth/session.d.ts.map +1 -0
  28. package/dist/auth/session.js +23 -0
  29. package/dist/auth/session.js.map +1 -0
  30. package/dist/http/types.d.ts +33 -0
  31. package/dist/http/types.d.ts.map +1 -0
  32. package/dist/http/types.js +10 -0
  33. package/dist/http/types.js.map +1 -0
  34. package/dist/index.d.ts +3 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +2 -0
  37. package/dist/index.js.map +1 -0
  38. package/package.json +33 -0
@@ -0,0 +1,121 @@
1
+ export function createAuthService(http) {
2
+ return {
3
+ /**
4
+ * Log in. Resolves to:
5
+ * { ok: true, session, tokens } — authenticated
6
+ * { ok: 'mfa', challengeToken } — second factor required
7
+ * { ok: false, error } — bad credentials / unavailable / unreachable
8
+ */
9
+ async login(identityHint, password) {
10
+ const r = await http.post('/auth/login', { identityHint, password });
11
+ const data = r.data;
12
+ if (r.status === 0)
13
+ return { ok: false, error: 'Cannot reach the server. Is it running?' };
14
+ if (r.status === 200 && data?.mfaRequired) {
15
+ return { ok: 'mfa', challengeToken: data.challengeToken };
16
+ }
17
+ if (r.ok && data?.session && data?.tokens) {
18
+ return { ok: true, session: data.session, tokens: data.tokens };
19
+ }
20
+ if (r.status === 401)
21
+ return { ok: false, error: 'Invalid username or password.' };
22
+ if (r.status === 503) {
23
+ return { ok: false, error: 'Authentication is temporarily unavailable. Please try again.' };
24
+ }
25
+ return { ok: false, error: 'Login failed. Please try again.' };
26
+ },
27
+ /**
28
+ * Complete an MFA challenge (second factor).
29
+ * @param factor defaults to 'totp'
30
+ */
31
+ async completeMfa(challengeToken, code, factor = 'totp') {
32
+ const r = await http.post('/auth/mfa', { challengeToken, factor, code });
33
+ const data = r.data;
34
+ if (r.ok && data?.session && data?.tokens) {
35
+ // `mfaRecoveryUsed` is set only when the login was completed with a recovery
36
+ // code (the server's recovery branch) — the consumer uses it to force the
37
+ // account into the re-enroll flow. Absent/false for a normal TOTP login.
38
+ return {
39
+ ok: true,
40
+ session: data.session,
41
+ tokens: data.tokens,
42
+ mfaRecoveryUsed: data.mfaRecoveryUsed === true,
43
+ };
44
+ }
45
+ return { ok: false, error: 'Incorrect or expired code.' };
46
+ },
47
+ /** Rotate the session's tokens with a refresh token. */
48
+ async refresh(refreshToken) {
49
+ const r = await http.post('/auth/refresh', { refreshToken });
50
+ const data = r.data;
51
+ if (r.ok && data?.session && data?.tokens) {
52
+ return { ok: true, session: data.session, tokens: data.tokens };
53
+ }
54
+ return { ok: false, error: 'Session expired. Please sign in again.' };
55
+ },
56
+ /** Log out (revoke the session). Always resolves — logout must never block a UI. */
57
+ async logout(sessionId) {
58
+ if (sessionId)
59
+ await http.post('/auth/logout', { sessionId });
60
+ return { ok: true };
61
+ },
62
+ /**
63
+ * Fetch the signed-in user's DISPLAY profile (framework `GET /auth/me`). The
64
+ * framework resolves the bearer token → principal → the app's profile resolver,
65
+ * returning display NAMES (never raw UUIDs). Resolves to:
66
+ * { ok: true, profile: { id, name, email?, company:{id,name}, roles:[{id,name}] } }
67
+ * { ok: false, status, error } — 401 (re-auth), 404 (no profile),
68
+ * 501 (server has no profile resolver), etc.
69
+ * Never throws — the UI falls back to its interim hint on any non-ok.
70
+ */
71
+ async me(accessToken) {
72
+ const r = await http.get('/auth/me', { bearerToken: accessToken });
73
+ const data = r.data;
74
+ if (r.ok && data && typeof data.name === 'string') {
75
+ return { ok: true, profile: data };
76
+ }
77
+ if (r.status === 401)
78
+ return { ok: false, status: 401, error: 'Not authenticated.' };
79
+ if (r.status === 404)
80
+ return { ok: false, status: 404, error: 'No profile found.' };
81
+ if (r.status === 501)
82
+ return { ok: false, status: 501, error: 'Profile not available.' };
83
+ return { ok: false, status: r.status, error: 'Could not load profile.' };
84
+ },
85
+ /**
86
+ * Request a password-reset link (framework `POST /auth/forgot-password`). The
87
+ * server ALWAYS returns 204 with an identical body whether or not the hint
88
+ * matches an account (anti-enumeration), so this ALWAYS resolves to
89
+ * `{ ok: true }` — the UI shows the SAME neutral confirmation regardless. Never
90
+ * reveals whether the account exists.
91
+ * @param identityHint username or email
92
+ */
93
+ async requestReset(identityHint) {
94
+ await http.post('/auth/forgot-password', { identityHint });
95
+ // Mirror the server's anti-enumeration: report nothing about existence.
96
+ return { ok: true };
97
+ },
98
+ /**
99
+ * Complete a password reset with the emailed token (framework
100
+ * `POST /auth/reset-password`). Resolves to:
101
+ * { ok: true } — 204, password changed
102
+ * { ok: false, status, error } — 400 (invalid/expired link),
103
+ * 422 (requirements), 501 (not available)
104
+ * Never throws — the UI renders the message.
105
+ * @param token the raw reset token from the emailed link
106
+ */
107
+ async resetPassword(token, newPassword) {
108
+ const r = await http.post('/auth/reset-password', { token, newPassword });
109
+ if (r.status === 204)
110
+ return { ok: true };
111
+ if (r.status === 400)
112
+ return { ok: false, status: 400, error: 'This reset link is invalid or has expired.' };
113
+ if (r.status === 422)
114
+ return { ok: false, status: 422, error: 'New password does not meet the requirements.' };
115
+ if (r.status === 501)
116
+ return { ok: false, status: 501, error: 'Password reset is not available.' };
117
+ return { ok: false, status: r.status, error: 'Could not reset password.' };
118
+ },
119
+ };
120
+ }
121
+ //# sourceMappingURL=authService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authService.js","sourceRoot":"","sources":["../../src/auth/authService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,199 @@
1
+ /**
2
+ * createIdentityService — platform-agnostic calls to the identity feature's protected
3
+ * API. Like the auth service, it takes an injected HTTP client and carries no platform
4
+ * code, so web + mobile share it. The bearer token is passed per call (the UI holds
5
+ * the session; the shared logic stays stateless).
6
+ *
7
+ * Every method resolves to a plain result object (never throws), mirroring the
8
+ * `listCompanies` shape: `{ ok:true, ... }` on success, `{ ok:false, status, error }`
9
+ * on any non-2xx (401 = not authenticated, 403 = denied by policy — e.g. the interim
10
+ * root gate — anything else = a generic failure). Views stay dumb: they
11
+ * branch on `ok`/`status` and render the message.
12
+ *
13
+ * The server routes these hit (all `@Classified`, root-gated in Phase 2):
14
+ * GET/POST/PUT/DELETE /identity/companies[/:uuid]
15
+ * GET/POST/PUT/DELETE /identity/roles[/:uuid]
16
+ * GET/POST/PUT/DELETE /identity/users[/:uuid]
17
+ * GET/POST /identity/users/:userUuid/memberships
18
+ * PUT/DELETE /identity/memberships/:membershipUuid
19
+ * PUT /identity/memberships/:membershipUuid/postings
20
+ * GET /identity/companies/:companyUuid/{departments,branches} (Phase 5 seam)
21
+ *
22
+ * NO raw UUID is ever a display value — list rows carry `{ id, fields }` (the id is a
23
+ * key/param), membership cards carry `*Name` fields resolved server-side.
24
+ *
25
+ * Verbatim TS port of astram3/shared/src/auth/identityService.js — logic, routes, and
26
+ * every result branch are unchanged; only types were added. Includes the ACCESS surface
27
+ * (role permissions + access bundles) — that lives in THIS service, not a separate one.
28
+ */
29
+ import type { HttpClient } from '../http/types.js';
30
+ /** Server-side DataTable options: page/limit/search/sort — all optional. */
31
+ export interface ListOpts {
32
+ page?: number;
33
+ limit?: number;
34
+ search?: string;
35
+ sortBy?: string;
36
+ sortOrder?: 'asc' | 'desc';
37
+ }
38
+ /** A generic list record. Concrete shape is server-defined; never render `id` raw. */
39
+ export interface IdentityRecord {
40
+ id?: string;
41
+ [key: string]: unknown;
42
+ }
43
+ /** `{ key, module, label, description?, permissionKeys[] }` — identified by key, never a uuid. */
44
+ export interface AccessBundle {
45
+ key: string;
46
+ module: string;
47
+ label: string;
48
+ description?: string;
49
+ permissionKeys: string[];
50
+ [key: string]: unknown;
51
+ }
52
+ /** A membership card with every uuid resolved to a display NAME server-side. */
53
+ export interface Membership {
54
+ id?: string;
55
+ companyName?: string;
56
+ roleName?: string;
57
+ departmentName?: string;
58
+ branchName?: string;
59
+ [key: string]: unknown;
60
+ }
61
+ /** One posting row submitted to `replacePostings`. */
62
+ export interface Posting {
63
+ roleUuid: string;
64
+ departmentUuid?: string;
65
+ branchUuid?: string;
66
+ effectiveFrom?: string;
67
+ effectiveUntil?: string;
68
+ }
69
+ export type PagedListResult = {
70
+ ok: true;
71
+ total: number;
72
+ rows: IdentityRecord[];
73
+ page: number;
74
+ limit: number;
75
+ } | {
76
+ ok: false;
77
+ status: number;
78
+ error: string;
79
+ };
80
+ export type GetRecordResult = {
81
+ ok: true;
82
+ record: IdentityRecord | null;
83
+ } | {
84
+ ok: false;
85
+ status: number;
86
+ error: string;
87
+ };
88
+ export type CreateRecordResult = {
89
+ ok: true;
90
+ id: string | undefined;
91
+ } | {
92
+ ok: false;
93
+ status: number;
94
+ error: string;
95
+ };
96
+ export type OkResult = {
97
+ ok: true;
98
+ } | {
99
+ ok: false;
100
+ status: number;
101
+ error: string;
102
+ };
103
+ export type ListPermissionCatalogResult = {
104
+ ok: true;
105
+ catalog: string[];
106
+ wildcards: string[];
107
+ } | {
108
+ ok: false;
109
+ status: number;
110
+ error: string;
111
+ };
112
+ export type ListGrantsSummaryResult = {
113
+ ok: true;
114
+ rows: IdentityRecord[];
115
+ total: number;
116
+ page: number;
117
+ limit: number;
118
+ } | {
119
+ ok: false;
120
+ status: number;
121
+ error: string;
122
+ };
123
+ export type ListRolePermissionsResult = {
124
+ ok: true;
125
+ grants: string[];
126
+ } | {
127
+ ok: false;
128
+ status: number;
129
+ error: string;
130
+ };
131
+ export type ListAccessBundlesResult = {
132
+ ok: true;
133
+ bundles: AccessBundle[];
134
+ } | {
135
+ ok: false;
136
+ status: number;
137
+ error: string;
138
+ };
139
+ export type GetUserMembershipsResult = {
140
+ ok: true;
141
+ memberships: Membership[];
142
+ } | {
143
+ ok: false;
144
+ status: number;
145
+ error: string;
146
+ };
147
+ export type AddMembershipResult = {
148
+ ok: true;
149
+ id: string | undefined;
150
+ } | {
151
+ ok: false;
152
+ status: number;
153
+ error: string;
154
+ };
155
+ export type ListCatalogRowsResult = {
156
+ ok: true;
157
+ rows: IdentityRecord[];
158
+ } | {
159
+ ok: false;
160
+ status: number;
161
+ error: string;
162
+ };
163
+ export interface IdentityService {
164
+ listCompanies(accessToken: string, opts?: ListOpts): Promise<PagedListResult>;
165
+ getCompany(accessToken: string, uuid: string): Promise<GetRecordResult>;
166
+ createCompany(accessToken: string, name: string): Promise<CreateRecordResult>;
167
+ updateCompany(accessToken: string, uuid: string, patch?: Record<string, unknown>): Promise<OkResult>;
168
+ deleteCompany(accessToken: string, uuid: string): Promise<OkResult>;
169
+ listRoles(accessToken: string, opts?: ListOpts): Promise<PagedListResult>;
170
+ getRole(accessToken: string, uuid: string): Promise<GetRecordResult>;
171
+ createRole(accessToken: string, name: string): Promise<CreateRecordResult>;
172
+ updateRole(accessToken: string, uuid: string, patch?: Record<string, unknown>): Promise<OkResult>;
173
+ deleteRole(accessToken: string, uuid: string): Promise<OkResult>;
174
+ listPermissionCatalog(accessToken: string): Promise<ListPermissionCatalogResult>;
175
+ listGrantsSummary(accessToken: string, opts?: ListOpts): Promise<ListGrantsSummaryResult>;
176
+ listRolePermissions(accessToken: string, uuid: string): Promise<ListRolePermissionsResult>;
177
+ grantPermission(accessToken: string, uuid: string, key: string): Promise<OkResult>;
178
+ revokePermission(accessToken: string, uuid: string, key: string): Promise<OkResult>;
179
+ listAccessBundles(accessToken: string): Promise<ListAccessBundlesResult>;
180
+ grantAccessBundle(accessToken: string, uuid: string, key: string): Promise<OkResult>;
181
+ revokeAccessBundle(accessToken: string, uuid: string, key: string): Promise<OkResult>;
182
+ listUsers(accessToken: string, opts?: ListOpts): Promise<PagedListResult>;
183
+ getUser(accessToken: string, uuid: string): Promise<GetRecordResult>;
184
+ createUser(accessToken: string, input?: {
185
+ username?: string;
186
+ email?: string;
187
+ }): Promise<CreateRecordResult>;
188
+ updateUser(accessToken: string, uuid: string, patch?: Record<string, unknown>): Promise<OkResult>;
189
+ deleteUser(accessToken: string, uuid: string): Promise<OkResult>;
190
+ getUserMemberships(accessToken: string, userUuid: string): Promise<GetUserMembershipsResult>;
191
+ addMembership(accessToken: string, userUuid: string, companyUuid: string): Promise<AddMembershipResult>;
192
+ setMembershipActive(accessToken: string, membershipUuid: string, userUuid: string): Promise<OkResult>;
193
+ removeMembership(accessToken: string, membershipUuid: string): Promise<OkResult>;
194
+ replacePostings(accessToken: string, membershipUuid: string, postings: Posting[]): Promise<OkResult>;
195
+ listDepartments(accessToken: string, companyUuid: string): Promise<ListCatalogRowsResult>;
196
+ listBranches(accessToken: string, companyUuid: string): Promise<ListCatalogRowsResult>;
197
+ }
198
+ export declare function createIdentityService(http: HttpClient): IdentityService;
199
+ //# sourceMappingURL=identityService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identityService.d.ts","sourceRoot":"","sources":["../../src/auth/identityService.ts"],"names":[],"mappings":"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"}