includio-cms 0.1.1 → 0.1.2

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 (52) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/ROADMAP.md +13 -11
  3. package/dist/admin/auth-client.d.ts +1165 -5
  4. package/dist/admin/auth-client.js +4 -1
  5. package/dist/admin/client/account/sessions-section.svelte +1 -21
  6. package/dist/admin/client/index.d.ts +1 -0
  7. package/dist/admin/client/index.js +1 -0
  8. package/dist/admin/client/users/accept-invite-page.svelte +118 -0
  9. package/dist/admin/client/users/accept-invite-page.svelte.d.ts +4 -0
  10. package/dist/admin/client/users/create-user-dialog.svelte +157 -0
  11. package/dist/admin/client/users/create-user-dialog.svelte.d.ts +8 -0
  12. package/dist/admin/client/users/delete-user-dialog.svelte +53 -0
  13. package/dist/admin/client/users/delete-user-dialog.svelte.d.ts +10 -0
  14. package/dist/admin/client/users/edit-user-dialog.svelte +127 -0
  15. package/dist/admin/client/users/edit-user-dialog.svelte.d.ts +16 -0
  16. package/dist/admin/client/users/invite-user-dialog.svelte +107 -0
  17. package/dist/admin/client/users/invite-user-dialog.svelte.d.ts +8 -0
  18. package/dist/admin/client/users/lang.d.ts +57 -0
  19. package/dist/admin/client/users/lang.js +114 -0
  20. package/dist/admin/client/users/pending-invitations.svelte +145 -0
  21. package/dist/admin/client/users/pending-invitations.svelte.d.ts +6 -0
  22. package/dist/admin/client/users/user-sessions-sheet.svelte +141 -0
  23. package/dist/admin/client/users/user-sessions-sheet.svelte.d.ts +8 -0
  24. package/dist/admin/client/users/users-page.svelte +262 -0
  25. package/dist/admin/client/users/users-page.svelte.d.ts +6 -0
  26. package/dist/admin/components/layout/lang.d.ts +1 -0
  27. package/dist/admin/components/layout/lang.js +4 -2
  28. package/dist/admin/components/layout/nav-main.svelte +15 -1
  29. package/dist/admin/remote/invite.d.ts +44 -0
  30. package/dist/admin/remote/invite.js +44 -0
  31. package/dist/admin/remote/middleware/auth.d.ts +5 -0
  32. package/dist/admin/remote/middleware/auth.js +7 -0
  33. package/dist/admin/utils/parseUserAgent.d.ts +5 -0
  34. package/dist/admin/utils/parseUserAgent.js +26 -0
  35. package/dist/cms/runtime/types.d.ts +0 -7
  36. package/dist/components/ui/input-group/input-group-input.svelte.d.ts +1 -1
  37. package/dist/components/ui/sidebar/sidebar-input.svelte.d.ts +1 -1
  38. package/dist/core/cms.d.ts +1 -1
  39. package/dist/core/cms.js +1 -1
  40. package/dist/core/server/forms/submissions/operations/create.js +1 -1
  41. package/dist/email-nodemailer/index.d.ts +1 -0
  42. package/dist/server/auth.d.ts +8 -8
  43. package/dist/server/db/schema/auth-schema.d.ts +143 -0
  44. package/dist/server/db/schema/auth-schema.js +12 -0
  45. package/dist/sveltekit/server/handle.js +13 -0
  46. package/dist/types/cms.d.ts +2 -2
  47. package/dist/types/roles.d.ts +1 -0
  48. package/dist/types/roles.js +1 -0
  49. package/dist/updates/0.1.2/index.d.ts +2 -0
  50. package/dist/updates/0.1.2/index.js +36 -0
  51. package/dist/updates/index.js +2 -1
  52. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -3,6 +3,44 @@
3
3
  All notable changes to includio-cms are documented here.
4
4
  Generated from `src/lib/updates/` — do not edit manually.
5
5
 
