kempo 4.2.18 → 4.2.20
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/app-public/CATCH.page.html +15 -0
- package/app-public/kempo-global.global.html +0 -6
- package/dist/admin/accounts/groups/[name]/index.page.html +112 -2
- package/dist/admin/accounts/groups/index.page.html +87 -2
- package/dist/admin/accounts/permissions/index.page.html +84 -2
- package/dist/admin/accounts/users/[id]/index.page.html +117 -3
- package/dist/admin/accounts/users/index.page.html +116 -2
- package/dist/admin/components/tableControls/InstallExtension.js +2 -2
- package/dist/admin/components/tableControls/InstallExtension.js.map +1 -1
- package/dist/admin/components/tableControls/UninstallExtension.js +2 -2
- package/dist/admin/components/tableControls/UninstallExtension.js.map +1 -1
- package/dist/admin/content/fragments/edit/index.page.html +8 -1
- package/dist/admin/content/fragments/index.page.html +87 -2
- package/dist/admin/content/globals/edit/index.page.html +8 -1
- package/dist/admin/content/globals/index.page.html +102 -7
- package/dist/admin/content/pages/edit/index.page.html +8 -1
- package/dist/admin/content/pages/index.page.html +224 -27
- package/dist/admin/content/templates/edit/index.page.html +8 -1
- package/dist/admin/content/templates/index.page.html +116 -2
- package/dist/admin/default.template.html +20 -1
- package/dist/admin/extensions/index.page.html +59 -2
- package/dist/admin/icons/extension_add.svg +1 -0
- package/dist/admin/icons/extension_remove.svg +1 -0
- package/dist/admin/index.page.html +5 -1
- package/dist/admin/nav.fragment.html +84 -2
- package/dist/admin/settings/[owner]/[name]/index.page.html +110 -4
- package/dist/admin/settings/index.page.html +87 -2
- package/dist/kempo/api/fragments/DELETE.js +1 -1
- package/dist/kempo/api/fragments/DELETE.js.map +1 -1
- package/dist/kempo/api/fragments/GET.js +1 -1
- package/dist/kempo/api/fragments/GET.js.map +1 -1
- package/dist/kempo/api/fragments/POST.js +1 -1
- package/dist/kempo/api/fragments/POST.js.map +1 -1
- package/dist/kempo/api/fragments/disable/PUT.js +1 -1
- package/dist/kempo/api/fragments/disable/PUT.js.map +1 -1
- package/dist/kempo/api/fragments/enable/PUT.js +1 -1
- package/dist/kempo/api/fragments/enable/PUT.js.map +1 -1
- package/dist/kempo/api/fragments/file/GET.js +1 -1
- package/dist/kempo/api/fragments/file/GET.js.map +1 -1
- package/dist/kempo/api/fragments/file/PATCH.js +1 -1
- package/dist/kempo/api/fragments/file/PATCH.js.map +1 -1
- package/dist/kempo/api/fragments/file/PUT.js +1 -1
- package/dist/kempo/api/fragments/file/PUT.js.map +1 -1
- package/dist/kempo/api/fragments/lock/PUT.js +1 -1
- package/dist/kempo/api/fragments/lock/PUT.js.map +1 -1
- package/dist/kempo/api/globals/DELETE.js +1 -1
- package/dist/kempo/api/globals/DELETE.js.map +1 -1
- package/dist/kempo/api/globals/GET.js +1 -1
- package/dist/kempo/api/globals/GET.js.map +1 -1
- package/dist/kempo/api/globals/POST.js +1 -1
- package/dist/kempo/api/globals/POST.js.map +1 -1
- package/dist/kempo/api/globals/disable/PUT.js +1 -1
- package/dist/kempo/api/globals/disable/PUT.js.map +1 -1
- package/dist/kempo/api/globals/enable/PUT.js +1 -1
- package/dist/kempo/api/globals/enable/PUT.js.map +1 -1
- package/dist/kempo/api/globals/entry/GET.js +1 -1
- package/dist/kempo/api/globals/entry/GET.js.map +1 -1
- package/dist/kempo/api/globals/entry/PUT.js +1 -1
- package/dist/kempo/api/globals/entry/PUT.js.map +1 -1
- package/dist/kempo/api/globals/lock/PUT.js +1 -1
- package/dist/kempo/api/globals/lock/PUT.js.map +1 -1
- package/dist/kempo/api/pages/DELETE.js +1 -1
- package/dist/kempo/api/pages/DELETE.js.map +1 -1
- package/dist/kempo/api/pages/GET.js +1 -1
- package/dist/kempo/api/pages/GET.js.map +1 -1
- package/dist/kempo/api/pages/POST.js +1 -1
- package/dist/kempo/api/pages/POST.js.map +1 -1
- package/dist/kempo/api/pages/directories/GET.js +1 -1
- package/dist/kempo/api/pages/directories/GET.js.map +1 -1
- package/dist/kempo/api/pages/disable/PUT.js +1 -1
- package/dist/kempo/api/pages/disable/PUT.js.map +1 -1
- package/dist/kempo/api/pages/enable/PUT.js +1 -1
- package/dist/kempo/api/pages/enable/PUT.js.map +1 -1
- package/dist/kempo/api/pages/file/GET.js +1 -1
- package/dist/kempo/api/pages/file/GET.js.map +1 -1
- package/dist/kempo/api/pages/file/PATCH.js +1 -1
- package/dist/kempo/api/pages/file/PATCH.js.map +1 -1
- package/dist/kempo/api/pages/file/PUT.js +1 -1
- package/dist/kempo/api/pages/file/PUT.js.map +1 -1
- package/dist/kempo/api/pages/lock/PUT.js +1 -1
- package/dist/kempo/api/pages/lock/PUT.js.map +1 -1
- package/dist/kempo/api/pages/rescan/POST.js +2 -0
- package/dist/kempo/api/pages/rescan/POST.js.map +1 -0
- package/dist/kempo/api/pages/search/GET.js +1 -1
- package/dist/kempo/api/pages/search/GET.js.map +1 -1
- package/dist/kempo/api/pages/templates/GET.js +1 -1
- package/dist/kempo/api/pages/templates/GET.js.map +1 -1
- package/dist/kempo/api/templates/DELETE.js +1 -1
- package/dist/kempo/api/templates/DELETE.js.map +1 -1
- package/dist/kempo/api/templates/GET.js +1 -1
- package/dist/kempo/api/templates/GET.js.map +1 -1
- package/dist/kempo/api/templates/POST.js +1 -1
- package/dist/kempo/api/templates/POST.js.map +1 -1
- package/dist/kempo/api/templates/disable/PUT.js +1 -1
- package/dist/kempo/api/templates/disable/PUT.js.map +1 -1
- package/dist/kempo/api/templates/enable/PUT.js +1 -1
- package/dist/kempo/api/templates/enable/PUT.js.map +1 -1
- package/dist/kempo/api/templates/file/GET.js +1 -1
- package/dist/kempo/api/templates/file/GET.js.map +1 -1
- package/dist/kempo/api/templates/file/PATCH.js +1 -1
- package/dist/kempo/api/templates/file/PATCH.js.map +1 -1
- package/dist/kempo/api/templates/file/PUT.js +1 -1
- package/dist/kempo/api/templates/file/PUT.js.map +1 -1
- package/dist/kempo/api/templates/lock/PUT.js +1 -1
- package/dist/kempo/api/templates/lock/PUT.js.map +1 -1
- package/dist/kempo/icons/browse.svg +1 -0
- package/dist/kempo/icons/cards_stack.svg +1 -0
- package/dist/kempo/icons/content.svg +1 -0
- package/dist/kempo/icons/deployed_code_update.svg +1 -0
- package/dist/kempo/icons/docs.svg +1 -0
- package/dist/kempo/icons/drive_file_move.svg +1 -0
- package/dist/kempo/icons/extension.svg +1 -0
- package/dist/kempo/icons/globe.svg +1 -0
- package/dist/kempo/icons/group.svg +1 -0
- package/dist/kempo/icons/lock.svg +1 -0
- package/dist/kempo/icons/lock_add.svg +1 -0
- package/dist/kempo/icons/manage-accounts.svg +1 -0
- package/dist/kempo/icons/person.svg +1 -0
- package/dist/kempo/icons/person_add.svg +1 -0
- package/dist/kempo/icons/preview.svg +1 -0
- package/dist/kempo/icons/save.svg +1 -0
- package/dist/kempo/icons/timer_off.svg +1 -0
- package/dist/kempo/icons/visibility.svg +1 -0
- package/dist/kempo/sdk.js +1 -1
- package/dist/kempo/sdk.js.map +1 -1
- package/middleware/kempo.js +50 -1
- package/package.json +3 -3
- package/server/utils/fragments/listFragments.js +10 -1
- package/server/utils/hooks/triggerHook.js +7 -12
- package/server/utils/pages/listPages.js +57 -7
- package/app-public/kempo-global.global-disabled.html +0 -0
- package/app-public/new-page.page.html +0 -17
- package/app-public/test.page.html +0 -21
- package/dist/kempo/icons/format_indent_decrease.svg +0 -1
- package/dist/kempo/icons/format_indent_increase.svg +0 -1
- package/dist/kempo/icons/format_quote.svg +0 -1
- package/dist/kempo/icons/redo.svg +0 -1
- package/dist/kempo/icons/subscript.svg +0 -1
- package/dist/kempo/icons/superscript.svg +0 -1
- package/dist/kempo/icons/undo.svg +0 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
owner: system
|
|
3
|
+
name: Not Found
|
|
4
|
+
title: 404 — Not Found
|
|
5
|
+
description: Page not found
|
|
6
|
+
-->
|
|
7
|
+
<page template="default" title="404 — Not Found">
|
|
8
|
+
<content>
|
|
9
|
+
<main class="container py ta-center">
|
|
10
|
+
<h1 style="font-size:6rem;margin-bottom:0">404</h1>
|
|
11
|
+
<p class="large tc-muted">Page not found</p>
|
|
12
|
+
<a href="{{pathToRoot}}">Go back home</a>
|
|
13
|
+
</main>
|
|
14
|
+
</content>
|
|
15
|
+
</page>
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
<content id="25d548d5-d75d-49ab-9018-4724abda1805" name="hello world script" owner="custom" author="Copilot Admin" created="2026-04-17T00:44:15.891Z" updated="2026-04-17T00:45:00.331Z" locked="false" location="scripts" priority="100">
|
|
2
|
-
<script>console.log('Hello World');</script>
|
|
3
|
-
</content>
|
|
4
|
-
<content id="bb0e979c-39e5-4d5e-a78c-ea49d1334144" name="foobar" owner="custom" author="Copilot Admin" created="2026-04-17T00:45:31.328Z" updated="2026-04-17T00:46:31.983Z" locked="false" location="head" priority="101">
|
|
5
|
-
<script>console.log('foobar')</script>
|
|
6
|
-
</content>
|
|
@@ -1,7 +1,113 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
locked: true
|
|
3
3
|
-->
|
|
4
|
-
<page title="Group - Admin"
|
|
4
|
+
<page title="Group - Admin">
|
|
5
|
+
<content>
|
|
6
|
+
<script type="module" src="/kempo-ui/components/Icon.js"></script>
|
|
7
|
+
<script type="module" src="/kempo-ui/components/Table.js"></script>
|
|
8
|
+
<script type="module" src="/kempo-ui/components/tableControls/FirstPage.js"></script>
|
|
9
|
+
<script type="module" src="/kempo-ui/components/tableControls/PrevPage.js"></script>
|
|
10
|
+
<script type="module" src="/kempo-ui/components/tableControls/NextPage.js"></script>
|
|
11
|
+
<script type="module" src="/kempo-ui/components/tableControls/LastPage.js"></script>
|
|
12
|
+
<script type="module" src="/kempo-ui/components/tableControls/PageSelect.js"></script>
|
|
13
|
+
<script type="module" src="/kempo-ui/components/tableControls/PageSize.js"></script>
|
|
14
|
+
<script type="module" src="/kempo-ui/components/tableControls/DeleteRecord.js"></script>
|
|
15
|
+
<script type="module" src="/kempo-ui/components/tableControls/DeleteSelected.js"></script>
|
|
16
|
+
<script type="module" src="/admin/components/tableControls/AddMember.js"></script>
|
|
17
|
+
<script type="module" src="/admin/components/tableControls/AddPermission.js"></script>
|
|
18
|
+
<script type="module" src="/admin/components/TableRowLink.js"></script>
|
|
19
|
+
|
|
20
|
+
<div class="mb d-f" style="align-items: flex-start; justify-content: space-between;">
|
|
21
|
+
<div>
|
|
22
|
+
<a href="/admin/accounts/groups" class="no-link">
|
|
23
|
+
<button class="mbh"><k-icon name="arrow" direction="left"></k-icon> Groups</button>
|
|
24
|
+
</a>
|
|
25
|
+
<h1 class="mb0" id="pageTitle">Group</h1>
|
|
26
|
+
</div>
|
|
27
|
+
<button id="saveBtn" class="primary" disabled style="display:none;"><k-icon name="save"></k-icon> Save</button>
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
<div id="loading">Loading group...</div>
|
|
31
|
+
<div id="notFound" style="display: none;">
|
|
32
|
+
<p>Group not found.</p>
|
|
33
|
+
<a href="/admin/accounts/groups">Back to Groups</a>
|
|
34
|
+
</div>
|
|
35
|
+
<div id="content" style="display: none;">
|
|
36
|
+
|
|
37
|
+
<!-- Group Information -->
|
|
38
|
+
<div class="card">
|
|
39
|
+
<h2>Information</h2>
|
|
40
|
+
<div class="d-f mb">
|
|
41
|
+
<label style="min-width: 120px;"><strong>Owner</strong></label>
|
|
42
|
+
<span id="groupOwner"></span>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="d-f mb">
|
|
45
|
+
<label for="groupNameInput" style="min-width: 120px;"><strong>Name</strong></label>
|
|
46
|
+
<input type="text" id="groupNameInput" style="max-width: 400px;">
|
|
47
|
+
</div>
|
|
48
|
+
<div class="d-f mb">
|
|
49
|
+
<label for="groupDescription" style="min-width: 120px;"><strong>Description</strong></label>
|
|
50
|
+
<input type="text" id="groupDescription" style="max-width: 400px;">
|
|
51
|
+
</div>
|
|
52
|
+
<div class="d-f mb">
|
|
53
|
+
<label style="min-width: 120px;"><strong>Created</strong></label>
|
|
54
|
+
<span id="groupCreatedAt"></span>
|
|
55
|
+
</div>
|
|
56
|
+
<div class="d-f mb">
|
|
57
|
+
<label style="min-width: 120px;"><strong>Updated</strong></label>
|
|
58
|
+
<span id="groupUpdatedAt"></span>
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
<!-- Members -->
|
|
63
|
+
<div class="card">
|
|
64
|
+
<h2>Members</h2>
|
|
65
|
+
<p id="usersMembersMsg" style="display:none">All users are automatically members of this group.</p>
|
|
66
|
+
<k-table id="membersTable" enable-pages page-size="10" page-size-options="[10,25,50]" placeholder="This group has no members.">
|
|
67
|
+
<admin-table-row-link slot="before" url-pattern="/admin/accounts/users/{id}" field-name="id"></admin-table-row-link>
|
|
68
|
+
<k-tc-delete-selected id="tcDeleteSelected" slot="top" style="display:none;"></k-tc-delete-selected>
|
|
69
|
+
<admin-add-member id="tcAddMember" slot="top" style="display:none;"></admin-add-member>
|
|
70
|
+
<div class="d-f full" style="align-items: center;">
|
|
71
|
+
<div>
|
|
72
|
+
<k-tc-first-page></k-tc-first-page>
|
|
73
|
+
<k-tc-prev-page></k-tc-prev-page>
|
|
74
|
+
<k-tc-next-page></k-tc-next-page>
|
|
75
|
+
<k-tc-last-page></k-tc-last-page>
|
|
76
|
+
</div>
|
|
77
|
+
<div class="flex"></div>
|
|
78
|
+
<div><k-tc-page-select></k-tc-page-select></div>
|
|
79
|
+
<div class="flex"></div>
|
|
80
|
+
<div><k-tc-page-size></k-tc-page-size></div>
|
|
81
|
+
</div>
|
|
82
|
+
</k-table>
|
|
83
|
+
</div>
|
|
84
|
+
|
|
85
|
+
<!-- Permissions -->
|
|
86
|
+
<div class="card">
|
|
87
|
+
<h2>Permissions</h2>
|
|
88
|
+
<p id="adminPermsMsg" style="display:none">Members of this group automatically have all permissions.</p>
|
|
89
|
+
<k-table id="permissionsTable" enable-pages page-size="10" page-size-options="[10,25,50]" placeholder="No permissions assigned to this group.">
|
|
90
|
+
<k-tc-delete-selected id="tcDeleteSelectedPerm" slot="top" style="display:none;"></k-tc-delete-selected>
|
|
91
|
+
<admin-add-permission id="tcAddPermission" slot="top" style="display:none;"></admin-add-permission>
|
|
92
|
+
<div class="d-f full" style="align-items: center;">
|
|
93
|
+
<div>
|
|
94
|
+
<k-tc-first-page></k-tc-first-page>
|
|
95
|
+
<k-tc-prev-page></k-tc-prev-page>
|
|
96
|
+
<k-tc-next-page></k-tc-next-page>
|
|
97
|
+
<k-tc-last-page></k-tc-last-page>
|
|
98
|
+
</div>
|
|
99
|
+
<div class="flex"></div>
|
|
100
|
+
<div><k-tc-page-select></k-tc-page-select></div>
|
|
101
|
+
<div class="flex"></div>
|
|
102
|
+
<div><k-tc-page-size></k-tc-page-size></div>
|
|
103
|
+
</div>
|
|
104
|
+
</k-table>
|
|
105
|
+
</div>
|
|
106
|
+
|
|
107
|
+
</div>
|
|
108
|
+
|
|
109
|
+
<script type="module">
|
|
110
|
+
import {
|
|
5
111
|
getGroup, updateGroup, deleteGroups, getGroupMembers,
|
|
6
112
|
removeMemberFromGroup, getGroupPermissions, removePermissionFromGroup,
|
|
7
113
|
getAllCurrentUserPermissions
|
|
@@ -283,4 +389,8 @@
|
|
|
283
389
|
} else {
|
|
284
390
|
$permissionsTable.closest('.card').style.display = 'none';
|
|
285
391
|
}
|
|
286
|
-
}
|
|
392
|
+
}
|
|
393
|
+
</script>
|
|
394
|
+
|
|
395
|
+
</content>
|
|
396
|
+
</page>
|
|
@@ -1,7 +1,88 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
locked: true
|
|
3
3
|
-->
|
|
4
|
-
<page title="Groups - Admin"
|
|
4
|
+
<page title="Groups - Admin">
|
|
5
|
+
<content>
|
|
6
|
+
<script type="module" src="/kempo-ui/components/Table.js"></script>
|
|
7
|
+
<script type="module" src="/kempo-ui/components/tableControls/FirstPage.js"></script>
|
|
8
|
+
<script type="module" src="/kempo-ui/components/tableControls/PrevPage.js"></script>
|
|
9
|
+
<script type="module" src="/kempo-ui/components/tableControls/NextPage.js"></script>
|
|
10
|
+
<script type="module" src="/kempo-ui/components/tableControls/LastPage.js"></script>
|
|
11
|
+
<script type="module" src="/kempo-ui/components/tableControls/PageSelect.js"></script>
|
|
12
|
+
<script type="module" src="/kempo-ui/components/tableControls/PageSize.js"></script>
|
|
13
|
+
<script type="module" src="/kempo-ui/components/tableControls/Edit.js"></script>
|
|
14
|
+
<script type="module" src="/kempo-ui/components/tableControls/DeleteRecord.js"></script>
|
|
15
|
+
<script type="module" src="/kempo-ui/components/tableControls/DeleteSelected.js"></script>
|
|
16
|
+
<script type="module" src="/admin/components/TableRowLink.js"></script>
|
|
17
|
+
<script type="module" src="/kempo/components/Permission.js"></script>
|
|
18
|
+
|
|
19
|
+
<div class="d-f mb" style="align-items: center; gap: var(--spacer);">
|
|
20
|
+
<h1 class="flex mb0">Groups</h1>
|
|
21
|
+
<k-permission has="system:group:create">
|
|
22
|
+
<button id="createGroupBtn" class="primary">Create Group</button>
|
|
23
|
+
</k-permission>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<h2>Custom Groups</h2>
|
|
27
|
+
<k-table id="customTable" enable-pages page-size="10" page-size-options="[10,25,50]" placeholder="No custom groups have been created yet.">
|
|
28
|
+
<admin-table-row-link slot="before" url-pattern="/admin/accounts/groups/{name}" field-name="name"></admin-table-row-link>
|
|
29
|
+
<div slot="top" class="d-f full" style="align-items: center;">
|
|
30
|
+
<div>
|
|
31
|
+
<k-permission has="system:group:delete">
|
|
32
|
+
<k-tc-delete-selected></k-tc-delete-selected>
|
|
33
|
+
</k-permission>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
<div class="d-f full" style="align-items: center;">
|
|
37
|
+
<div>
|
|
38
|
+
<k-tc-first-page></k-tc-first-page>
|
|
39
|
+
<k-tc-prev-page></k-tc-prev-page>
|
|
40
|
+
<k-tc-next-page></k-tc-next-page>
|
|
41
|
+
<k-tc-last-page></k-tc-last-page>
|
|
42
|
+
</div>
|
|
43
|
+
<div class="flex"></div>
|
|
44
|
+
<div><k-tc-page-select></k-tc-page-select></div>
|
|
45
|
+
<div class="flex"></div>
|
|
46
|
+
<div><k-tc-page-size></k-tc-page-size></div>
|
|
47
|
+
</div>
|
|
48
|
+
</k-table>
|
|
49
|
+
|
|
50
|
+
<h2>Extension Groups</h2>
|
|
51
|
+
<k-table id="extensionTable" enable-pages page-size="10" page-size-options="[10,25,50]" placeholder="No extension groups found.">
|
|
52
|
+
<admin-table-row-link slot="before" url-pattern="/admin/accounts/groups/{name}" field-name="name"></admin-table-row-link>
|
|
53
|
+
<div class="d-f full" style="align-items: center;">
|
|
54
|
+
<div>
|
|
55
|
+
<k-tc-first-page></k-tc-first-page>
|
|
56
|
+
<k-tc-prev-page></k-tc-prev-page>
|
|
57
|
+
<k-tc-next-page></k-tc-next-page>
|
|
58
|
+
<k-tc-last-page></k-tc-last-page>
|
|
59
|
+
</div>
|
|
60
|
+
<div class="flex"></div>
|
|
61
|
+
<div><k-tc-page-select></k-tc-page-select></div>
|
|
62
|
+
<div class="flex"></div>
|
|
63
|
+
<div><k-tc-page-size></k-tc-page-size></div>
|
|
64
|
+
</div>
|
|
65
|
+
</k-table>
|
|
66
|
+
|
|
67
|
+
<h2>System Groups</h2>
|
|
68
|
+
<k-table id="systemTable" enable-pages page-size="10" page-size-options="[10,25,50]" placeholder="No system groups found.">
|
|
69
|
+
<admin-table-row-link slot="before" url-pattern="/admin/accounts/groups/{name}" field-name="name"></admin-table-row-link>
|
|
70
|
+
<div class="d-f full" style="align-items: center;">
|
|
71
|
+
<div>
|
|
72
|
+
<k-tc-first-page></k-tc-first-page>
|
|
73
|
+
<k-tc-prev-page></k-tc-prev-page>
|
|
74
|
+
<k-tc-next-page></k-tc-next-page>
|
|
75
|
+
<k-tc-last-page></k-tc-last-page>
|
|
76
|
+
</div>
|
|
77
|
+
<div class="flex"></div>
|
|
78
|
+
<div><k-tc-page-select></k-tc-page-select></div>
|
|
79
|
+
<div class="flex"></div>
|
|
80
|
+
<div><k-tc-page-size></k-tc-page-size></div>
|
|
81
|
+
</div>
|
|
82
|
+
</k-table>
|
|
83
|
+
|
|
84
|
+
<script type="module">
|
|
85
|
+
import { listGroups, createGroup, updateGroup, deleteGroups, getAllCurrentUserPermissions } from '/kempo/sdk.js';
|
|
5
86
|
import { html } from '/kempo-ui/lit-all.min.js';
|
|
6
87
|
import Toast from '/kempo-ui/components/Toast.js';
|
|
7
88
|
import Dialog from '/kempo-ui/components/Dialog.js';
|
|
@@ -168,4 +249,8 @@
|
|
|
168
249
|
cancelText: 'Cancel'
|
|
169
250
|
});
|
|
170
251
|
});
|
|
171
|
-
}
|
|
252
|
+
}
|
|
253
|
+
</script>
|
|
254
|
+
|
|
255
|
+
</content>
|
|
256
|
+
</page>
|
|
@@ -1,7 +1,85 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
locked: true
|
|
3
3
|
-->
|
|
4
|
-
<page title="Permissions - Admin"
|
|
4
|
+
<page title="Permissions - Admin">
|
|
5
|
+
<content>
|
|
6
|
+
<script type="module" src="/kempo-ui/components/Table.js"></script>
|
|
7
|
+
<script type="module" src="/kempo-ui/components/tableControls/FirstPage.js"></script>
|
|
8
|
+
<script type="module" src="/kempo-ui/components/tableControls/PrevPage.js"></script>
|
|
9
|
+
<script type="module" src="/kempo-ui/components/tableControls/NextPage.js"></script>
|
|
10
|
+
<script type="module" src="/kempo-ui/components/tableControls/LastPage.js"></script>
|
|
11
|
+
<script type="module" src="/kempo-ui/components/tableControls/PageSelect.js"></script>
|
|
12
|
+
<script type="module" src="/kempo-ui/components/tableControls/PageSize.js"></script>
|
|
13
|
+
<script type="module" src="/kempo-ui/components/tableControls/Edit.js"></script>
|
|
14
|
+
<script type="module" src="/kempo-ui/components/tableControls/DeleteRecord.js"></script>
|
|
15
|
+
<script type="module" src="/kempo-ui/components/tableControls/DeleteSelected.js"></script>
|
|
16
|
+
<script type="module" src="/kempo-ui/components/Tags.js"></script>
|
|
17
|
+
<script type="module" src="/kempo/components/Permission.js"></script>
|
|
18
|
+
|
|
19
|
+
<div class="d-f mb" style="align-items: center; gap: var(--spacer);">
|
|
20
|
+
<h1 class="flex mb0">Permissions</h1>
|
|
21
|
+
<k-permission has="system:permissions:manage">
|
|
22
|
+
<button id="createPermBtn" class="primary">Create Permissions</button>
|
|
23
|
+
</k-permission>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<h2>Custom Permissions</h2>
|
|
27
|
+
<k-table id="customTable" enable-pages page-size="25" page-size-options="[10,25,50,100]" placeholder="No custom permissions have been created yet.">
|
|
28
|
+
<div slot="top" class="d-f full" style="align-items: center;">
|
|
29
|
+
<div>
|
|
30
|
+
<k-permission has="system:permissions:manage">
|
|
31
|
+
<k-tc-delete-selected></k-tc-delete-selected>
|
|
32
|
+
</k-permission>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
<div class="d-f full" style="align-items: center;">
|
|
36
|
+
<div>
|
|
37
|
+
<k-tc-first-page></k-tc-first-page>
|
|
38
|
+
<k-tc-prev-page></k-tc-prev-page>
|
|
39
|
+
<k-tc-next-page></k-tc-next-page>
|
|
40
|
+
<k-tc-last-page></k-tc-last-page>
|
|
41
|
+
</div>
|
|
42
|
+
<div class="flex"></div>
|
|
43
|
+
<div><k-tc-page-select></k-tc-page-select></div>
|
|
44
|
+
<div class="flex"></div>
|
|
45
|
+
<div><k-tc-page-size></k-tc-page-size></div>
|
|
46
|
+
</div>
|
|
47
|
+
</k-table>
|
|
48
|
+
|
|
49
|
+
<h2>Extension Permissions</h2>
|
|
50
|
+
<k-table id="extensionTable" enable-pages page-size="25" page-size-options="[10,25,50,100]" placeholder="No extension permissions installed.">
|
|
51
|
+
<div class="d-f full" style="align-items: center;">
|
|
52
|
+
<div>
|
|
53
|
+
<k-tc-first-page></k-tc-first-page>
|
|
54
|
+
<k-tc-prev-page></k-tc-prev-page>
|
|
55
|
+
<k-tc-next-page></k-tc-next-page>
|
|
56
|
+
<k-tc-last-page></k-tc-last-page>
|
|
57
|
+
</div>
|
|
58
|
+
<div class="flex"></div>
|
|
59
|
+
<div><k-tc-page-select></k-tc-page-select></div>
|
|
60
|
+
<div class="flex"></div>
|
|
61
|
+
<div><k-tc-page-size></k-tc-page-size></div>
|
|
62
|
+
</div>
|
|
63
|
+
</k-table>
|
|
64
|
+
|
|
65
|
+
<h2>System Permissions</h2>
|
|
66
|
+
<k-table id="systemTable" enable-pages page-size="25" page-size-options="[10,25,50,100]" placeholder="No system permissions found.">
|
|
67
|
+
<div class="d-f full" style="align-items: center;">
|
|
68
|
+
<div>
|
|
69
|
+
<k-tc-first-page></k-tc-first-page>
|
|
70
|
+
<k-tc-prev-page></k-tc-prev-page>
|
|
71
|
+
<k-tc-next-page></k-tc-next-page>
|
|
72
|
+
<k-tc-last-page></k-tc-last-page>
|
|
73
|
+
</div>
|
|
74
|
+
<div class="flex"></div>
|
|
75
|
+
<div><k-tc-page-select></k-tc-page-select></div>
|
|
76
|
+
<div class="flex"></div>
|
|
77
|
+
<div><k-tc-page-size></k-tc-page-size></div>
|
|
78
|
+
</div>
|
|
79
|
+
</k-table>
|
|
80
|
+
|
|
81
|
+
<script type="module">
|
|
82
|
+
import { listPermissions, createPermissions, updatePermission, deletePermissions, getAllCurrentUserPermissions } from '/kempo/sdk.js';
|
|
5
83
|
import { html } from '/kempo-ui/lit-all.min.js';
|
|
6
84
|
import Toast from '/kempo-ui/components/Toast.js';
|
|
7
85
|
import Dialog from '/kempo-ui/components/Dialog.js';
|
|
@@ -190,4 +268,8 @@
|
|
|
190
268
|
cancelText: 'Cancel'
|
|
191
269
|
});
|
|
192
270
|
});
|
|
193
|
-
}
|
|
271
|
+
}
|
|
272
|
+
</script>
|
|
273
|
+
|
|
274
|
+
</content>
|
|
275
|
+
</page>
|
|
@@ -1,7 +1,108 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
locked: true
|
|
3
3
|
-->
|
|
4
|
-
<page title="User - Admin"
|
|
4
|
+
<page title="User - Admin">
|
|
5
|
+
<content>
|
|
6
|
+
<script type="module" src="/kempo-ui/components/Toggle.js"></script>
|
|
7
|
+
<script type="module" src="/kempo-ui/components/Icon.js"></script>
|
|
8
|
+
<script type="module" src="/kempo-ui/components/Table.js"></script>
|
|
9
|
+
<script type="module" src="/kempo-ui/components/tableControls/FirstPage.js"></script>
|
|
10
|
+
<script type="module" src="/kempo-ui/components/tableControls/PrevPage.js"></script>
|
|
11
|
+
<script type="module" src="/kempo-ui/components/tableControls/NextPage.js"></script>
|
|
12
|
+
<script type="module" src="/kempo-ui/components/tableControls/LastPage.js"></script>
|
|
13
|
+
<script type="module" src="/kempo-ui/components/tableControls/PageSelect.js"></script>
|
|
14
|
+
<script type="module" src="/kempo-ui/components/tableControls/PageSize.js"></script>
|
|
15
|
+
<script type="module" src="/kempo-ui/components/tableControls/DeleteRecord.js"></script>
|
|
16
|
+
<script type="module" src="/kempo-ui/components/tableControls/DeleteSelected.js"></script>
|
|
17
|
+
<script type="module" src="/admin/components/GroupDeleteSelected.js"></script>
|
|
18
|
+
<script type="module" src="/admin/components/AddGroupControl.js"></script>
|
|
19
|
+
<script type="module" src="/admin/components/ClearExpiredSessionsControl.js"></script>
|
|
20
|
+
<script type="module" src="/admin/components/TableRowLink.js"></script>
|
|
21
|
+
<div class="d-f">
|
|
22
|
+
<div>
|
|
23
|
+
<a href="/admin/accounts/users" class="no-link mb">
|
|
24
|
+
<button class="mbh"><k-icon name="arrow" direction="left"></k-icon> Users</button>
|
|
25
|
+
</a>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="flex"></div>
|
|
28
|
+
<div>
|
|
29
|
+
<button id="deleteUserBtn" class="danger mb mrh" style="display:none;">Delete User</button>
|
|
30
|
+
<button id="saveBtn" class="primary mb" disabled style="display:none;"><k-icon name="save"></k-icon> Save</button>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
<h1 id="pageTitle">User</h1>
|
|
34
|
+
|
|
35
|
+
<div id="loading">Loading user...</div>
|
|
36
|
+
<div id="notFound" style="display: none;">
|
|
37
|
+
<p>User not found.</p>
|
|
38
|
+
<a href="/admin/accounts/users">Back to Users</a>
|
|
39
|
+
</div>
|
|
40
|
+
<div id="content" style="display: none;">
|
|
41
|
+
|
|
42
|
+
<!-- User Information -->
|
|
43
|
+
<div class="card">
|
|
44
|
+
<h2>Information</h2>
|
|
45
|
+
<div class="d-f mb" style="align-items: center; gap: var(--spacer);">
|
|
46
|
+
<label for="userName" style="min-width: 120px;"><strong>Name</strong></label>
|
|
47
|
+
<input type="text" id="userName" style="max-width: 400px;">
|
|
48
|
+
</div>
|
|
49
|
+
<div class="d-f mb" style="align-items: center; gap: var(--spacer);">
|
|
50
|
+
<label for="userEmail" style="min-width: 120px;"><strong>Email</strong></label>
|
|
51
|
+
<input type="email" id="userEmail" style="max-width: 400px;">
|
|
52
|
+
</div>
|
|
53
|
+
<div class="d-f mb" style="align-items: center; gap: var(--spacer);">
|
|
54
|
+
<label style="min-width: 120px;"><strong>Verified</strong></label>
|
|
55
|
+
<k-toggle id="emailVerified"></k-toggle>
|
|
56
|
+
</div>
|
|
57
|
+
<div class="d-f mb" style="align-items: center; gap: var(--spacer);">
|
|
58
|
+
<label style="min-width: 120px;"><strong>Created</strong></label>
|
|
59
|
+
<span id="userCreatedAt"></span>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
<!-- Groups -->
|
|
64
|
+
<div class="card">
|
|
65
|
+
<h2>Groups</h2>
|
|
66
|
+
<k-table id="groupsTable" request-delete placeholder="Not a member of any groups.">
|
|
67
|
+
<admin-table-row-link slot="before" url-pattern="/admin/accounts/groups/{name}" field-name="name"></admin-table-row-link>
|
|
68
|
+
<k-tc-delete-record slot="after"></k-tc-delete-record>
|
|
69
|
+
<div slot="top" id="groupsTableTop" class="d-f full" style="display:none; align-items: center;">
|
|
70
|
+
<div><admin-group-delete-selected></admin-group-delete-selected></div>
|
|
71
|
+
<div class="flex"></div>
|
|
72
|
+
<div><admin-add-group-control id="addGroupBtn"></admin-add-group-control></div>
|
|
73
|
+
</div>
|
|
74
|
+
</k-table>
|
|
75
|
+
</div>
|
|
76
|
+
|
|
77
|
+
<!-- Sessions -->
|
|
78
|
+
<div class="card">
|
|
79
|
+
<h2>Sessions</h2>
|
|
80
|
+
<k-table id="sessionsTable" enable-pages page-size="10" page-size-options="[10,25,50]" placeholder="No active sessions.">
|
|
81
|
+
<k-tc-delete-record slot="after"></k-tc-delete-record>
|
|
82
|
+
<div slot="top" class="d-f full" style="align-items: center;">
|
|
83
|
+
<div><k-tc-delete-selected></k-tc-delete-selected></div>
|
|
84
|
+
<div class="flex"></div>
|
|
85
|
+
<div><admin-clear-expired-sessions id="clearExpiredBtn" style="display:none;"></admin-clear-expired-sessions></div>
|
|
86
|
+
</div>
|
|
87
|
+
<div class="d-f full" style="align-items: center;">
|
|
88
|
+
<div>
|
|
89
|
+
<k-tc-first-page></k-tc-first-page>
|
|
90
|
+
<k-tc-prev-page></k-tc-prev-page>
|
|
91
|
+
<k-tc-next-page></k-tc-next-page>
|
|
92
|
+
<k-tc-last-page></k-tc-last-page>
|
|
93
|
+
</div>
|
|
94
|
+
<div class="flex"></div>
|
|
95
|
+
<div><k-tc-page-select></k-tc-page-select></div>
|
|
96
|
+
<div class="flex"></div>
|
|
97
|
+
<div><k-tc-page-size></k-tc-page-size></div>
|
|
98
|
+
</div>
|
|
99
|
+
</k-table>
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
</div>
|
|
103
|
+
|
|
104
|
+
<script type="module">
|
|
105
|
+
import {
|
|
5
106
|
getSession, getUser, updateUser, deleteUsers,
|
|
6
107
|
getUserSessions, deleteUserSession, deleteExpiredUserSessions,
|
|
7
108
|
getUserGroups, addUserToGroup, removeUserFromGroup,
|
|
@@ -105,7 +206,7 @@
|
|
|
105
206
|
$userEmail.addEventListener('input', checkDirty);
|
|
106
207
|
$emailVerified.addEventListener('change', checkDirty);
|
|
107
208
|
|
|
108
|
-
|
|
209
|
+
const handleSave = async () => {
|
|
109
210
|
const [error] = await updateUser({
|
|
110
211
|
id: userData.id,
|
|
111
212
|
name: $userName.value,
|
|
@@ -121,6 +222,15 @@
|
|
|
121
222
|
document.title = `${$userName.value} - Admin`;
|
|
122
223
|
$saveBtn.disabled = true;
|
|
123
224
|
Toast.success('User saved');
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
$saveBtn.addEventListener('click', handleSave);
|
|
228
|
+
|
|
229
|
+
document.addEventListener('keydown', e => {
|
|
230
|
+
if((e.ctrlKey || e.metaKey) && e.key === 's'){
|
|
231
|
+
e.preventDefault();
|
|
232
|
+
if(!$saveBtn.disabled) handleSave();
|
|
233
|
+
}
|
|
124
234
|
});
|
|
125
235
|
}
|
|
126
236
|
|
|
@@ -311,4 +421,8 @@
|
|
|
311
421
|
};
|
|
312
422
|
|
|
313
423
|
loadSessions();
|
|
314
|
-
}
|
|
424
|
+
}
|
|
425
|
+
</script>
|
|
426
|
+
|
|
427
|
+
</content>
|
|
428
|
+
</page>
|