@nsxbet/admin-sdk 0.1.0 → 0.2.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 +76 -0
- package/dist/auth/client/in-memory.d.ts +47 -5
- package/dist/auth/client/in-memory.d.ts.map +1 -1
- package/dist/auth/client/in-memory.js +60 -51
- package/dist/auth/client/index.d.ts +1 -1
- package/dist/auth/client/index.d.ts.map +1 -1
- package/dist/auth/client/index.js +1 -1
- package/dist/auth/components/UserSelector.d.ts.map +1 -1
- package/dist/auth/components/UserSelector.js +15 -4
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/shell/AdminShell.d.ts.map +1 -1
- package/dist/shell/AdminShell.js +7 -1
- package/dist/shell/BackofficeShell.d.ts.map +1 -1
- package/dist/shell/BackofficeShell.js +7 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -511,6 +511,82 @@ function MyComponent() {
|
|
|
511
511
|
}
|
|
512
512
|
```
|
|
513
513
|
|
|
514
|
+
## Custom Mock Users for Development
|
|
515
|
+
|
|
516
|
+
During standalone development, the SDK uses an in-memory auth client with default mock users. You can customize these users to match your module's specific permission requirements.
|
|
517
|
+
|
|
518
|
+
### Using `createMockUsersFromRoles()`
|
|
519
|
+
|
|
520
|
+
The simplest way to create custom mock users is with the `createMockUsersFromRoles()` factory:
|
|
521
|
+
|
|
522
|
+
```typescript
|
|
523
|
+
import {
|
|
524
|
+
AdminShell,
|
|
525
|
+
createInMemoryAuthClient,
|
|
526
|
+
createMockUsersFromRoles,
|
|
527
|
+
} from "@nsxbet/admin-sdk";
|
|
528
|
+
|
|
529
|
+
// Define roles for your module
|
|
530
|
+
const mockUsers = createMockUsersFromRoles({
|
|
531
|
+
admin: [
|
|
532
|
+
"admin.payments.view",
|
|
533
|
+
"admin.payments.edit",
|
|
534
|
+
"admin.payments.delete",
|
|
535
|
+
],
|
|
536
|
+
editor: ["admin.payments.view", "admin.payments.edit"],
|
|
537
|
+
viewer: ["admin.payments.view"],
|
|
538
|
+
noAccess: [],
|
|
539
|
+
});
|
|
540
|
+
|
|
541
|
+
// Create auth client with custom users
|
|
542
|
+
const authClient = createInMemoryAuthClient({ users: mockUsers });
|
|
543
|
+
|
|
544
|
+
// Use in standalone.tsx
|
|
545
|
+
ReactDOM.createRoot(document.getElementById("root")!).render(
|
|
546
|
+
<AdminShell authClient={authClient} modules={[manifest]}>
|
|
547
|
+
<App />
|
|
548
|
+
</AdminShell>
|
|
549
|
+
);
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
This creates 4 standard user types with your custom roles:
|
|
553
|
+
- **Admin User** - Full access (all roles in `admin` array)
|
|
554
|
+
- **Editor User** - View/edit access (roles in `editor` array)
|
|
555
|
+
- **Viewer User** - View-only access (roles in `viewer` array)
|
|
556
|
+
- **No Access User** - No permissions (roles in `noAccess` array)
|
|
557
|
+
|
|
558
|
+
### Using Custom Users Directly
|
|
559
|
+
|
|
560
|
+
For more control, pass custom `MockUser` objects directly:
|
|
561
|
+
|
|
562
|
+
```typescript
|
|
563
|
+
import { createInMemoryAuthClient, type MockUser } from "@nsxbet/admin-sdk";
|
|
564
|
+
|
|
565
|
+
const customUsers: MockUser[] = [
|
|
566
|
+
{
|
|
567
|
+
id: "super-admin",
|
|
568
|
+
email: "superadmin@example.com",
|
|
569
|
+
displayName: "Super Admin",
|
|
570
|
+
roles: ["*"], // Wildcard: all permissions
|
|
571
|
+
},
|
|
572
|
+
{
|
|
573
|
+
id: "payments-admin",
|
|
574
|
+
email: "payments@example.com",
|
|
575
|
+
displayName: "Payments Admin",
|
|
576
|
+
roles: ["admin.payments.view", "admin.payments.edit"],
|
|
577
|
+
},
|
|
578
|
+
];
|
|
579
|
+
|
|
580
|
+
const authClient = createInMemoryAuthClient({ users: customUsers });
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
### Options
|
|
584
|
+
|
|
585
|
+
| Option | Type | Default | Description |
|
|
586
|
+
|--------|------|---------|-------------|
|
|
587
|
+
| `users` | MockUser[] | **required** | Mock users available for selection |
|
|
588
|
+
| `storageKey` | string | `"@nsxbet/auth"` | localStorage key for persistence |
|
|
589
|
+
|
|
514
590
|
## DO NOT (Common Mistakes)
|
|
515
591
|
|
|
516
592
|
### ❌ DO NOT use MemoryRouter
|
|
@@ -5,21 +5,63 @@
|
|
|
5
5
|
* Users can be selected from a predefined list or created custom.
|
|
6
6
|
*/
|
|
7
7
|
import type { MockUser, InMemoryAuthClient } from './interface';
|
|
8
|
+
/**
|
|
9
|
+
* Role configuration for creating mock users
|
|
10
|
+
*/
|
|
11
|
+
export interface MockUserRoles {
|
|
12
|
+
/** Roles for the admin user (full access) */
|
|
13
|
+
admin: string[];
|
|
14
|
+
/** Roles for the editor user (view/edit, no delete) */
|
|
15
|
+
editor: string[];
|
|
16
|
+
/** Roles for the viewer user (view only) */
|
|
17
|
+
viewer: string[];
|
|
18
|
+
/** Roles for the no-access user (typically empty) */
|
|
19
|
+
noAccess: string[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Create mock users from a role configuration
|
|
23
|
+
*
|
|
24
|
+
* Generates the standard 4 user types (admin, editor, viewer, no-access)
|
|
25
|
+
* with custom roles. Use with `createInMemoryAuthClient({ users: ... })`.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const mockUsers = createMockUsersFromRoles({
|
|
30
|
+
* admin: ['admin.payments.view', 'admin.payments.edit', 'admin.payments.delete'],
|
|
31
|
+
* editor: ['admin.payments.view', 'admin.payments.edit'],
|
|
32
|
+
* viewer: ['admin.payments.view'],
|
|
33
|
+
* noAccess: [],
|
|
34
|
+
* });
|
|
35
|
+
*
|
|
36
|
+
* const authClient = createInMemoryAuthClient({ users: mockUsers });
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare function createMockUsersFromRoles(roles: MockUserRoles): MockUser[];
|
|
8
40
|
/**
|
|
9
41
|
* Options for creating an in-memory auth client
|
|
10
42
|
*/
|
|
11
43
|
export interface InMemoryAuthClientOptions {
|
|
12
|
-
/**
|
|
13
|
-
users
|
|
14
|
-
/** Replace default users instead of merging */
|
|
15
|
-
replaceDefaults?: boolean;
|
|
44
|
+
/** Mock users available for selection (required) */
|
|
45
|
+
users: MockUser[];
|
|
16
46
|
/** localStorage key prefix (defaults to '@nsxbet/auth') */
|
|
17
47
|
storageKey?: string;
|
|
18
48
|
}
|
|
19
49
|
/**
|
|
20
50
|
* Create an in-memory auth client for development/testing
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const mockUsers = createMockUsersFromRoles({
|
|
55
|
+
* admin: ['admin.tasks.view', 'admin.tasks.edit', 'admin.tasks.delete'],
|
|
56
|
+
* editor: ['admin.tasks.view', 'admin.tasks.edit'],
|
|
57
|
+
* viewer: ['admin.tasks.view'],
|
|
58
|
+
* noAccess: [],
|
|
59
|
+
* });
|
|
60
|
+
*
|
|
61
|
+
* const authClient = createInMemoryAuthClient({ users: mockUsers });
|
|
62
|
+
* ```
|
|
21
63
|
*/
|
|
22
|
-
export declare function createInMemoryAuthClient(options
|
|
64
|
+
export declare function createInMemoryAuthClient(options: InMemoryAuthClientOptions): InMemoryAuthClient;
|
|
23
65
|
/**
|
|
24
66
|
* Clear in-memory auth storage (useful for tests)
|
|
25
67
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory.d.ts","sourceRoot":"","sources":["../../../src/auth/client/in-memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAgC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"in-memory.d.ts","sourceRoot":"","sources":["../../../src/auth/client/in-memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAgC,MAAM,aAAa,CAAC;AAE9F;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,uDAAuD;IACvD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,4CAA4C;IAC5C,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,aAAa,GAAG,QAAQ,EAAE,CA2BzE;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,oDAAoD;IACpD,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAYD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,kBAAkB,CA6M/F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,SAAsB,GAAG,IAAI,CAExE"}
|
|
@@ -5,62 +5,71 @@
|
|
|
5
5
|
* Users can be selected from a predefined list or created custom.
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* Create mock users from a role configuration
|
|
9
|
+
*
|
|
10
|
+
* Generates the standard 4 user types (admin, editor, viewer, no-access)
|
|
11
|
+
* with custom roles. Use with `createInMemoryAuthClient({ users: ... })`.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const mockUsers = createMockUsersFromRoles({
|
|
16
|
+
* admin: ['admin.payments.view', 'admin.payments.edit', 'admin.payments.delete'],
|
|
17
|
+
* editor: ['admin.payments.view', 'admin.payments.edit'],
|
|
18
|
+
* viewer: ['admin.payments.view'],
|
|
19
|
+
* noAccess: [],
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* const authClient = createInMemoryAuthClient({ users: mockUsers });
|
|
23
|
+
* ```
|
|
9
24
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
'
|
|
20
|
-
'
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
'
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
id: 'viewer-user',
|
|
41
|
-
email: 'viewer@example.com',
|
|
42
|
-
displayName: 'Viewer User',
|
|
43
|
-
roles: [
|
|
44
|
-
// View only - no edit or delete
|
|
45
|
-
'admin.tasks.view',
|
|
46
|
-
'admin.users.view',
|
|
47
|
-
],
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
id: 'no-access-user',
|
|
51
|
-
email: 'noaccess@example.com',
|
|
52
|
-
displayName: 'No Access User',
|
|
53
|
-
roles: [],
|
|
54
|
-
},
|
|
55
|
-
];
|
|
25
|
+
export function createMockUsersFromRoles(roles) {
|
|
26
|
+
return [
|
|
27
|
+
{
|
|
28
|
+
id: 'admin-user',
|
|
29
|
+
email: 'admin@example.com',
|
|
30
|
+
displayName: 'Admin User',
|
|
31
|
+
roles: roles.admin,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: 'editor-user',
|
|
35
|
+
email: 'editor@example.com',
|
|
36
|
+
displayName: 'Editor User',
|
|
37
|
+
roles: roles.editor,
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
id: 'viewer-user',
|
|
41
|
+
email: 'viewer@example.com',
|
|
42
|
+
displayName: 'Viewer User',
|
|
43
|
+
roles: roles.viewer,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: 'no-access-user',
|
|
47
|
+
email: 'noaccess@example.com',
|
|
48
|
+
displayName: 'No Access User',
|
|
49
|
+
roles: roles.noAccess,
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
}
|
|
56
53
|
const DEFAULT_STORAGE_KEY = '@nsxbet/auth';
|
|
57
54
|
/**
|
|
58
55
|
* Create an in-memory auth client for development/testing
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const mockUsers = createMockUsersFromRoles({
|
|
60
|
+
* admin: ['admin.tasks.view', 'admin.tasks.edit', 'admin.tasks.delete'],
|
|
61
|
+
* editor: ['admin.tasks.view', 'admin.tasks.edit'],
|
|
62
|
+
* viewer: ['admin.tasks.view'],
|
|
63
|
+
* noAccess: [],
|
|
64
|
+
* });
|
|
65
|
+
*
|
|
66
|
+
* const authClient = createInMemoryAuthClient({ users: mockUsers });
|
|
67
|
+
* ```
|
|
59
68
|
*/
|
|
60
|
-
export function createInMemoryAuthClient(options
|
|
61
|
-
const { users
|
|
62
|
-
//
|
|
63
|
-
const predefinedUsers =
|
|
69
|
+
export function createInMemoryAuthClient(options) {
|
|
70
|
+
const { users, storageKey = DEFAULT_STORAGE_KEY } = options;
|
|
71
|
+
// Use provided users
|
|
72
|
+
const predefinedUsers = users;
|
|
64
73
|
// State
|
|
65
74
|
let selectedUser = null;
|
|
66
75
|
const subscribers = new Set();
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Auth Client exports
|
|
3
3
|
*/
|
|
4
4
|
export type { AuthClient, InMemoryAuthClient, MockUser, AuthState, AuthStateCallback, } from './interface';
|
|
5
|
-
export { createInMemoryAuthClient, clearInMemoryAuth, type InMemoryAuthClientOptions, } from './in-memory';
|
|
5
|
+
export { createInMemoryAuthClient, clearInMemoryAuth, createMockUsersFromRoles, type InMemoryAuthClientOptions, type MockUserRoles, } from './in-memory';
|
|
6
6
|
export { createKeycloakAuthClient, type KeycloakAuthClientOptions, } from './keycloak';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auth/client/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,KAAK,yBAAyB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auth/client/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,wBAAwB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,wBAAwB,EACxB,KAAK,yBAAyB,GAC/B,MAAM,YAAY,CAAC"}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Auth Client exports
|
|
3
3
|
*/
|
|
4
4
|
// In-memory client
|
|
5
|
-
export { createInMemoryAuthClient, clearInMemoryAuth, } from './in-memory';
|
|
5
|
+
export { createInMemoryAuthClient, clearInMemoryAuth, createMockUsersFromRoles, } from './in-memory';
|
|
6
6
|
// Keycloak client
|
|
7
7
|
export { createKeycloakAuthClient, } from './keycloak';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserSelector.d.ts","sourceRoot":"","sources":["../../../src/auth/components/UserSelector.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAY,MAAM,qBAAqB,CAAC;AAExE,UAAU,iBAAiB;IACzB,gCAAgC;IAChC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,qCAAqC;IACrC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"UserSelector.d.ts","sourceRoot":"","sources":["../../../src/auth/components/UserSelector.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAY,MAAM,qBAAqB,CAAC;AAExE,UAAU,iBAAiB;IACzB,gCAAgC;IAChC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,qCAAqC;IACrC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AA4OD;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,iBAAiB,2CAqF7E"}
|
|
@@ -12,13 +12,24 @@ import { Crown, Ban, Eye, User, Users, Sparkles, Wrench, Trash2, Plus, ChevronRi
|
|
|
12
12
|
*/
|
|
13
13
|
function getUserIcon(roles) {
|
|
14
14
|
const iconClass = "h-7 w-7";
|
|
15
|
-
|
|
16
|
-
return _jsx(Crown, { className: `${iconClass} text-amber-500` });
|
|
17
|
-
}
|
|
15
|
+
// No roles = no access
|
|
18
16
|
if (roles.length === 0) {
|
|
19
17
|
return _jsx(Ban, { className: `${iconClass} text-destructive` });
|
|
20
18
|
}
|
|
21
|
-
|
|
19
|
+
// Wildcard or 'admin' role = full admin
|
|
20
|
+
if (roles.includes('*') || roles.includes('admin')) {
|
|
21
|
+
return _jsx(Crown, { className: `${iconClass} text-amber-500` });
|
|
22
|
+
}
|
|
23
|
+
// Has delete permission = admin level
|
|
24
|
+
if (roles.some((r) => r.includes('.delete'))) {
|
|
25
|
+
return _jsx(Crown, { className: `${iconClass} text-amber-500` });
|
|
26
|
+
}
|
|
27
|
+
// Has edit permission = editor level
|
|
28
|
+
if (roles.some((r) => r.includes('.edit'))) {
|
|
29
|
+
return _jsx(User, { className: `${iconClass} text-success` });
|
|
30
|
+
}
|
|
31
|
+
// View only
|
|
32
|
+
if (roles.some((r) => r.includes('.view'))) {
|
|
22
33
|
return _jsx(Eye, { className: `${iconClass} text-info` });
|
|
23
34
|
}
|
|
24
35
|
return _jsx(User, { className: `${iconClass} text-muted-foreground` });
|
package/dist/auth/index.d.ts
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Authentication module exports
|
|
3
3
|
*/
|
|
4
4
|
export type { AuthClient, InMemoryAuthClient, MockUser, AuthState, AuthStateCallback, } from './client';
|
|
5
|
-
export { createInMemoryAuthClient, clearInMemoryAuth, createKeycloakAuthClient, type InMemoryAuthClientOptions, type KeycloakAuthClientOptions, } from './client';
|
|
5
|
+
export { createInMemoryAuthClient, clearInMemoryAuth, createMockUsersFromRoles, createKeycloakAuthClient, type InMemoryAuthClientOptions, type MockUserRoles, type KeycloakAuthClientOptions, } from './client';
|
|
6
6
|
export { UserSelector } from './components';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/auth/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,wBAAwB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,GAC/B,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,aAAa,EAClB,KAAK,yBAAyB,GAC/B,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/auth/index.js
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Authentication module exports
|
|
3
3
|
*/
|
|
4
4
|
// Auth client factories
|
|
5
|
-
export { createInMemoryAuthClient, clearInMemoryAuth, createKeycloakAuthClient, } from './client';
|
|
5
|
+
export { createInMemoryAuthClient, clearInMemoryAuth, createMockUsersFromRoles, createKeycloakAuthClient, } from './client';
|
|
6
6
|
// Auth components
|
|
7
7
|
export { UserSelector } from './components';
|
package/dist/index.d.ts
CHANGED
|
@@ -10,8 +10,8 @@ export { usePlatformAPI } from './hooks/usePlatformAPI';
|
|
|
10
10
|
export { useFetch } from './hooks/useFetch';
|
|
11
11
|
export { useTelemetry } from './hooks/useTelemetry';
|
|
12
12
|
export { useI18n } from './hooks/useI18n';
|
|
13
|
-
export { createInMemoryAuthClient, clearInMemoryAuth, createKeycloakAuthClient, UserSelector, } from './auth';
|
|
14
|
-
export type { AuthClient, InMemoryAuthClient, MockUser, AuthState, AuthStateCallback, InMemoryAuthClientOptions, KeycloakAuthClientOptions, } from './auth';
|
|
13
|
+
export { createInMemoryAuthClient, clearInMemoryAuth, createMockUsersFromRoles, createKeycloakAuthClient, UserSelector, } from './auth';
|
|
14
|
+
export type { AuthClient, InMemoryAuthClient, MockUser, MockUserRoles, AuthState, AuthStateCallback, InMemoryAuthClientOptions, KeycloakAuthClientOptions, } from './auth';
|
|
15
15
|
export type { PlatformAPI, Breadcrumb, User } from './types/platform';
|
|
16
16
|
export type { KeycloakConfig } from './types/keycloak';
|
|
17
17
|
export type { UseAuthResult } from './hooks/useAuth';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGjG,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG1C,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,wBAAwB,EACxB,YAAY,GACb,MAAM,QAAQ,CAAC;AAEhB,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,QAAQ,CAAC;AAGhB,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACtE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,OAAO,EACL,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,IAAI,EACJ,iBAAiB,EACjB,YAAY,EACZ,YAAY,GACb,MAAM,QAAQ,CAAC;AAEhB,YAAY,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAG9C,OAAO,EAEL,4BAA4B,EAC5B,qBAAqB,EACrB,wBAAwB,EAExB,gBAAgB,EAChB,aAAa,EAEb,kBAAkB,EAClB,WAAW,EACX,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAEV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EAEnB,mBAAmB,EACnB,aAAa,IAAI,qBAAqB,EACtC,iBAAiB,EACjB,YAAY,EACZ,YAAY,IAAI,oBAAoB,EAEpC,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,OAAO,IAAI,eAAe,EAC1B,aAAa,EACb,SAAS,IAAI,iBAAiB,EAE9B,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,UAAU,EACV,MAAM,EACN,OAAO,EACP,WAAW,EACX,cAAc,EACd,aAAa,EACb,QAAQ,EACR,aAAa,EACb,KAAK,EACL,UAAU,EACV,WAAW,GACZ,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,aAAa,EACb,aAAa,EACb,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,MAAM,EACN,aAAa,EACb,YAAY,EACZ,OAAO,EACP,SAAS,EACT,cAAc,EACd,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGjG,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG1C,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,EACxB,YAAY,GACb,MAAM,QAAQ,CAAC;AAEhB,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,QAAQ,CAAC;AAGhB,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACtE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,OAAO,EACL,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,IAAI,EACJ,iBAAiB,EACjB,YAAY,EACZ,YAAY,GACb,MAAM,QAAQ,CAAC;AAEhB,YAAY,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAG9C,OAAO,EAEL,4BAA4B,EAC5B,qBAAqB,EACrB,wBAAwB,EAExB,gBAAgB,EAChB,aAAa,EAEb,kBAAkB,EAClB,WAAW,EACX,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAEV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EAEnB,mBAAmB,EACnB,aAAa,IAAI,qBAAqB,EACtC,iBAAiB,EACjB,YAAY,EACZ,YAAY,IAAI,oBAAoB,EAEpC,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,OAAO,IAAI,eAAe,EAC1B,aAAa,EACb,SAAS,IAAI,iBAAiB,EAE9B,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,UAAU,EACV,MAAM,EACN,OAAO,EACP,WAAW,EACX,cAAc,EACd,aAAa,EACb,QAAQ,EACR,aAAa,EACb,KAAK,EACL,UAAU,EACV,WAAW,GACZ,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,aAAa,EACb,aAAa,EACb,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,MAAM,EACN,aAAa,EACb,YAAY,EACZ,OAAO,EACP,SAAS,EACT,cAAc,EACd,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,7 @@ export { useFetch } from './hooks/useFetch';
|
|
|
13
13
|
export { useTelemetry } from './hooks/useTelemetry';
|
|
14
14
|
export { useI18n } from './hooks/useI18n';
|
|
15
15
|
// Auth Client
|
|
16
|
-
export { createInMemoryAuthClient, clearInMemoryAuth, createKeycloakAuthClient, UserSelector, } from './auth';
|
|
16
|
+
export { createInMemoryAuthClient, clearInMemoryAuth, createMockUsersFromRoles, createKeycloakAuthClient, UserSelector, } from './auth';
|
|
17
17
|
// i18n
|
|
18
18
|
export { initI18n, saveLocale, isSupportedLocale, i18n, SUPPORTED_LOCALES, LOCALE_FLAGS, LOCALE_NAMES, } from './i18n';
|
|
19
19
|
// Registry
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminShell.d.ts","sourceRoot":"","sources":["../../src/shell/AdminShell.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAiB,MAAM,aAAa,CAAC;AAMtF,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE;QACT,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,oDAAoD;IACpD,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA8RD,wBAAgB,UAAU,CAAC,EACzB,OAAO,EAAE,SAAc,EACvB,QAAQ,EACR,QAAQ,EACR,UAAU,EAAE,kBAAkB,EAC9B,cAAc,EACd,MAAM,EACN,gBAAuB,EACvB,WAAqB,GACtB,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"AdminShell.d.ts","sourceRoot":"","sources":["../../src/shell/AdminShell.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAiB,MAAM,aAAa,CAAC;AAMtF,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE;QACT,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,oDAAoD;IACpD,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA8RD,wBAAgB,UAAU,CAAC,EACzB,OAAO,EAAE,SAAc,EACvB,QAAQ,EACR,QAAQ,EACR,UAAU,EAAE,kBAAkB,EAC9B,cAAc,EACd,MAAM,EACN,gBAAuB,EACvB,WAAqB,GACtB,EAAE,eAAe,2CA4LjB"}
|
package/dist/shell/AdminShell.js
CHANGED
|
@@ -204,7 +204,13 @@ export function AdminShell({ modules: manifests = [], children, keycloak, authCl
|
|
|
204
204
|
const useMockAuth = typeof window !== 'undefined' &&
|
|
205
205
|
(import.meta.env.VITE_MOCK_AUTH === 'true' || !keycloak);
|
|
206
206
|
if (useMockAuth) {
|
|
207
|
-
|
|
207
|
+
// Create default mock users with wildcard permissions for shell development
|
|
208
|
+
return createInMemoryAuthClient({
|
|
209
|
+
users: [
|
|
210
|
+
{ id: 'admin-user', email: 'admin@example.com', displayName: 'Admin User', roles: ['*'] },
|
|
211
|
+
{ id: 'viewer-user', email: 'viewer@example.com', displayName: 'Viewer User', roles: [] },
|
|
212
|
+
],
|
|
213
|
+
});
|
|
208
214
|
}
|
|
209
215
|
// Use Keycloak
|
|
210
216
|
return createKeycloakAuthClient({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeShell.d.ts","sourceRoot":"","sources":["../../src/shell/BackofficeShell.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAiB,MAAM,aAAa,CAAC;AAMtF,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE;QACT,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,oDAAoD;IACpD,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA8RD,wBAAgB,UAAU,CAAC,EACzB,OAAO,EAAE,SAAc,EACvB,QAAQ,EACR,QAAQ,EACR,UAAU,EAAE,kBAAkB,EAC9B,cAAc,EACd,MAAM,EACN,gBAAuB,EACvB,WAAqB,GACtB,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"BackofficeShell.d.ts","sourceRoot":"","sources":["../../src/shell/BackofficeShell.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAiB,MAAM,aAAa,CAAC;AAMtF,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE;QACT,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,oDAAoD;IACpD,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA8RD,wBAAgB,UAAU,CAAC,EACzB,OAAO,EAAE,SAAc,EACvB,QAAQ,EACR,QAAQ,EACR,UAAU,EAAE,kBAAkB,EAC9B,cAAc,EACd,MAAM,EACN,gBAAuB,EACvB,WAAqB,GACtB,EAAE,eAAe,2CA4LjB"}
|
|
@@ -204,7 +204,13 @@ export function AdminShell({ modules: manifests = [], children, keycloak, authCl
|
|
|
204
204
|
const useMockAuth = typeof window !== 'undefined' &&
|
|
205
205
|
(import.meta.env.VITE_MOCK_AUTH === 'true' || !keycloak);
|
|
206
206
|
if (useMockAuth) {
|
|
207
|
-
|
|
207
|
+
// Create default mock users with wildcard permissions for shell development
|
|
208
|
+
return createInMemoryAuthClient({
|
|
209
|
+
users: [
|
|
210
|
+
{ id: 'admin-user', email: 'admin@example.com', displayName: 'Admin User', roles: ['*'] },
|
|
211
|
+
{ id: 'viewer-user', email: 'viewer@example.com', displayName: 'Viewer User', roles: [] },
|
|
212
|
+
],
|
|
213
|
+
});
|
|
208
214
|
}
|
|
209
215
|
// Use Keycloak
|
|
210
216
|
return createKeycloakAuthClient({
|