6
+ ## 0.1.2 — 2026-02-18
7
+
8
+ User management & RBAC
9
+
10
+ ### Added
11
+ - Role type system (admin/user) with UserRole type
12
+ - RBAC middleware: requireRole() for server-side role checks
13
+ - Admin users page: list, search, pagination via authClient.admin.listUsers
14
+ - Create user dialog: email, password, name, role via authClient.admin.createUser
15
+ - Edit user dialog: name, email, role with self-demotion protection
16
+ - Delete user dialog with self-deletion protection
17
+ - Route gating: /admin/users restricted to admin role
18
+ - Sidebar gating: Users nav item visible only for admins
19
+ - Auth client: adminClient() plugin added
20
+ - CLI: addUser rewritten to use better-auth API with role prompt
21
+ - Admin session management: view/revoke other users' sessions
22
+ - Email invitation system: invite users by email with role assignment
23
+ - Accept invite page: public registration via invite token
24
+ - Pending invitations list with cancel and resend support
25
+ - Email adapter now optional in CMS config
26
+
27
+ ### Migration
28
+
29
+ ```sql
30
+ CREATE TABLE IF NOT EXISTS invitation (
31
+ id TEXT PRIMARY KEY,
32
+ email TEXT NOT NULL,
33
+ role TEXT NOT NULL DEFAULT 'user',
34
+ token TEXT NOT NULL UNIQUE,
35
+ expires_at TIMESTAMP NOT NULL,
36
+ created_at TIMESTAMP NOT NULL DEFAULT NOW(),
37
+ created_by TEXT NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
38
+ used_at TIMESTAMP
39
+ );
40
+
41
+ CREATE INDEX IF NOT EXISTS invitation_token_idx ON invitation (token);
42
+ ```
43
+
6
44
  ## 0.1.1 — 2026-02-18
7
45
 
8
46
  Field constraint UI — visible limits, counters, and hints
package/ROADMAP.md CHANGED
@@ -31,20 +31,18 @@
31
31
 
32
32
  ### Phase 1 — Core
33
33
 
34
- - [ ] `[feature]` `[P0]` RBAC middleware — `requireRole()`, role check w `requireAuth()` <!-- files: src/lib/admin/remote/middleware/auth.ts -->
35
- - [ ] `[feature]` `[P0]` Admin users page — list, search, pagination via `authClient.admin.listUsers` <!-- files: src/lib/admin/client/users/ -->
36
- - [ ] `[feature]` `[P0]` Create user — dialog z email/password/name/role via `authClient.admin.createUser` <!-- files: src/lib/admin/client/users/create-user-dialog.svelte -->
37
- - [ ] `[feature]` `[P0]` Edit user — name, email, role via `adminUpdateUser` + `setRole` <!-- files: src/lib/admin/client/users/edit-user-dialog.svelte -->
38
- - [ ] `[feature]` `[P0]` Delete user — confirmation dialog via `removeUser` <!-- files: src/lib/admin/client/users/ -->
39
- - [ ] `[feature]` `[P0]` Route/sidebar gating — ukryj Users nav + chroń `/admin/users` dla non-admin <!-- files: src/lib/admin/components/layout/nav-main.svelte, src/lib/sveltekit/server/handle.ts -->
40
- - [ ] `[feature]` `[P0]` First user bootstrap — pierwszy utworzony user auto-gets role `admin` <!-- files: src/lib/server/auth.ts -->
34
+ - [x] `[feature]` `[P0]` RBAC middleware — `requireRole()`, role check w `requireAuth()` <!-- files: src/lib/admin/remote/middleware/auth.ts -->
35
+ - [x] `[feature]` `[P0]` Admin users page — list, search, pagination via `authClient.admin.listUsers` <!-- files: src/lib/admin/client/users/ -->
36
+ - [x] `[feature]` `[P0]` Create user — dialog z email/password/name/role via `authClient.admin.createUser` <!-- files: src/lib/admin/client/users/create-user-dialog.svelte -->
37
+ - [x] `[feature]` `[P0]` Edit user — name, email, role via `adminUpdateUser` + `setRole` <!-- files: src/lib/admin/client/users/edit-user-dialog.svelte -->
38
+ - [x] `[feature]` `[P0]` Delete user — confirmation dialog via `removeUser` <!-- files: src/lib/admin/client/users/ -->
39
+ - [x] `[feature]` `[P0]` Route/sidebar gating — ukryj Users nav + chroń `/admin/users` dla non-admin <!-- files: src/lib/admin/components/layout/nav-main.svelte, src/lib/sveltekit/server/handle.ts -->
40
+ - [x] `[feature]` `[P0]` First user bootstrap — pierwszy utworzony user auto-gets role `admin` <!-- files: src/lib/server/auth.ts -->
41
41
 
42
42
  ### Phase 2 — Extended
43
43
 
44
- - [ ] `[feature]` `[P1]` Ban/unban UIreason + expiry, `banUser`/`unbanUser` <!-- files: src/lib/admin/client/users/ban-user-dialog.svelte -->
45
- - [ ] `[feature]` `[P1]` Admin session mgmtlist/revoke sesji innych userów <!-- files: src/lib/admin/client/users/user-sessions-sheet.svelte -->
46
- - [ ] `[feature]` `[P1]` Impersonation UI — impersonate/stop bar <!-- files: src/lib/admin/client/users/impersonation-bar.svelte -->
47
- - [ ] `[feature]` `[P2]` Email invitation system — invite link generation (custom, nie w better-auth) <!-- files: src/lib/core/server/auth/invite.ts -->
44
+ - [x] `[feature]` `[P1]` Admin session mgmt list/revoke sesji innych userów <!-- files: src/lib/admin/client/users/user-sessions-sheet.svelte -->
45
+ - [x] `[feature]` `[P2]` Email invitation systeminvite link generation (custom, nie w better-auth) <!-- files: src/lib/admin/remote/invite.ts -->
48
46
 
49
47
  ## 0.2.0 — Plugin system
50
48
 
@@ -57,6 +55,8 @@
57
55
  - [ ] `[feature]` `[P1]` Server-side pagination API (formalize 0.1.0 fix)
58
56
  - [ ] `[feature]` `[P1]` Improved type generation <!-- files: src/lib/core/server/generator/ -->
59
57
  - [ ] `[feature]` `[P1]` Proper filtering API (SQL-level, not JS post-query)
58
+ - [ ] `[feature]` `[breaking]` `[P1]` Simple array field — `type: 'array'` with `of: 'text' | 'number' | ...` for flat lists (tags, categories) <!-- files: src/lib/types/fields.ts, src/lib/admin/components/fields/array-field.svelte, src/lib/core/fields/fieldSchemaToTs.ts -->
59
+ - [ ] `[feature]` `[breaking]` `[P1]` Rename array → blocks — current array becomes `type: 'blocks'`, keeps `of: ObjectField[]` and accordion/DnD UI <!-- files: src/lib/types/fields.ts, src/lib/admin/components/fields/array-field.svelte, src/lib/admin/components/fields/field-renderer.svelte, src/lib/core/server/fields/resolve*.ts -->
60
60
 
61
61
  ## 0.3.0 — Admin experience
62
62
 
@@ -87,6 +87,8 @@
87
87
 
88
88
  ## Backlog
89
89
 
90
+ - [ ] `[feature]` `[P1]` Ban/unban UI — reason + expiry, `banUser`/`unbanUser` <!-- files: src/lib/admin/client/users/ban-user-dialog.svelte -->
91
+ - [ ] `[feature]` `[P1]` Impersonation UI — impersonate/stop bar <!-- files: src/lib/admin/client/users/impersonation-bar.svelte -->
90
92
  - [ ] `[feature]` `[P2]` Alternative richtext editor — Word-like mode, single richtext field instead of blocks
91
93
  - [ ] `[chore]` `[P2]` Caching/performance layer (scope TBD)
92
94
  - [ ] `[feature]` `[P2]` API/CLI for configuration (setup DX for less technical users)