kempo 4.2.16 → 4.2.18
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/bin/cli.js +21 -4
- package/dist/admin/components/AddGroupControl.js +2 -2
- package/dist/admin/components/AddGroupControl.js.map +1 -1
- package/dist/admin/components/ClearExpiredSessionsControl.js +2 -2
- package/dist/admin/components/ClearExpiredSessionsControl.js.map +1 -1
- package/dist/admin/components/FragmentEditor.js +15 -15
- package/dist/admin/components/FragmentEditor.js.map +1 -1
- package/dist/admin/components/GlobalContentEditor.js +12 -12
- package/dist/admin/components/GlobalContentEditor.js.map +1 -1
- package/dist/admin/components/GroupDeleteSelected.js +2 -2
- package/dist/admin/components/GroupDeleteSelected.js.map +1 -1
- package/dist/admin/components/GroupRemoveRecord.js +2 -2
- package/dist/admin/components/GroupRemoveRecord.js.map +1 -1
- package/dist/admin/components/Monaco.js +1 -1
- package/dist/admin/components/Monaco.js.map +1 -1
- package/dist/admin/components/PageEditor.js +42 -28
- package/dist/admin/components/PageEditor.js.map +1 -1
- package/dist/admin/components/TableRowDelete.js +2 -2
- package/dist/admin/components/TableRowDelete.js.map +1 -1
- package/dist/admin/components/TableRowLink.js +2 -2
- package/dist/admin/components/TableRowLink.js.map +1 -1
- package/dist/admin/components/TemplateEditor.js +18 -18
- package/dist/admin/components/TemplateEditor.js.map +1 -1
- package/dist/admin/components/ValueEditor.js +17 -17
- package/dist/admin/components/ValueEditor.js.map +1 -1
- package/dist/admin/components/tableControls/AddMember.js +2 -2
- package/dist/admin/components/tableControls/AddMember.js.map +1 -1
- package/dist/admin/components/tableControls/AddPermission.js +2 -2
- package/dist/admin/components/tableControls/AddPermission.js.map +1 -1
- 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/extensions/index.page.html +49 -15
- package/dist/admin/icons/open_in_new.svg +1 -0
- package/dist/admin/nav.fragment.html +1 -1
- package/dist/kempo/api/admin-globals/DELETE.js +1 -1
- package/dist/kempo/api/admin-globals/DELETE.js.map +1 -1
- package/dist/kempo/api/admin-globals/GET.js +1 -1
- package/dist/kempo/api/admin-globals/GET.js.map +1 -1
- package/dist/kempo/api/admin-globals/POST.js +1 -1
- package/dist/kempo/api/admin-globals/POST.js.map +1 -1
- package/dist/kempo/api/admin-globals/[id]/GET.js +1 -1
- package/dist/kempo/api/admin-globals/[id]/GET.js.map +1 -1
- package/dist/kempo/api/admin-globals/[id]/PUT.js +1 -1
- package/dist/kempo/api/admin-globals/[id]/PUT.js.map +1 -1
- package/dist/kempo/api/admin-globals/[id]/disable/PUT.js +1 -1
- package/dist/kempo/api/admin-globals/[id]/disable/PUT.js.map +1 -1
- package/dist/kempo/api/admin-globals/[id]/enable/PUT.js +1 -1
- package/dist/kempo/api/admin-globals/[id]/enable/PUT.js.map +1 -1
- package/dist/kempo/api/auth/change-password/POST.js +1 -1
- package/dist/kempo/api/auth/change-password/POST.js.map +1 -1
- package/dist/kempo/api/auth/login/email/POST.js +1 -1
- package/dist/kempo/api/auth/login/email/POST.js.map +1 -1
- package/dist/kempo/api/auth/logout/POST.js +1 -1
- package/dist/kempo/api/auth/logout/POST.js.map +1 -1
- package/dist/kempo/api/auth/register/email/POST.js +1 -1
- package/dist/kempo/api/auth/register/email/POST.js.map +1 -1
- package/dist/kempo/api/auth/reset-password/POST.js +1 -1
- package/dist/kempo/api/auth/reset-password/POST.js.map +1 -1
- package/dist/kempo/api/auth/session/GET.js +1 -1
- package/dist/kempo/api/auth/session/GET.js.map +1 -1
- package/dist/kempo/api/auth/verify-email/POST.js +1 -1
- package/dist/kempo/api/auth/verify-email/POST.js.map +1 -1
- package/dist/kempo/api/extensions/DELETE.js +1 -1
- package/dist/kempo/api/extensions/DELETE.js.map +1 -1
- package/dist/kempo/api/extensions/GET.js +1 -1
- package/dist/kempo/api/extensions/GET.js.map +1 -1
- package/dist/kempo/api/extensions/POST.js +1 -1
- package/dist/kempo/api/extensions/POST.js.map +1 -1
- package/dist/kempo/api/extensions/[name]/disable/POST.js +1 -1
- package/dist/kempo/api/extensions/[name]/disable/POST.js.map +1 -1
- package/dist/kempo/api/extensions/[name]/enable/POST.js +1 -1
- package/dist/kempo/api/extensions/[name]/enable/POST.js.map +1 -1
- package/dist/kempo/api/extensions/[name]/update/POST.js +1 -1
- package/dist/kempo/api/extensions/[name]/update/POST.js.map +1 -1
- package/dist/kempo/api/extensions/[name]/update-check/GET.js +1 -1
- package/dist/kempo/api/extensions/[name]/update-check/GET.js.map +1 -1
- package/dist/kempo/api/extensions/available/GET.js +1 -1
- package/dist/kempo/api/extensions/available/GET.js.map +1 -1
- package/dist/kempo/api/extensions/known/GET.js +1 -1
- package/dist/kempo/api/extensions/known/GET.js.map +1 -1
- package/dist/kempo/api/forgot-password/POST.js +1 -1
- package/dist/kempo/api/forgot-password/POST.js.map +1 -1
- 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 +2 -2
- 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 +2 -2
- package/dist/kempo/api/globals/lock/PUT.js.map +1 -1
- package/dist/kempo/api/groups/DELETE.js +1 -1
- package/dist/kempo/api/groups/DELETE.js.map +1 -1
- package/dist/kempo/api/groups/GET.js +1 -1
- package/dist/kempo/api/groups/GET.js.map +1 -1
- package/dist/kempo/api/groups/PATCH.js +1 -1
- package/dist/kempo/api/groups/PATCH.js.map +1 -1
- package/dist/kempo/api/groups/POST.js +1 -1
- package/dist/kempo/api/groups/POST.js.map +1 -1
- package/dist/kempo/api/groups/[name]/GET.js +1 -1
- package/dist/kempo/api/groups/[name]/GET.js.map +1 -1
- package/dist/kempo/api/groups/[name]/members/DELETE.js +1 -1
- package/dist/kempo/api/groups/[name]/members/DELETE.js.map +1 -1
- package/dist/kempo/api/groups/[name]/members/GET.js +1 -1
- package/dist/kempo/api/groups/[name]/members/GET.js.map +1 -1
- package/dist/kempo/api/groups/[name]/members/POST.js +1 -1
- package/dist/kempo/api/groups/[name]/members/POST.js.map +1 -1
- package/dist/kempo/api/groups/[name]/permissions/DELETE.js +1 -1
- package/dist/kempo/api/groups/[name]/permissions/DELETE.js.map +1 -1
- package/dist/kempo/api/groups/[name]/permissions/GET.js +1 -1
- package/dist/kempo/api/groups/[name]/permissions/GET.js.map +1 -1
- package/dist/kempo/api/groups/[name]/permissions/POST.js +1 -1
- package/dist/kempo/api/groups/[name]/permissions/POST.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 +2 -2
- package/dist/kempo/api/pages/lock/PUT.js.map +1 -1
- package/dist/kempo/api/pages/search/GET.js +2 -2
- 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/permissions/DELETE.js +1 -1
- package/dist/kempo/api/permissions/DELETE.js.map +1 -1
- package/dist/kempo/api/permissions/GET.js +1 -1
- package/dist/kempo/api/permissions/GET.js.map +1 -1
- package/dist/kempo/api/permissions/PATCH.js +1 -1
- package/dist/kempo/api/permissions/PATCH.js.map +1 -1
- package/dist/kempo/api/permissions/POST.js +1 -1
- package/dist/kempo/api/permissions/POST.js.map +1 -1
- package/dist/kempo/api/settings/[owner]/GET.js +1 -1
- package/dist/kempo/api/settings/[owner]/GET.js.map +1 -1
- package/dist/kempo/api/settings/[owner]/[name]/DELETE.js +1 -1
- package/dist/kempo/api/settings/[owner]/[name]/DELETE.js.map +1 -1
- package/dist/kempo/api/settings/[owner]/[name]/GET.js +1 -1
- package/dist/kempo/api/settings/[owner]/[name]/GET.js.map +1 -1
- package/dist/kempo/api/settings/[owner]/[name]/POST.js +1 -1
- package/dist/kempo/api/settings/[owner]/[name]/POST.js.map +1 -1
- package/dist/kempo/api/settings/public/GET.js +1 -1
- package/dist/kempo/api/settings/public/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 +2 -2
- package/dist/kempo/api/templates/lock/PUT.js.map +1 -1
- package/dist/kempo/api/user/DELETE.js +1 -1
- package/dist/kempo/api/user/DELETE.js.map +1 -1
- package/dist/kempo/api/user/GET.js +1 -1
- package/dist/kempo/api/user/GET.js.map +1 -1
- package/dist/kempo/api/user/PATCH.js +1 -1
- package/dist/kempo/api/user/PATCH.js.map +1 -1
- package/dist/kempo/api/user/[userid]/GET.js +1 -1
- package/dist/kempo/api/user/[userid]/GET.js.map +1 -1
- package/dist/kempo/api/user/[userid]/groups/DELETE.js +1 -1
- package/dist/kempo/api/user/[userid]/groups/DELETE.js.map +1 -1
- package/dist/kempo/api/user/[userid]/groups/GET.js +1 -1
- package/dist/kempo/api/user/[userid]/groups/GET.js.map +1 -1
- package/dist/kempo/api/user/[userid]/groups/POST.js +1 -1
- package/dist/kempo/api/user/[userid]/groups/POST.js.map +1 -1
- package/dist/kempo/api/user/[userid]/permissions/GET.js +1 -1
- package/dist/kempo/api/user/[userid]/permissions/GET.js.map +1 -1
- package/dist/kempo/api/user/[userid]/permissions/all/GET.js +1 -1
- package/dist/kempo/api/user/[userid]/permissions/all/GET.js.map +1 -1
- package/dist/kempo/api/user/[userid]/permissions/list/GET.js +1 -1
- package/dist/kempo/api/user/[userid]/permissions/list/GET.js.map +1 -1
- package/dist/kempo/api/user/[userid]/permissions/some/GET.js +1 -1
- package/dist/kempo/api/user/[userid]/permissions/some/GET.js.map +1 -1
- package/dist/kempo/api/user/[userid]/sessions/DELETE.js +1 -1
- package/dist/kempo/api/user/[userid]/sessions/DELETE.js.map +1 -1
- package/dist/kempo/api/user/[userid]/sessions/GET.js +1 -1
- package/dist/kempo/api/user/[userid]/sessions/GET.js.map +1 -1
- package/dist/kempo/api/user/[userid]/sessions/expired/DELETE.js +1 -1
- package/dist/kempo/api/user/[userid]/sessions/expired/DELETE.js.map +1 -1
- package/dist/kempo/api/user/create/POST.js +1 -1
- package/dist/kempo/api/user/create/POST.js.map +1 -1
- package/dist/kempo/api/user/search/GET.js +1 -1
- package/dist/kempo/api/user/search/GET.js.map +1 -1
- package/dist/kempo/components/LogoutBtn.js +1 -1
- package/dist/kempo/components/LogoutBtn.js.map +1 -1
- package/dist/kempo/components/Menu.js +9 -9
- package/dist/kempo/components/Menu.js.map +1 -1
- package/dist/kempo/components/Permission.js +1 -1
- package/dist/kempo/components/Permission.js.map +1 -1
- package/dist/kempo/components/Role.js +1 -1
- package/dist/kempo/components/Role.js.map +1 -1
- package/dist/kempo/components/UserCreatedAt.js +1 -1
- package/dist/kempo/components/UserCreatedAt.js.map +1 -1
- package/dist/kempo/components/UserEmail.js +1 -1
- package/dist/kempo/components/UserEmail.js.map +1 -1
- package/dist/kempo/components/UserEmailVerified.js +1 -1
- package/dist/kempo/components/UserEmailVerified.js.map +1 -1
- package/dist/kempo/components/UserName.js +1 -1
- package/dist/kempo/components/UserName.js.map +1 -1
- package/dist/kempo/fetch.js +1 -1
- package/dist/kempo/fetch.js.map +1 -1
- package/dist/kempo/sdk.js +1 -1
- package/dist/kempo/sdk.js.map +1 -1
- package/middleware/kempo.js +36 -6
- package/package.json +2 -2
- package/server/utils/extensions/installExtension.js +19 -13
- package/server/utils/extensions/uninstallExtension.js +6 -10
- package/server/utils/pages/deletePage.js +2 -10
- package/dist/admin/accounts/groups/[name]/index.html +0 -518
- package/dist/admin/accounts/groups/index.html +0 -378
- package/dist/admin/accounts/permissions/index.html +0 -397
- package/dist/admin/accounts/users/[id]/index.html +0 -541
- package/dist/admin/accounts/users/index.html +0 -396
- package/dist/admin/content/fragments/edit/index.html +0 -132
- package/dist/admin/content/fragments/index.html +0 -375
- package/dist/admin/content/globals/edit/index.html +0 -132
- package/dist/admin/content/globals/index.html +0 -358
- package/dist/admin/content/pages/edit/index.html +0 -132
- package/dist/admin/content/pages/index.html +0 -509
- package/dist/admin/content/templates/edit/index.html +0 -132
- package/dist/admin/content/templates/index.html +0 -429
- package/dist/admin/extensions/index.html +0 -222
- package/dist/admin/index.html +0 -130
- package/dist/admin/settings/[owner]/[name]/index.html +0 -449
- package/dist/admin/settings/index.html +0 -410
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../../server/utils/permissions/getUserGroups.js";export default async(e,t)=>{const o=e.cookies.session_token,[i,n]=await s(o,"system:group:read");if(i)return t.status(i.code).json({error:i.msg});if(!n)return t.status(403).json({error:"Insufficient permissions"});const{userid:u}=e.params,[a,m]=await r(u);if(a)return t.status(a.code).json({error:a.msg});const f=parseInt(e.query.limit)||50,p=parseInt(e.query.offset)||0,c=m.length;t.json({groups:m.slice(p,p+f),total:c,limit:f,offset:p})};
|
|
2
2
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\groups\GET.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src\\kempo\\api\\user\\[userid]\\groups\\GET.js","names":["currentUserHasPermission","getUserGroups","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","userid","params","allGroups","limit","parseInt","query","offset","total","length","groups","slice"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport getUserGroups from '../../../../../../server/utils/permissions/getUserGroups.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:group:read');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const { userid } = request.params;\r\n const [error, allGroups] = await getUserGroups(userid);\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n const limit = parseInt(request.query.limit) || 50;\r\n const offset = parseInt(request.query.offset) || 0;\r\n const total = allGroups.length;\r\n response.json({ groups: allGroups.slice(offset, offset + limit), total, limit, offset });\r\n};\r\n"],"mappings":"OAAOA,
|
|
1
|
+
{"version":3,"file":"src\\kempo\\api\\user\\[userid]\\groups\\GET.js","names":["currentUserHasPermission","getUserGroups","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","userid","params","allGroups","limit","parseInt","query","offset","total","length","groups","slice"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport getUserGroups from '../../../../../../server/utils/permissions/getUserGroups.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:group:read');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const { userid } = request.params;\r\n const [error, allGroups] = await getUserGroups(userid);\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n const limit = parseInt(request.query.limit) || 50;\r\n const offset = parseInt(request.query.offset) || 0;\r\n const total = allGroups.length;\r\n response.json({ groups: allGroups.slice(offset, offset + limit), total, limit, offset });\r\n};\r\n"],"mappings":"OAAOA,MAA8B,gFAC9BC,MAAmB,6EAEXC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,EAAyBK,EAAO,qBAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,OAAEA,GAAWZ,EAAQa,QACpBH,EAAOI,SAAmBhB,EAAcc,GAE/C,GAAGF,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzD,MAAMI,EAAQC,SAAShB,EAAQiB,MAAMF,QAAU,GACzCG,EAASF,SAAShB,EAAQiB,MAAMC,SAAW,EAC3CC,EAAQL,EAAUM,OACxBnB,EAASQ,KAAK,CAAEY,OAAQP,EAAUQ,MAAMJ,EAAQA,EAASH,GAAQI,QAAOJ,QAAOG","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../../server/utils/groups/addUserToGroup.js";export default async(e,o)=>{const t=e.cookies.session_token,[i,n]=await s(t,"system:group:update");if(i)return o.status(i.code).json({error:i.msg});if(!n)return o.status(403).json({error:"Insufficient permissions"});const{userid:u}=e.params,{groupName:a}=e.body;if(!a)return o.status(400).json({error:"Group name is required"});const[m,p]=await r(u,a);if(m)return o.status(m.code).json({error:m.msg});o.json(p)};
|
|
2
2
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\groups\POST.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src\\kempo\\api\\user\\[userid]\\groups\\POST.js","names":["currentUserHasPermission","addUserToGroup","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","userid","params","groupName","body","result"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport addUserToGroup from '../../../../../../server/utils/groups/addUserToGroup.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:group:update');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const { userid } = request.params;\r\n const { groupName } = request.body;\r\n\r\n if(!groupName){\r\n return response.status(400).json({ error: 'Group name is required' });\r\n }\r\n\r\n const [error, result] = await addUserToGroup(userid, groupName);\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(result);\r\n};\r\n"],"mappings":"OAAOA,
|
|
1
|
+
{"version":3,"file":"src\\kempo\\api\\user\\[userid]\\groups\\POST.js","names":["currentUserHasPermission","addUserToGroup","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","userid","params","groupName","body","result"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport addUserToGroup from '../../../../../../server/utils/groups/addUserToGroup.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:group:update');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const { userid } = request.params;\r\n const { groupName } = request.body;\r\n\r\n if(!groupName){\r\n return response.status(400).json({ error: 'Group name is required' });\r\n }\r\n\r\n const [error, result] = await addUserToGroup(userid, groupName);\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(result);\r\n};\r\n"],"mappings":"OAAOA,MAA8B,gFAC9BC,MAAoB,yEAEZC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,EAAyBK,EAAO,uBAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,OAAEA,GAAWZ,EAAQa,QACrBC,UAAEA,GAAcd,EAAQe,KAE9B,IAAID,EACF,OAAOb,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,2BAG5C,MAAOA,EAAOM,SAAgBlB,EAAec,EAAQE,GAErD,GAAGJ,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKO","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import s from"../../../../../../server/utils/auth/getSession.js";import r from"../../../../../../server/utils/permissions/getUserPermission.js";import e from"../../../../../../server/utils/permissions/getUserPermissions.js";import o from"../../../../../../server/utils/permissions/userHasPermission.js";export default async(i,t)=>{try{const n=i.cookies.session_token,[u,a]=await s({token:n});if(u||!a||!a.user)return t.status(401).json({error:"Unauthorized"});const{userid:m}=i.params,c="current"===m?a.user.id:m;if("current"!==m){const[s,r]=await o(a.user.id,"system:permissions:read");if(s||!r)return t.status(403).json({error:"Forbidden"})}const p=i.query.permission;if(p){const[s,e]=await r(c,p);return s?t.status(s.code).json({error:s.msg}):t.json({hasPermission:e})}const[j,d]=await e(c);if(j)return t.status(j.code).json({error:j.msg});t.json({permissions:d})}catch(s){console.error("Get user permission error:",s),t.status(500).json({error:s.message})}};
|
|
2
2
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\permissions\GET.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src\\kempo\\api\\user\\[userid]\\permissions\\GET.js","names":["getSession","getUserPermission","getUserPermissions","userHasPermission","async","request","response","sessionToken","cookies","session_token","sessionError","session","token","user","status","json","error","userid","params","targetUserId","id","cPermError","cHasPerm","permissionName","query","permission","permError","hasPermission","code","msg","permsError","userPermissions","permissions","console","message"],"sources":["0"],"sourcesContent":["import getSession from '../../../../../../server/utils/auth/getSession.js';\r\nimport getUserPermission from '../../../../../../server/utils/permissions/getUserPermission.js';\r\nimport getUserPermissions from '../../../../../../server/utils/permissions/getUserPermissions.js';\r\nimport userHasPermission from '../../../../../../server/utils/permissions/userHasPermission.js';\r\n\r\nexport default async (request, response) => {\r\n try {\r\n /*\r\n Are they logged in?\r\n */\r\n const sessionToken = request.cookies.session_token;\r\n const [sessionError, session] = await getSession({ token: sessionToken });\r\n if(sessionError || !session || !session.user){\r\n return response.status(401).json({ error: 'Unauthorized' });\r\n }\r\n \r\n /*\r\n Whos permission are they checking?\r\n */\r\n const { userid } = request.params;\r\n const targetUserId = userid === 'current' ? session.user.id : userid;\r\n \r\n /*\r\n If they are checking another users permissions, do they have permission to do so?\r\n */\r\n if(userid !== 'current'){\r\n const [cPermError, cHasPerm] = await userHasPermission(session.user.id, 'system:permissions:read');\r\n if(cPermError || !cHasPerm){\r\n return response.status(403).json({ error: 'Forbidden' });\r\n }\r\n }\r\n \r\n /*\r\n Are they checking a specific permission or getting all?\r\n */\r\n const permissionName = request.query.permission;\r\n \r\n if(permissionName){\r\n /*\r\n Check a single permission\r\n */\r\n const [permError, hasPermission] = await getUserPermission(targetUserId, permissionName);\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n return response.json({ hasPermission });\r\n }\r\n \r\n /*\r\n Get all of the users permissions\r\n */\r\n const [permsError, userPermissions] = await getUserPermissions(targetUserId);\r\n if(permsError){\r\n return response.status(permsError.code).json({ error: permsError.msg });\r\n }\r\n \r\n response.json({ permissions: userPermissions });\r\n } catch(error){\r\n console.error('Get user permission error:', error);\r\n response.status(500).json({ error: error.message });\r\n }\r\n};\r\n"],"mappings":"OAAOA,
|
|
1
|
+
{"version":3,"file":"src\\kempo\\api\\user\\[userid]\\permissions\\GET.js","names":["getSession","getUserPermission","getUserPermissions","userHasPermission","async","request","response","sessionToken","cookies","session_token","sessionError","session","token","user","status","json","error","userid","params","targetUserId","id","cPermError","cHasPerm","permissionName","query","permission","permError","hasPermission","code","msg","permsError","userPermissions","permissions","console","message"],"sources":["0"],"sourcesContent":["import getSession from '../../../../../../server/utils/auth/getSession.js';\r\nimport getUserPermission from '../../../../../../server/utils/permissions/getUserPermission.js';\r\nimport getUserPermissions from '../../../../../../server/utils/permissions/getUserPermissions.js';\r\nimport userHasPermission from '../../../../../../server/utils/permissions/userHasPermission.js';\r\n\r\nexport default async (request, response) => {\r\n try {\r\n /*\r\n Are they logged in?\r\n */\r\n const sessionToken = request.cookies.session_token;\r\n const [sessionError, session] = await getSession({ token: sessionToken });\r\n if(sessionError || !session || !session.user){\r\n return response.status(401).json({ error: 'Unauthorized' });\r\n }\r\n \r\n /*\r\n Whos permission are they checking?\r\n */\r\n const { userid } = request.params;\r\n const targetUserId = userid === 'current' ? session.user.id : userid;\r\n \r\n /*\r\n If they are checking another users permissions, do they have permission to do so?\r\n */\r\n if(userid !== 'current'){\r\n const [cPermError, cHasPerm] = await userHasPermission(session.user.id, 'system:permissions:read');\r\n if(cPermError || !cHasPerm){\r\n return response.status(403).json({ error: 'Forbidden' });\r\n }\r\n }\r\n \r\n /*\r\n Are they checking a specific permission or getting all?\r\n */\r\n const permissionName = request.query.permission;\r\n \r\n if(permissionName){\r\n /*\r\n Check a single permission\r\n */\r\n const [permError, hasPermission] = await getUserPermission(targetUserId, permissionName);\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n return response.json({ hasPermission });\r\n }\r\n \r\n /*\r\n Get all of the users permissions\r\n */\r\n const [permsError, userPermissions] = await getUserPermissions(targetUserId);\r\n if(permsError){\r\n return response.status(permsError.code).json({ error: permsError.msg });\r\n }\r\n \r\n response.json({ permissions: userPermissions });\r\n } catch(error){\r\n console.error('Get user permission error:', error);\r\n response.status(500).json({ error: error.message });\r\n }\r\n};\r\n"],"mappings":"OAAOA,MAAgB,2DAChBC,MAAuB,yEACvBC,MAAwB,0EACxBC,MAAuB,iFAEfC,MAAOC,EAASC,KAC7B,IAIE,MAAMC,EAAeF,EAAQG,QAAQC,eAC9BC,EAAcC,SAAiBX,EAAW,CAAEY,MAAOL,IAC1D,GAAGG,IAAiBC,IAAYA,EAAQE,KACtC,OAAOP,EAASQ,OAAO,KAAKC,KAAK,CAAEC,MAAO,iBAM5C,MAAMC,OAAEA,GAAWZ,EAAQa,OACrBC,EAA0B,YAAXF,EAAuBN,EAAQE,KAAKO,GAAKH,EAK9D,GAAc,YAAXA,EAAqB,CACtB,MAAOI,EAAYC,SAAkBnB,EAAkBQ,EAAQE,KAAKO,GAAI,2BACxE,GAAGC,IAAeC,EAChB,OAAOhB,EAASQ,OAAO,KAAKC,KAAK,CAAEC,MAAO,aAE9C,CAKA,MAAMO,EAAiBlB,EAAQmB,MAAMC,WAErC,GAAGF,EAAe,CAIhB,MAAOG,EAAWC,SAAuB1B,EAAkBkB,EAAcI,GACzE,OAAGG,EACMpB,EAASQ,OAAOY,EAAUE,MAAMb,KAAK,CAAEC,MAAOU,EAAUG,MAE1DvB,EAASS,KAAK,CAAEY,iBACzB,CAKA,MAAOG,EAAYC,SAAyB7B,EAAmBiB,GAC/D,GAAGW,EACD,OAAOxB,EAASQ,OAAOgB,EAAWF,MAAMb,KAAK,CAAEC,MAAOc,EAAWD,MAGnEvB,EAASS,KAAK,CAAEiB,YAAaD,GAC/B,CAAE,MAAMf,GACNiB,QAAQjB,MAAM,6BAA8BA,GAC5CV,EAASQ,OAAO,KAAKC,KAAK,CAAEC,MAAOA,EAAMkB,SAC3C","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import s from"../../../../../../../server/utils/auth/getSession.js";import r from"../../../../../../../server/utils/permissions/getUserPermissions.js";import e from"../../../../../../../server/utils/permissions/userHasPermission.js";export default async(o,t)=>{try{const i=o.query.permissions;if(!i)return t.status(400).json({error:"permissions parameter required"});const n=o.cookies.session_token,[a,m]=await s({token:n});if(a||!m||!m.user)return t.status(401).json({error:"Unauthorized"});const{userid:u}=o.params,c="current"===u?m.user.id:u;if("current"!==u){const[s,r]=await e(m.user.id,"system:permissions:read");if(s||!r)return t.status(403).json({error:"Forbidden"})}const p=i.split(",").map(s=>s.trim()),[d,f]=await r(c);if(d)return t.status(d.code).json({error:d.msg});const j=new Set(f.map(s=>s.name)),l=p.every(s=>j.has(s));t.json({hasPermission:l})}catch(s){console.error("Check all permissions error:",s),t.status(500).json({error:s.message})}};
|
|
2
2
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\permissions\all\GET.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src\\kempo\\api\\user\\[userid]\\permissions\\all\\GET.js","names":["getSession","getUserPermissions","userHasPermission","async","request","response","permissionsParam","query","permissions","status","json","error","sessionToken","cookies","session_token","sessionError","session","token","user","userid","params","targetUserId","id","cPermError","cHasPerm","permissionsToCheck","split","map","p","trim","permsError","userPermissions","code","msg","permissionNames","Set","name","hasAll","every","has","hasPermission","console","message"],"sources":["0"],"sourcesContent":["import getSession from '../../../../../../../server/utils/auth/getSession.js';\r\nimport getUserPermissions from '../../../../../../../server/utils/permissions/getUserPermissions.js';\r\nimport userHasPermission from '../../../../../../../server/utils/permissions/userHasPermission.js';\r\n\r\nexport default async (request, response) => {\r\n try {\r\n /*\r\n Which permissions are they checking?\r\n */\r\n const permissionsParam = request.query.permissions;\r\n if(!permissionsParam){\r\n return response.status(400).json({ error: 'permissions parameter required' });\r\n }\r\n \r\n /*\r\n Are they logged in?\r\n */\r\n const sessionToken = request.cookies.session_token;\r\n const [sessionError, session] = await getSession({ token: sessionToken });\r\n \r\n if(sessionError || !session || !session.user){\r\n return response.status(401).json({ error: 'Unauthorized' });\r\n }\r\n \r\n /*\r\n Whos permission are they checking?\r\n */\r\n const { userid } = request.params;\r\n const targetUserId = userid === 'current' ? session.user.id : userid;\r\n \r\n /*\r\n If they are checking another users permissions, do they have permission to do so?\r\n */\r\n if(userid !== 'current'){\r\n const [cPermError, cHasPerm] = await userHasPermission(session.user.id, 'system:permissions:read');\r\n if(cPermError || !cHasPerm){\r\n return response.status(403).json({ error: 'Forbidden' });\r\n }\r\n }\r\n\r\n /*\r\n They are either checking their own permissions, or have permission to check someone elses\r\n */\r\n const permissionsToCheck = permissionsParam.split(',').map(p => p.trim());\r\n\r\n const [permsError, userPermissions] = await getUserPermissions(targetUserId);\r\n \r\n if(permsError){\r\n return response.status(permsError.code).json({ error: permsError.msg });\r\n }\r\n \r\n const permissionNames = new Set(userPermissions.map(p => p.name));\r\n\r\n const hasAll = permissionsToCheck.every(p => permissionNames.has(p));\r\n\r\n response.json({ hasPermission: hasAll });\r\n } catch(error){\r\n console.error('Check all permissions error:', error);\r\n response.status(500).json({ error: error.message });\r\n }\r\n};\r\n"],"mappings":"OAAOA,
|
|
1
|
+
{"version":3,"file":"src\\kempo\\api\\user\\[userid]\\permissions\\all\\GET.js","names":["getSession","getUserPermissions","userHasPermission","async","request","response","permissionsParam","query","permissions","status","json","error","sessionToken","cookies","session_token","sessionError","session","token","user","userid","params","targetUserId","id","cPermError","cHasPerm","permissionsToCheck","split","map","p","trim","permsError","userPermissions","code","msg","permissionNames","Set","name","hasAll","every","has","hasPermission","console","message"],"sources":["0"],"sourcesContent":["import getSession from '../../../../../../../server/utils/auth/getSession.js';\r\nimport getUserPermissions from '../../../../../../../server/utils/permissions/getUserPermissions.js';\r\nimport userHasPermission from '../../../../../../../server/utils/permissions/userHasPermission.js';\r\n\r\nexport default async (request, response) => {\r\n try {\r\n /*\r\n Which permissions are they checking?\r\n */\r\n const permissionsParam = request.query.permissions;\r\n if(!permissionsParam){\r\n return response.status(400).json({ error: 'permissions parameter required' });\r\n }\r\n \r\n /*\r\n Are they logged in?\r\n */\r\n const sessionToken = request.cookies.session_token;\r\n const [sessionError, session] = await getSession({ token: sessionToken });\r\n \r\n if(sessionError || !session || !session.user){\r\n return response.status(401).json({ error: 'Unauthorized' });\r\n }\r\n \r\n /*\r\n Whos permission are they checking?\r\n */\r\n const { userid } = request.params;\r\n const targetUserId = userid === 'current' ? session.user.id : userid;\r\n \r\n /*\r\n If they are checking another users permissions, do they have permission to do so?\r\n */\r\n if(userid !== 'current'){\r\n const [cPermError, cHasPerm] = await userHasPermission(session.user.id, 'system:permissions:read');\r\n if(cPermError || !cHasPerm){\r\n return response.status(403).json({ error: 'Forbidden' });\r\n }\r\n }\r\n\r\n /*\r\n They are either checking their own permissions, or have permission to check someone elses\r\n */\r\n const permissionsToCheck = permissionsParam.split(',').map(p => p.trim());\r\n\r\n const [permsError, userPermissions] = await getUserPermissions(targetUserId);\r\n \r\n if(permsError){\r\n return response.status(permsError.code).json({ error: permsError.msg });\r\n }\r\n \r\n const permissionNames = new Set(userPermissions.map(p => p.name));\r\n\r\n const hasAll = permissionsToCheck.every(p => permissionNames.has(p));\r\n\r\n response.json({ hasPermission: hasAll });\r\n } catch(error){\r\n console.error('Check all permissions error:', error);\r\n response.status(500).json({ error: error.message });\r\n }\r\n};\r\n"],"mappings":"OAAOA,MAAgB,8DAChBC,MAAwB,6EACxBC,MAAuB,oFAEfC,MAAOC,EAASC,KAC7B,IAIE,MAAMC,EAAmBF,EAAQG,MAAMC,YACvC,IAAIF,EACF,OAAOD,EAASI,OAAO,KAAKC,KAAK,CAAEC,MAAO,mCAM5C,MAAMC,EAAeR,EAAQS,QAAQC,eAC9BC,EAAcC,SAAiBhB,EAAW,CAAEiB,MAAOL,IAE1D,GAAGG,IAAiBC,IAAYA,EAAQE,KACtC,OAAOb,EAASI,OAAO,KAAKC,KAAK,CAAEC,MAAO,iBAM5C,MAAMQ,OAAEA,GAAWf,EAAQgB,OACrBC,EAA0B,YAAXF,EAAuBH,EAAQE,KAAKI,GAAKH,EAK9D,GAAc,YAAXA,EAAqB,CACtB,MAAOI,EAAYC,SAAkBtB,EAAkBc,EAAQE,KAAKI,GAAI,2BACxE,GAAGC,IAAeC,EAChB,OAAOnB,EAASI,OAAO,KAAKC,KAAK,CAAEC,MAAO,aAE9C,CAKA,MAAMc,EAAqBnB,EAAiBoB,MAAM,KAAKC,IAAIC,GAAKA,EAAEC,SAE3DC,EAAYC,SAAyB9B,EAAmBoB,GAE/D,GAAGS,EACD,OAAOzB,EAASI,OAAOqB,EAAWE,MAAMtB,KAAK,CAAEC,MAAOmB,EAAWG,MAGnE,MAAMC,EAAkB,IAAIC,IAAIJ,EAAgBJ,IAAIC,GAAKA,EAAEQ,OAErDC,EAASZ,EAAmBa,MAAMV,GAAKM,EAAgBK,IAAIX,IAEjEvB,EAASK,KAAK,CAAE8B,cAAeH,GACjC,CAAE,MAAM1B,GACN8B,QAAQ9B,MAAM,+BAAgCA,GAC9CN,EAASI,OAAO,KAAKC,KAAK,CAAEC,MAAOA,EAAM+B,SAC3C","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import s from"../../../../../../../server/utils/auth/getSession.js";import r from"../../../../../../../server/utils/permissions/getAllPermissions.js";import e from"../../../../../../../server/utils/permissions/getUserPermissions.js";import o from"../../../../../../../server/utils/permissions/getUserGroups.js";export default async(t,i)=>{try{const n=t.cookies.session_token,[a,m]=await s({token:n});if(a||!m||!m.user)return i.status(401).json({error:"Unauthorized"});const u="current"===t.params.userid?m.user.id:parseInt(t.params.userid);if(!u)return i.status(400).json({error:"Invalid user ID"});const[p,c]=await o(u);if(p)return i.status(p.code).json({error:p.msg});if(c.some(s=>"system:Administrators"===s.name)){const[s,e]=await r({limit:1e4,offset:0});return s?i.status(s.code).json({error:s.msg}):i.json({permissions:e.permissions.map(s=>s.name)})}const[f,j]=await e(u);if(f)return i.status(f.code).json({error:f.msg});i.json({permissions:j})}catch(s){console.error("List user permissions error:",s),i.status(500).json({error:s.message})}};
|
|
2
2
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\permissions\list\GET.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src\\kempo\\api\\user\\[userid]\\permissions\\list\\GET.js","names":["getSession","getAllPermissions","getUserPermissions","getUserGroups","async","request","response","sessionToken","cookies","session_token","sessionError","session","token","user","status","json","error","userId","params","userid","id","parseInt","groupsError","userGroups","code","msg","some","group","name","permsError","allPermissions","limit","offset","permissions","map","p","userPermissions","console","message"],"sources":["0"],"sourcesContent":["import getSession from '../../../../../../../server/utils/auth/getSession.js';\r\nimport getAllPermissions from '../../../../../../../server/utils/permissions/getAllPermissions.js';\r\nimport getUserPermissions from '../../../../../../../server/utils/permissions/getUserPermissions.js';\r\nimport getUserGroups from '../../../../../../../server/utils/permissions/getUserGroups.js';\r\n\r\nexport default async (request, response) => {\r\n try {\r\n /*\r\n Are they logged in?\r\n */\r\n const sessionToken = request.cookies.session_token;\r\n const [sessionError, session] = await getSession({ token: sessionToken });\r\n \r\n if(sessionError || !session || !session.user){\r\n return response.status(401).json({ error: 'Unauthorized' });\r\n }\r\n \r\n const userId = request.params.userid === 'current' ? session.user.id : parseInt(request.params.userid);\r\n \r\n if(!userId){\r\n return response.status(400).json({ error: 'Invalid user ID' });\r\n }\r\n \r\n /*\r\n Get user's groups to check for admin\r\n */\r\n const [groupsError, userGroups] = await getUserGroups(userId);\r\n \r\n if(groupsError){\r\n return response.status(groupsError.code).json({ error: groupsError.msg });\r\n }\r\n\r\n const isAdmin = userGroups.some(group => group.name === 'system:Administrators');\r\n\r\n /*\r\n If admin, return all permissions\r\n */\r\n if(isAdmin){\r\n const [permsError, allPermissions] = await getAllPermissions({ limit: 10000, offset: 0 });\r\n \r\n if(permsError){\r\n return response.status(permsError.code).json({ error: permsError.msg });\r\n }\r\n\r\n return response.json({ permissions: allPermissions.permissions.map(p => p.name) });\r\n }\r\n\r\n /*\r\n Otherwise, get user's actual permissions\r\n */\r\n const [permsError, userPermissions] = await getUserPermissions(userId);\r\n \r\n if(permsError){\r\n return response.status(permsError.code).json({ error: permsError.msg });\r\n }\r\n\r\n response.json({ permissions: userPermissions });\r\n } catch(error){\r\n console.error('List user permissions error:', error);\r\n response.status(500).json({ error: error.message });\r\n }\r\n};\r\n"],"mappings":"OAAOA,
|
|
1
|
+
{"version":3,"file":"src\\kempo\\api\\user\\[userid]\\permissions\\list\\GET.js","names":["getSession","getAllPermissions","getUserPermissions","getUserGroups","async","request","response","sessionToken","cookies","session_token","sessionError","session","token","user","status","json","error","userId","params","userid","id","parseInt","groupsError","userGroups","code","msg","some","group","name","permsError","allPermissions","limit","offset","permissions","map","p","userPermissions","console","message"],"sources":["0"],"sourcesContent":["import getSession from '../../../../../../../server/utils/auth/getSession.js';\r\nimport getAllPermissions from '../../../../../../../server/utils/permissions/getAllPermissions.js';\r\nimport getUserPermissions from '../../../../../../../server/utils/permissions/getUserPermissions.js';\r\nimport getUserGroups from '../../../../../../../server/utils/permissions/getUserGroups.js';\r\n\r\nexport default async (request, response) => {\r\n try {\r\n /*\r\n Are they logged in?\r\n */\r\n const sessionToken = request.cookies.session_token;\r\n const [sessionError, session] = await getSession({ token: sessionToken });\r\n \r\n if(sessionError || !session || !session.user){\r\n return response.status(401).json({ error: 'Unauthorized' });\r\n }\r\n \r\n const userId = request.params.userid === 'current' ? session.user.id : parseInt(request.params.userid);\r\n \r\n if(!userId){\r\n return response.status(400).json({ error: 'Invalid user ID' });\r\n }\r\n \r\n /*\r\n Get user's groups to check for admin\r\n */\r\n const [groupsError, userGroups] = await getUserGroups(userId);\r\n \r\n if(groupsError){\r\n return response.status(groupsError.code).json({ error: groupsError.msg });\r\n }\r\n\r\n const isAdmin = userGroups.some(group => group.name === 'system:Administrators');\r\n\r\n /*\r\n If admin, return all permissions\r\n */\r\n if(isAdmin){\r\n const [permsError, allPermissions] = await getAllPermissions({ limit: 10000, offset: 0 });\r\n \r\n if(permsError){\r\n return response.status(permsError.code).json({ error: permsError.msg });\r\n }\r\n\r\n return response.json({ permissions: allPermissions.permissions.map(p => p.name) });\r\n }\r\n\r\n /*\r\n Otherwise, get user's actual permissions\r\n */\r\n const [permsError, userPermissions] = await getUserPermissions(userId);\r\n \r\n if(permsError){\r\n return response.status(permsError.code).json({ error: permsError.msg });\r\n }\r\n\r\n response.json({ permissions: userPermissions });\r\n } catch(error){\r\n console.error('List user permissions error:', error);\r\n response.status(500).json({ error: error.message });\r\n }\r\n};\r\n"],"mappings":"OAAOA,MAAgB,8DAChBC,MAAuB,4EACvBC,MAAwB,6EACxBC,MAAmB,gFAEXC,MAAOC,EAASC,KAC7B,IAIE,MAAMC,EAAeF,EAAQG,QAAQC,eAC9BC,EAAcC,SAAiBX,EAAW,CAAEY,MAAOL,IAE1D,GAAGG,IAAiBC,IAAYA,EAAQE,KACtC,OAAOP,EAASQ,OAAO,KAAKC,KAAK,CAAEC,MAAO,iBAG5C,MAAMC,EAAmC,YAA1BZ,EAAQa,OAAOC,OAAuBR,EAAQE,KAAKO,GAAKC,SAAShB,EAAQa,OAAOC,QAE/F,IAAIF,EACF,OAAOX,EAASQ,OAAO,KAAKC,KAAK,CAAEC,MAAO,oBAM5C,MAAOM,EAAaC,SAAoBpB,EAAcc,GAEtD,GAAGK,EACD,OAAOhB,EAASQ,OAAOQ,EAAYE,MAAMT,KAAK,CAAEC,MAAOM,EAAYG,MAQrE,GALgBF,EAAWG,KAAKC,GAAwB,0BAAfA,EAAMC,MAKpC,CACT,MAAOC,EAAYC,SAAwB7B,EAAkB,CAAE8B,MAAO,IAAOC,OAAQ,IAErF,OAAGH,EACMvB,EAASQ,OAAOe,EAAWL,MAAMT,KAAK,CAAEC,MAAOa,EAAWJ,MAG5DnB,EAASS,KAAK,CAAEkB,YAAaH,EAAeG,YAAYC,IAAIC,GAAKA,EAAEP,OAC5E,CAKA,MAAOC,EAAYO,SAAyBlC,EAAmBe,GAE/D,GAAGY,EACD,OAAOvB,EAASQ,OAAOe,EAAWL,MAAMT,KAAK,CAAEC,MAAOa,EAAWJ,MAGnEnB,EAASS,KAAK,CAAEkB,YAAaG,GAC/B,CAAE,MAAMpB,GACNqB,QAAQrB,MAAM,+BAAgCA,GAC9CV,EAASQ,OAAO,KAAKC,KAAK,CAAEC,MAAOA,EAAMsB,SAC3C","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import s from"../../../../../../../server/utils/auth/getSession.js";import r from"../../../../../../../server/utils/permissions/getUserPermissions.js";import e from"../../../../../../../server/utils/permissions/userHasPermission.js";export default async(o,t)=>{try{const i=o.query.permissions;if(!i)return t.status(400).json({error:"permissions parameter required"});const n=o.cookies.session_token,[a,m]=await s({token:n});if(a||!m||!m.user)return t.status(401).json({error:"Unauthorized"});const{userid:u}=o.params,c="current"===u?m.user.id:u;if("current"!==u){const[s,r]=await e(m.user.id,"system:permissions:read");if(s||!r)return t.status(403).json({error:"Forbidden"})}const p=i.split(",").map(s=>s.trim()),[d,f]=await r(c);if(d)return t.status(d.code).json({error:d.msg});const j=new Set(f.map(s=>s.name)),h=p.some(s=>j.has(s));t.json({hasPermission:h})}catch(s){console.error("Check some permissions error:",s),t.status(500).json({error:s.message})}};
|
|
2
2
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\permissions\some\GET.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src\\kempo\\api\\user\\[userid]\\permissions\\some\\GET.js","names":["getSession","getUserPermissions","userHasPermission","async","request","response","permissionsParam","query","permissions","status","json","error","sessionToken","cookies","session_token","sessionError","session","token","user","userid","params","targetUserId","id","cPermError","cHasPerm","permissionsToCheck","split","map","p","trim","permsError","userPermissions","code","msg","permissionNames","Set","name","hasSome","some","has","hasPermission","console","message"],"sources":["0"],"sourcesContent":["import getSession from '../../../../../../../server/utils/auth/getSession.js';\r\nimport getUserPermissions from '../../../../../../../server/utils/permissions/getUserPermissions.js';\r\nimport userHasPermission from '../../../../../../../server/utils/permissions/userHasPermission.js';\r\n\r\nexport default async (request, response) => {\r\n try {\r\n /*\r\n Which permissions are they checking?\r\n */\r\n const permissionsParam = request.query.permissions;\r\n if(!permissionsParam){\r\n return response.status(400).json({ error: 'permissions parameter required' });\r\n }\r\n \r\n /*\r\n Are they logged in?\r\n */\r\n const sessionToken = request.cookies.session_token;\r\n const [sessionError, session] = await getSession({ token: sessionToken });\r\n \r\n if(sessionError || !session || !session.user){\r\n return response.status(401).json({ error: 'Unauthorized' });\r\n }\r\n \r\n /*\r\n Whos permission are they checking?\r\n */\r\n const { userid } = request.params;\r\n const targetUserId = userid === 'current' ? session.user.id : userid;\r\n \r\n /*\r\n If they are checking another users permissions, do they have permission to do so?\r\n */\r\n if(userid !== 'current'){\r\n const [cPermError, cHasPerm] = await userHasPermission(session.user.id, 'system:permissions:read');\r\n if(cPermError || !cHasPerm){\r\n return response.status(403).json({ error: 'Forbidden' });\r\n }\r\n }\r\n\r\n /*\r\n They are either checking their own permissions, or have permission to check someone elses\r\n */\r\n const permissionsToCheck = permissionsParam.split(',').map(p => p.trim());\r\n\r\n const [permsError, userPermissions] = await getUserPermissions(targetUserId);\r\n \r\n if(permsError){\r\n return response.status(permsError.code).json({ error: permsError.msg });\r\n }\r\n \r\n const permissionNames = new Set(userPermissions.map(p => p.name));\r\n\r\n const hasSome = permissionsToCheck.some(p => permissionNames.has(p));\r\n\r\n response.json({ hasPermission: hasSome });\r\n } catch(error){\r\n console.error('Check some permissions error:', error);\r\n response.status(500).json({ error: error.message });\r\n }\r\n};\r\n"],"mappings":"OAAOA,
|
|
1
|
+
{"version":3,"file":"src\\kempo\\api\\user\\[userid]\\permissions\\some\\GET.js","names":["getSession","getUserPermissions","userHasPermission","async","request","response","permissionsParam","query","permissions","status","json","error","sessionToken","cookies","session_token","sessionError","session","token","user","userid","params","targetUserId","id","cPermError","cHasPerm","permissionsToCheck","split","map","p","trim","permsError","userPermissions","code","msg","permissionNames","Set","name","hasSome","some","has","hasPermission","console","message"],"sources":["0"],"sourcesContent":["import getSession from '../../../../../../../server/utils/auth/getSession.js';\r\nimport getUserPermissions from '../../../../../../../server/utils/permissions/getUserPermissions.js';\r\nimport userHasPermission from '../../../../../../../server/utils/permissions/userHasPermission.js';\r\n\r\nexport default async (request, response) => {\r\n try {\r\n /*\r\n Which permissions are they checking?\r\n */\r\n const permissionsParam = request.query.permissions;\r\n if(!permissionsParam){\r\n return response.status(400).json({ error: 'permissions parameter required' });\r\n }\r\n \r\n /*\r\n Are they logged in?\r\n */\r\n const sessionToken = request.cookies.session_token;\r\n const [sessionError, session] = await getSession({ token: sessionToken });\r\n \r\n if(sessionError || !session || !session.user){\r\n return response.status(401).json({ error: 'Unauthorized' });\r\n }\r\n \r\n /*\r\n Whos permission are they checking?\r\n */\r\n const { userid } = request.params;\r\n const targetUserId = userid === 'current' ? session.user.id : userid;\r\n \r\n /*\r\n If they are checking another users permissions, do they have permission to do so?\r\n */\r\n if(userid !== 'current'){\r\n const [cPermError, cHasPerm] = await userHasPermission(session.user.id, 'system:permissions:read');\r\n if(cPermError || !cHasPerm){\r\n return response.status(403).json({ error: 'Forbidden' });\r\n }\r\n }\r\n\r\n /*\r\n They are either checking their own permissions, or have permission to check someone elses\r\n */\r\n const permissionsToCheck = permissionsParam.split(',').map(p => p.trim());\r\n\r\n const [permsError, userPermissions] = await getUserPermissions(targetUserId);\r\n \r\n if(permsError){\r\n return response.status(permsError.code).json({ error: permsError.msg });\r\n }\r\n \r\n const permissionNames = new Set(userPermissions.map(p => p.name));\r\n\r\n const hasSome = permissionsToCheck.some(p => permissionNames.has(p));\r\n\r\n response.json({ hasPermission: hasSome });\r\n } catch(error){\r\n console.error('Check some permissions error:', error);\r\n response.status(500).json({ error: error.message });\r\n }\r\n};\r\n"],"mappings":"OAAOA,MAAgB,8DAChBC,MAAwB,6EACxBC,MAAuB,oFAEfC,MAAOC,EAASC,KAC7B,IAIE,MAAMC,EAAmBF,EAAQG,MAAMC,YACvC,IAAIF,EACF,OAAOD,EAASI,OAAO,KAAKC,KAAK,CAAEC,MAAO,mCAM5C,MAAMC,EAAeR,EAAQS,QAAQC,eAC9BC,EAAcC,SAAiBhB,EAAW,CAAEiB,MAAOL,IAE1D,GAAGG,IAAiBC,IAAYA,EAAQE,KACtC,OAAOb,EAASI,OAAO,KAAKC,KAAK,CAAEC,MAAO,iBAM5C,MAAMQ,OAAEA,GAAWf,EAAQgB,OACrBC,EAA0B,YAAXF,EAAuBH,EAAQE,KAAKI,GAAKH,EAK9D,GAAc,YAAXA,EAAqB,CACtB,MAAOI,EAAYC,SAAkBtB,EAAkBc,EAAQE,KAAKI,GAAI,2BACxE,GAAGC,IAAeC,EAChB,OAAOnB,EAASI,OAAO,KAAKC,KAAK,CAAEC,MAAO,aAE9C,CAKA,MAAMc,EAAqBnB,EAAiBoB,MAAM,KAAKC,IAAIC,GAAKA,EAAEC,SAE3DC,EAAYC,SAAyB9B,EAAmBoB,GAE/D,GAAGS,EACD,OAAOzB,EAASI,OAAOqB,EAAWE,MAAMtB,KAAK,CAAEC,MAAOmB,EAAWG,MAGnE,MAAMC,EAAkB,IAAIC,IAAIJ,EAAgBJ,IAAIC,GAAKA,EAAEQ,OAErDC,EAAUZ,EAAmBa,KAAKV,GAAKM,EAAgBK,IAAIX,IAEjEvB,EAASK,KAAK,CAAE8B,cAAeH,GACjC,CAAE,MAAM1B,GACN8B,QAAQ9B,MAAM,gCAAiCA,GAC/CN,EAASI,OAAO,KAAKC,KAAK,CAAEC,MAAOA,EAAM+B,SAC3C","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../../server/utils/sessions/deleteSession.js";export default async(r,o)=>{const t=r.cookies.session_token,[n,i]=await s(t,"system:user:update");if(n)return o.status(n.code).json({error:n.msg});if(!i)return o.status(403).json({error:"Insufficient permissions"});const{sessionToken:u}=r.body;if(!u)return o.status(400).json({error:"Session token is required"});const[a,m]=await e(u);if(a)return o.status(a.code).json({error:a.msg});o.json(m)};
|
|
2
2
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\sessions\DELETE.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src\\kempo\\api\\user\\[userid]\\sessions\\DELETE.js","names":["currentUserHasPermission","deleteSession","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","sessionToken","body","result"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport deleteSession from '../../../../../../server/utils/sessions/deleteSession.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:user:update');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const { sessionToken } = request.body;\r\n\r\n if(!sessionToken){\r\n return response.status(400).json({ error: 'Session token is required' });\r\n }\r\n\r\n const [error, result] = await deleteSession(sessionToken);\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(result);\r\n};\r\n"],"mappings":"OAAOA,
|
|
1
|
+
{"version":3,"file":"src\\kempo\\api\\user\\[userid]\\sessions\\DELETE.js","names":["currentUserHasPermission","deleteSession","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","sessionToken","body","result"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport deleteSession from '../../../../../../server/utils/sessions/deleteSession.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:user:update');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const { sessionToken } = request.body;\r\n\r\n if(!sessionToken){\r\n return response.status(400).json({ error: 'Session token is required' });\r\n }\r\n\r\n const [error, result] = await deleteSession(sessionToken);\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(result);\r\n};\r\n"],"mappings":"OAAOA,MAA8B,gFAC9BC,MAAmB,0EAEXC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,EAAyBK,EAAO,sBAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,aAAEA,GAAiBZ,EAAQa,KAEjC,IAAID,EACF,OAAOX,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,8BAG5C,MAAOA,EAAOI,SAAgBhB,EAAcc,GAE5C,GAAGF,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKK","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../../server/utils/sessions/getUserSessions.js";export default async(e,t)=>{const o=e.cookies.session_token,[i,n]=await s(o,"system:user:read");if(i)return t.status(i.code).json({error:i.msg});if(!n)return t.status(403).json({error:"Insufficient permissions"});const{userid:a}=e.params,u=parseInt(e.query.limit)||50,m=parseInt(e.query.offset)||0,[f,c]=await r(a,{limit:u,offset:m});if(f)return t.status(f.code).json({error:f.msg});t.json(c)};
|
|
2
2
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\sessions\GET.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src\\kempo\\api\\user\\[userid]\\sessions\\GET.js","names":["currentUserHasPermission","getUserSessions","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","userid","params","limit","parseInt","query","offset","data"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport getUserSessions from '../../../../../../server/utils/sessions/getUserSessions.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:user:read');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const { userid } = request.params;\r\n const limit = parseInt(request.query.limit) || 50;\r\n const offset = parseInt(request.query.offset) || 0;\r\n const [error, data] = await getUserSessions(userid, { limit, offset });\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(data);\r\n};\r\n"],"mappings":"OAAOA,
|
|
1
|
+
{"version":3,"file":"src\\kempo\\api\\user\\[userid]\\sessions\\GET.js","names":["currentUserHasPermission","getUserSessions","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","userid","params","limit","parseInt","query","offset","data"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport getUserSessions from '../../../../../../server/utils/sessions/getUserSessions.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:user:read');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const { userid } = request.params;\r\n const limit = parseInt(request.query.limit) || 50;\r\n const offset = parseInt(request.query.offset) || 0;\r\n const [error, data] = await getUserSessions(userid, { limit, offset });\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(data);\r\n};\r\n"],"mappings":"OAAOA,MAA8B,gFAC9BC,MAAqB,4EAEbC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,EAAyBK,EAAO,oBAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,OAAEA,GAAWZ,EAAQa,OACrBC,EAAQC,SAASf,EAAQgB,MAAMF,QAAU,GACzCG,EAASF,SAASf,EAAQgB,MAAMC,SAAW,GAC1CP,EAAOQ,SAAcpB,EAAgBc,EAAQ,CAAEE,QAAOG,WAE7D,GAAGP,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKS","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import s from"../../../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../../../server/utils/sessions/deleteExpiredUserSessions.js";export default async(e,o)=>{const t=e.cookies.session_token,[i,n]=await s(t,"system:user:update");if(i)return o.status(i.code).json({error:i.msg});if(!n)return o.status(403).json({error:"Insufficient permissions"});const{userid:u}=e.params,[a,m]=await r(u);if(a)return o.status(a.code).json({error:a.msg});o.json(m)};
|
|
2
2
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\sessions\expired\DELETE.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src\\kempo\\api\\user\\[userid]\\sessions\\expired\\DELETE.js","names":["currentUserHasPermission","deleteExpiredUserSessions","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","userid","params","result"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport deleteExpiredUserSessions from '../../../../../../../server/utils/sessions/deleteExpiredUserSessions.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:user:update');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const { userid } = request.params;\r\n const [error, result] = await deleteExpiredUserSessions(userid);\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(result);\r\n};\r\n"],"mappings":"OAAOA,
|
|
1
|
+
{"version":3,"file":"src\\kempo\\api\\user\\[userid]\\sessions\\expired\\DELETE.js","names":["currentUserHasPermission","deleteExpiredUserSessions","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","userid","params","result"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport deleteExpiredUserSessions from '../../../../../../../server/utils/sessions/deleteExpiredUserSessions.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:user:update');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const { userid } = request.params;\r\n const [error, result] = await deleteExpiredUserSessions(userid);\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(result);\r\n};\r\n"],"mappings":"OAAOA,MAA8B,mFAC9BC,MAA+B,yFAEvBC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,EAAyBK,EAAO,sBAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,OAAEA,GAAWZ,EAAQa,QACpBH,EAAOI,SAAgBhB,EAA0Bc,GAExD,GAAGF,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKK","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../server/utils/users/createUser.js";export default async(r,t)=>{try{const o=r.cookies.session_token,{name:i,email:a,password:n,emailVerified:m}=r.body,[u,c]=await s(o,"system:user:create");if(u)return t.status(u.code).json({error:u.msg});if(!c)return t.status(403).json({error:"Insufficient permissions"});const[f,d]=await e({name:i,email:a,password:n,emailVerified:m});if(f)return t.status(f.code).json({error:f.msg});t.json(d)}catch(s){t.status(500).json({error:s.message})}};
|
|
2
2
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\create\POST.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src\\kempo\\api\\user\\create\\POST.js","names":["currentUserHasPermission","createUser","async","request","response","token","cookies","session_token","name","email","password","emailVerified","body","permError","hasPermission","status","code","json","error","msg","result","message"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport createUser from '../../../../../server/utils/users/createUser.js';\r\n\r\nexport default async (request, response) => {\r\n\ttry {\r\n\t\tconst token = request.cookies.session_token;\r\n\t\tconst { name, email, password, emailVerified } = request.body;\r\n\r\n\t\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:user:create');\r\n\r\n\t\tif(permError){\r\n\t\t\treturn response.status(permError.code).json({ error: permError.msg });\r\n\t\t}\r\n\r\n\t\tif(!hasPermission){\r\n\t\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\r\n\t\t}\r\n\r\n\t\tconst [error, result] = await createUser({ name, email, password, emailVerified });\r\n\r\n\t\tif(error){\r\n\t\t\treturn response.status(error.code).json({ error: error.msg });\r\n\t\t}\r\n\r\n\t\tresponse.json(result);\r\n\t} catch(error) {\r\n\t\tresponse.status(500).json({ error: error.message });\r\n\t}\r\n};\r\n"],"mappings":"OAAOA,
|
|
1
|
+
{"version":3,"file":"src\\kempo\\api\\user\\create\\POST.js","names":["currentUserHasPermission","createUser","async","request","response","token","cookies","session_token","name","email","password","emailVerified","body","permError","hasPermission","status","code","json","error","msg","result","message"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport createUser from '../../../../../server/utils/users/createUser.js';\r\n\r\nexport default async (request, response) => {\r\n\ttry {\r\n\t\tconst token = request.cookies.session_token;\r\n\t\tconst { name, email, password, emailVerified } = request.body;\r\n\r\n\t\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:user:create');\r\n\r\n\t\tif(permError){\r\n\t\t\treturn response.status(permError.code).json({ error: permError.msg });\r\n\t\t}\r\n\r\n\t\tif(!hasPermission){\r\n\t\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\r\n\t\t}\r\n\r\n\t\tconst [error, result] = await createUser({ name, email, password, emailVerified });\r\n\r\n\t\tif(error){\r\n\t\t\treturn response.status(error.code).json({ error: error.msg });\r\n\t\t}\r\n\r\n\t\tresponse.json(result);\r\n\t} catch(error) {\r\n\t\tresponse.status(500).json({ error: error.message });\r\n\t}\r\n};\r\n"],"mappings":"OAAOA,MAA8B,6EAC9BC,MAAgB,iEAERC,MAAOC,EAASC,KAC9B,IACC,MAAMC,EAAQF,EAAQG,QAAQC,eACxBC,KAAEA,EAAIC,MAAEA,EAAKC,SAAEA,EAAQC,cAAEA,GAAkBR,EAAQS,MAElDC,EAAWC,SAAuBd,EAAyBK,EAAO,sBAEzE,GAAGQ,EACF,OAAOT,EAASW,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOV,EAASW,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAOA,EAAOE,SAAgBnB,EAAW,CAAEO,OAAMC,QAAOC,WAAUC,kBAElE,GAAGO,EACF,OAAOd,EAASW,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDf,EAASa,KAAKG,EACf,CAAE,MAAMF,GACPd,EAASW,OAAO,KAAKE,KAAK,CAAEC,MAAOA,EAAMG,SAC1C","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../server/utils/users/searchUsers.js";export default async(e,o)=>{const t=e.cookies.session_token,[i,n]=await s(t,"system:user:read");if(i)return o.status(i.code).json({error:i.msg});if(!n)return o.status(403).json({error:"You do not have permission to view users"});const u=e.query.q||"",a=Math.min(parseInt(e.query.limit)||20,100),m=parseInt(e.query.offset)||0,p=e.query.inGroup||void 0,f=e.query.notInGroup||void 0,[c,d]=await r({q:u,limit:a,offset:m,inGroup:p,notInGroup:f});if(c)return o.status(c.code).json({error:c.msg});o.json(d)};
|
|
2
2
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\search\GET.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src\\kempo\\api\\user\\search\\GET.js","names":["currentUserHasPermission","searchUsers","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","q","query","limit","Math","min","parseInt","offset","inGroup","undefined","notInGroup","data"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport searchUsers from '../../../../../server/utils/users/searchUsers.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:user:read');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'You do not have permission to view users' });\r\n }\r\n\r\n const q = request.query.q || '';\r\n const limit = Math.min(parseInt(request.query.limit) || 20, 100);\r\n const offset = parseInt(request.query.offset) || 0;\r\n const inGroup = request.query.inGroup || undefined;\r\n const notInGroup = request.query.notInGroup || undefined;\r\n\r\n const [error, data] = await searchUsers({ q, limit, offset, inGroup, notInGroup });\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(data);\r\n};\r\n"],"mappings":"OAAOA,
|
|
1
|
+
{"version":3,"file":"src\\kempo\\api\\user\\search\\GET.js","names":["currentUserHasPermission","searchUsers","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","q","query","limit","Math","min","parseInt","offset","inGroup","undefined","notInGroup","data"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport searchUsers from '../../../../../server/utils/users/searchUsers.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:user:read');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'You do not have permission to view users' });\r\n }\r\n\r\n const q = request.query.q || '';\r\n const limit = Math.min(parseInt(request.query.limit) || 20, 100);\r\n const offset = parseInt(request.query.offset) || 0;\r\n const inGroup = request.query.inGroup || undefined;\r\n const notInGroup = request.query.notInGroup || undefined;\r\n\r\n const [error, data] = await searchUsers({ q, limit, offset, inGroup, notInGroup });\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(data);\r\n};\r\n"],"mappings":"OAAOA,MAA8B,6EAC9BC,MAAiB,kEAETC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,EAAyBK,EAAO,oBAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6CAG5C,MAAME,EAAIZ,EAAQa,MAAMD,GAAK,GACvBE,EAAQC,KAAKC,IAAIC,SAASjB,EAAQa,MAAMC,QAAU,GAAI,KACtDI,EAASD,SAASjB,EAAQa,MAAMK,SAAW,EAC3CC,EAAUnB,EAAQa,MAAMM,cAAWC,EACnCC,EAAarB,EAAQa,MAAMQ,iBAAcD,GAExCV,EAAOY,SAAcxB,EAAY,CAAEc,IAAGE,QAAOI,SAAQC,UAASE,eAErE,GAAGX,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKa","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import t from"/kempo-ui/components/LightComponent.js";import{logout as e}from"../sdk.js";export default class o extends t{static get properties(){return{redirect:{type:String},buttonClass:{type:String,attribute:"button-class"}}}connectedCallback(){this.buttonText=this.textContent.trim()||"Logout",this.innerHTML="",super.connectedCallback()}updated(t){super.updated(t)}handleLogout=async()=>{const[t]=await e();t?console.error("Logout failed:",t.msg):this.redirect&&(window.location.href=this.redirect)};renderLightDom(){const t=document.createElement("button");return t.type="button",t.className=this.buttonClass?`kempo-component-logout ${this.buttonClass}`:"kempo-component-logout",t.textContent=this.buttonText,t.addEventListener("click",this.handleLogout),t}}customElements.define("k-logout-btn",o);
|
|
2
2
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\LogoutBtn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src\\kempo\\components\\LogoutBtn.js","names":["LightComponent","logout","LogoutBtn","properties","redirect","type","String","buttonClass","attribute","connectedCallback","this","buttonText","textContent","trim","innerHTML","super","updated","changedProperties","handleLogout","async","error","console","msg","window","location","href","renderLightDom","button","document","createElement","className","addEventListener","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\r\nimport { logout } from '../sdk.js';\r\n\r\nexport default class LogoutBtn extends LightComponent {\r\n static get properties() {\r\n return {\r\n redirect: { type: String },\r\n buttonClass: { type: String, attribute: 'button-class' }\r\n };\r\n }\r\n\r\n connectedCallback() {\r\n this.buttonText = this.textContent.trim() || 'Logout';\r\n this.innerHTML = '';\r\n super.connectedCallback();\r\n }\r\n\r\n updated(changedProperties) {\r\n super.updated(changedProperties);\r\n }\r\n\r\n handleLogout = async () => {\r\n const [error] = await logout();\r\n if(error){\r\n console.error('Logout failed:', error.msg);\r\n return;\r\n }\r\n if(this.redirect){\r\n window.location.href = this.redirect;\r\n }\r\n };\r\n\r\n renderLightDom() {\r\n const button = document.createElement('button');\r\n button.type = 'button';\r\n button.className = this.buttonClass ? `kempo-component-logout ${this.buttonClass}` : 'kempo-component-logout';\r\n button.textContent = this.buttonText;\r\n button.addEventListener('click', this.handleLogout);\r\n return button;\r\n }\r\n}\r\n\r\ncustomElements.define('k-logout-btn', LogoutBtn);\r\n"],"mappings":"OAAOA,
|
|
1
|
+
{"version":3,"file":"src\\kempo\\components\\LogoutBtn.js","names":["LightComponent","logout","LogoutBtn","properties","redirect","type","String","buttonClass","attribute","connectedCallback","this","buttonText","textContent","trim","innerHTML","super","updated","changedProperties","handleLogout","async","error","console","msg","window","location","href","renderLightDom","button","document","createElement","className","addEventListener","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\r\nimport { logout } from '../sdk.js';\r\n\r\nexport default class LogoutBtn extends LightComponent {\r\n static get properties() {\r\n return {\r\n redirect: { type: String },\r\n buttonClass: { type: String, attribute: 'button-class' }\r\n };\r\n }\r\n\r\n connectedCallback() {\r\n this.buttonText = this.textContent.trim() || 'Logout';\r\n this.innerHTML = '';\r\n super.connectedCallback();\r\n }\r\n\r\n updated(changedProperties) {\r\n super.updated(changedProperties);\r\n }\r\n\r\n handleLogout = async () => {\r\n const [error] = await logout();\r\n if(error){\r\n console.error('Logout failed:', error.msg);\r\n return;\r\n }\r\n if(this.redirect){\r\n window.location.href = this.redirect;\r\n }\r\n };\r\n\r\n renderLightDom() {\r\n const button = document.createElement('button');\r\n button.type = 'button';\r\n button.className = this.buttonClass ? `kempo-component-logout ${this.buttonClass}` : 'kempo-component-logout';\r\n button.textContent = this.buttonText;\r\n button.addEventListener('click', this.handleLogout);\r\n return button;\r\n }\r\n}\r\n\r\ncustomElements.define('k-logout-btn', LogoutBtn);\r\n"],"mappings":"OAAOA,MAAoB,0DAClBC,MAAc,2BAER,MAAMC,UAAkBF,EACrC,qBAAWG,GACT,MAAO,CACLC,SAAU,CAAEC,KAAMC,QAClBC,YAAa,CAAEF,KAAMC,OAAQE,UAAW,gBAE5C,CAEA,iBAAAC,GACEC,KAAKC,WAAaD,KAAKE,YAAYC,QAAU,SAC7CH,KAAKI,UAAY,GACjBC,MAAMN,mBACR,CAEA,OAAAO,CAAQC,GACNF,MAAMC,QAAQC,EAChB,CAEAC,aAAeC,UACb,MAAOC,SAAenB,IACnBmB,EACDC,QAAQD,MAAM,iBAAkBA,EAAME,KAGrCZ,KAAKN,WACNmB,OAAOC,SAASC,KAAOf,KAAKN,WAIhC,cAAAsB,GACE,MAAMC,EAASC,SAASC,cAAc,UAKtC,OAJAF,EAAOtB,KAAO,SACdsB,EAAOG,UAAYpB,KAAKH,YAAc,0BAA0BG,KAAKH,cAAgB,yBACrFoB,EAAOf,YAAcF,KAAKC,WAC1BgB,EAAOI,iBAAiB,QAASrB,KAAKQ,cAC/BS,CACT,EAGFK,eAAeC,OAAO,eAAgB/B","ignoreList":[]}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import
|
|
1
|
+
import e from"/kempo-ui/components/LightComponent.js";import{html as t}from"/kempo-ui/lit-all.min.js";import{getMenuBySlug as a}from"../sdk.js";export default class s extends e{static get properties(){return{slug:{type:String,reflect:!0},loaded:{type:Boolean,state:!0},menuData:{state:!0}}}constructor(){super(),this.loaded=!1,this.menuData=null}async connectedCallback(){super.connectedCallback(),await this.fetchMenu()}fetchMenu=async()=>{if(!this.slug)return void(this.loaded=!0);const[e,t]=await a(this.slug);if(e)return console.error(`<k-menu slug="${this.slug}">:`,e.msg),void(this.loaded=!0);this.menuData=t,this.loaded=!0};updated(e){super.updated(e)}renderItem(e){const a=e.url||"#",s="#"!==a&&window.location.pathname===a,n="_blank"===e.target?"_blank":"_self";return t`
|
|
2
2
|
<li>
|
|
3
3
|
<a
|
|
4
|
-
href="${
|
|
5
|
-
?class="${
|
|
6
|
-
target="${
|
|
7
|
-
rel="${"_blank"===
|
|
8
|
-
class="${
|
|
4
|
+
href="${a}"
|
|
5
|
+
?class="${s}"
|
|
6
|
+
target="${n}"
|
|
7
|
+
rel="${"_blank"===n?"noopener noreferrer":""}"
|
|
8
|
+
class="${s?"active":""}"
|
|
9
9
|
>${e.label}</a>
|
|
10
|
-
${e.children?.length?
|
|
10
|
+
${e.children?.length?t`<ul>${e.children.map(e=>this.renderItem(e))}</ul>`:""}
|
|
11
11
|
</li>
|
|
12
|
-
`}renderLightDom(){return this.loaded&&this.menuData?
|
|
12
|
+
`}renderLightDom(){return this.loaded&&this.menuData?t`
|
|
13
13
|
<nav class="k-menu" data-slug="${this.slug}">
|
|
14
14
|
<ul>${this.menuData.items.map(e=>this.renderItem(e))}</ul>
|
|
15
15
|
</nav>
|
|
16
|
-
`:
|
|
16
|
+
`:t``}}customElements.define("k-menu",s);
|
|
17
17
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\Menu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src\\kempo\\components\\Menu.js","names":["LightComponent","html","getMenuBySlug","Menu","properties","slug","type","String","reflect","loaded","Boolean","state","menuData","constructor","super","this","connectedCallback","fetchMenu","async","error","data","console","msg","updated","changedProperties","renderItem","item","href","url","isActive","window","location","pathname","target","label","children","length","map","child","renderLightDom","items","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\r\nimport { html } from '/kempo-ui/lit-all.min.js';\r\nimport { getMenuBySlug } from '../sdk.js';\r\n\r\nexport default class Menu extends LightComponent {\r\n /*\r\n Reactive Properties\r\n */\r\n static get properties() {\r\n return {\r\n slug: { type: String, reflect: true },\r\n loaded: { type: Boolean, state: true },\r\n menuData: { state: true }\r\n };\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.loaded = false;\r\n this.menuData = null;\r\n }\r\n\r\n /*\r\n Lifecycle\r\n */\r\n async connectedCallback() {\r\n super.connectedCallback();\r\n await this.fetchMenu();\r\n }\r\n\r\n /*\r\n Data Fetching\r\n */\r\n fetchMenu = async () => {\r\n if(!this.slug){\r\n this.loaded = true;\r\n return;\r\n }\r\n\r\n const [error, data] = await getMenuBySlug(this.slug);\r\n\r\n if(error){\r\n console.error(`<k-menu slug=\"${this.slug}\">:`, error.msg);\r\n this.loaded = true;\r\n return;\r\n }\r\n\r\n this.menuData = data;\r\n this.loaded = true;\r\n };\r\n\r\n /*\r\n Render\r\n */\r\n updated(changedProperties) {\r\n super.updated(changedProperties);\r\n }\r\n\r\n renderItem(item) {\r\n const href = item.url || '#';\r\n const isActive = href !== '#' && window.location.pathname === href;\r\n const target = item.target === '_blank' ? '_blank' : '_self';\r\n\r\n return html`\r\n <li>\r\n <a\r\n href=\"${href}\"\r\n ?class=\"${isActive}\"\r\n target=\"${target}\"\r\n rel=\"${target === '_blank' ? 'noopener noreferrer' : ''}\"\r\n class=\"${isActive ? 'active' : ''}\"\r\n >${item.label}</a>\r\n ${item.children?.length ? html`<ul>${item.children.map(child => this.renderItem(child))}</ul>` : ''}\r\n </li>\r\n `;\r\n }\r\n\r\n renderLightDom() {\r\n if(!this.loaded || !this.menuData) return html``;\r\n\r\n return html`\r\n <nav class=\"k-menu\" data-slug=\"${this.slug}\">\r\n <ul>${this.menuData.items.map(item => this.renderItem(item))}</ul>\r\n </nav>\r\n `;\r\n }\r\n}\r\n\r\ncustomElements.define('k-menu', Menu);\r\n"],"mappings":"OAAOA,
|
|
1
|
+
{"version":3,"file":"src\\kempo\\components\\Menu.js","names":["LightComponent","html","getMenuBySlug","Menu","properties","slug","type","String","reflect","loaded","Boolean","state","menuData","constructor","super","this","connectedCallback","fetchMenu","async","error","data","console","msg","updated","changedProperties","renderItem","item","href","url","isActive","window","location","pathname","target","label","children","length","map","child","renderLightDom","items","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\r\nimport { html } from '/kempo-ui/lit-all.min.js';\r\nimport { getMenuBySlug } from '../sdk.js';\r\n\r\nexport default class Menu extends LightComponent {\r\n /*\r\n Reactive Properties\r\n */\r\n static get properties() {\r\n return {\r\n slug: { type: String, reflect: true },\r\n loaded: { type: Boolean, state: true },\r\n menuData: { state: true }\r\n };\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.loaded = false;\r\n this.menuData = null;\r\n }\r\n\r\n /*\r\n Lifecycle\r\n */\r\n async connectedCallback() {\r\n super.connectedCallback();\r\n await this.fetchMenu();\r\n }\r\n\r\n /*\r\n Data Fetching\r\n */\r\n fetchMenu = async () => {\r\n if(!this.slug){\r\n this.loaded = true;\r\n return;\r\n }\r\n\r\n const [error, data] = await getMenuBySlug(this.slug);\r\n\r\n if(error){\r\n console.error(`<k-menu slug=\"${this.slug}\">:`, error.msg);\r\n this.loaded = true;\r\n return;\r\n }\r\n\r\n this.menuData = data;\r\n this.loaded = true;\r\n };\r\n\r\n /*\r\n Render\r\n */\r\n updated(changedProperties) {\r\n super.updated(changedProperties);\r\n }\r\n\r\n renderItem(item) {\r\n const href = item.url || '#';\r\n const isActive = href !== '#' && window.location.pathname === href;\r\n const target = item.target === '_blank' ? '_blank' : '_self';\r\n\r\n return html`\r\n <li>\r\n <a\r\n href=\"${href}\"\r\n ?class=\"${isActive}\"\r\n target=\"${target}\"\r\n rel=\"${target === '_blank' ? 'noopener noreferrer' : ''}\"\r\n class=\"${isActive ? 'active' : ''}\"\r\n >${item.label}</a>\r\n ${item.children?.length ? html`<ul>${item.children.map(child => this.renderItem(child))}</ul>` : ''}\r\n </li>\r\n `;\r\n }\r\n\r\n renderLightDom() {\r\n if(!this.loaded || !this.menuData) return html``;\r\n\r\n return html`\r\n <nav class=\"k-menu\" data-slug=\"${this.slug}\">\r\n <ul>${this.menuData.items.map(item => this.renderItem(item))}</ul>\r\n </nav>\r\n `;\r\n }\r\n}\r\n\r\ncustomElements.define('k-menu', Menu);\r\n"],"mappings":"OAAOA,MAAoB,wDAClBC,MAAY,mDACZC,MAAqB,2BAEf,MAAMC,UAAaH,EAIhC,qBAAWI,GACT,MAAO,CACLC,KAAM,CAAEC,KAAMC,OAAQC,SAAS,GAC/BC,OAAQ,CAAEH,KAAMI,QAASC,OAAO,GAChCC,SAAU,CAAED,OAAO,GAEvB,CAEA,WAAAE,GACEC,QACAC,KAAKN,QAAS,EACdM,KAAKH,SAAW,IAClB,CAKA,uBAAMI,GACJF,MAAME,0BACAD,KAAKE,WACb,CAKAA,UAAYC,UACV,IAAIH,KAAKV,KAEP,YADAU,KAAKN,QAAS,GAIhB,MAAOU,EAAOC,SAAclB,EAAca,KAAKV,MAE/C,GAAGc,EAGD,OAFAE,QAAQF,MAAM,iBAAiBJ,KAAKV,UAAWc,EAAMG,UACrDP,KAAKN,QAAS,GAIhBM,KAAKH,SAAWQ,EAChBL,KAAKN,QAAS,GAMhB,OAAAc,CAAQC,GACNV,MAAMS,QAAQC,EAChB,CAEA,UAAAC,CAAWC,GACT,MAAMC,EAAOD,EAAKE,KAAO,IACnBC,EAAoB,MAATF,GAAgBG,OAAOC,SAASC,WAAaL,EACxDM,EAAyB,WAAhBP,EAAKO,OAAsB,SAAW,QAErD,OAAOhC,CAAI;;;kBAGG0B;oBACEE;oBACAI;iBACQ,WAAXA,EAAsB,sBAAwB;mBAC5CJ,EAAW,SAAW;WAC9BH,EAAKQ;UACNR,EAAKS,UAAUC,OAASnC,CAAI,OAAOyB,EAAKS,SAASE,IAAIC,GAASvB,KAAKU,WAAWa,WAAiB;;KAGvG,CAEA,cAAAC,GACE,OAAIxB,KAAKN,QAAWM,KAAKH,SAElBX,CAAI;uCACwBc,KAAKV;cAC9BU,KAAKH,SAAS4B,MAAMH,IAAIX,GAAQX,KAAKU,WAAWC;;MAJhBzB,CAAI,EAOhD,EAGFwC,eAAeC,OAAO,SAAUvC","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import s from"/kempo-ui/components/LightComponent.js";import{html as i}from"/kempo-ui/lit-all.min.js";import{currentUserHasPermission as t,currentUserHasAllPermissions as e,currentUserHasSomePermissions as o}from"../sdk.js";export default class n extends s{static properties={has:{type:String},all:{type:String},some:{type:String},loading:{type:Boolean,state:!0},hasPermission:{type:Boolean,state:!0}};constructor(){super(),this.has="",this.all="",this.some="",this.loading=!0,this.hasPermission=!1}async connectedCallback(){super.connectedCallback(),await this.checkPermissions()}async checkPermissions(){const s=[this.has,this.all,this.some].filter(Boolean).length;if(s>1)return this.hasPermission=!1,void(this.loading=!1);if(0===s)return this.hasPermission=!0,void(this.loading=!1);try{if(this.has){const[s,i]=await t({permission:this.has});this.hasPermission=!s&&i.hasPermission}else if(this.all){const s=this.all.split(",").map(s=>s.trim()),[i,t]=await e({permissions:s});this.hasPermission=!i&&t.hasPermission}else{const s=this.some.split(",").map(s=>s.trim()),[i,t]=await o({permissions:s});this.hasPermission=!i&&t.hasPermission}}catch(s){this.hasPermission=!1}finally{this.loading=!1}}renderLightDom(){return this.loading?(this.style.display="none",i``):this.hasPermission?(this.style.display="",i`<slot></slot>`):(this.style.display="none",i``)}}window.customElements.define("k-permission",n);
|
|
2
2
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\Permission.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src\\kempo\\components\\Permission.js","names":["LightComponent","html","currentUserHasPermission","currentUserHasAllPermissions","currentUserHasSomePermissions","Permission","static","has","type","String","all","some","loading","Boolean","state","hasPermission","constructor","super","this","connectedCallback","checkPermissions","attributeCount","filter","length","error","data","permission","permissions","split","map","p","trim","renderLightDom","style","display","window","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\r\nimport { html } from '/kempo-ui/lit-all.min.js';\r\nimport { currentUserHasPermission, currentUserHasAllPermissions, currentUserHasSomePermissions } from '../sdk.js';\r\n\r\nexport default class Permission extends LightComponent {\r\n\tstatic properties = {\r\n\t\thas: { type: String },\r\n\t\tall: { type: String },\r\n\t\tsome: { type: String },\r\n\t\tloading: { type: Boolean, state: true },\r\n\t\thasPermission: { type: Boolean, state: true }\r\n\t};\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.has = '';\r\n\t\tthis.all = '';\r\n\t\tthis.some = '';\r\n\t\tthis.loading = true;\r\n\t\tthis.hasPermission = false;\r\n\t}\r\n\r\n\tasync connectedCallback() {\r\n\t\tsuper.connectedCallback();\r\n\t\tawait this.checkPermissions();\r\n\t}\r\n\r\n\tasync checkPermissions() {\r\n\t\tconst attributeCount = [this.has, this.all, this.some].filter(Boolean).length;\r\n\t\t\r\n\t\tif(attributeCount > 1) {\r\n\t\t\tthis.hasPermission = false;\r\n\t\t\tthis.loading = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(attributeCount === 0) {\r\n\t\t\tthis.hasPermission = true;\r\n\t\t\tthis.loading = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tif(this.has) {\r\n\t\t\t\tconst [error, data] = await currentUserHasPermission({ permission: this.has });\r\n\t\t\t\tthis.hasPermission = error ? false : data.hasPermission;\r\n\t\t\t} else if(this.all) {\r\n\t\t\t\tconst permissions = this.all.split(',').map(p => p.trim());\r\n\t\t\t\tconst [error, data] = await currentUserHasAllPermissions({ permissions });\r\n\t\t\t\tthis.hasPermission = error ? false : data.hasPermission;\r\n\t\t\t} else {\r\n\t\t\t\tconst permissions = this.some.split(',').map(p => p.trim());\r\n\t\t\t\tconst [error, data] = await currentUserHasSomePermissions({ permissions });\r\n\t\t\t\tthis.hasPermission = error ? false : data.hasPermission;\r\n\t\t\t}\r\n\t\t} catch(error) {\r\n\t\t\tthis.hasPermission = false;\r\n\t\t} finally {\r\n\t\t\tthis.loading = false;\r\n\t\t}\r\n\t}\r\n\r\n\trenderLightDom() {\r\n\t\tif(this.loading) {\r\n\t\t\tthis.style.display = 'none';\r\n\t\t\treturn html``;\r\n\t\t}\r\n\r\n\t\tif(!this.hasPermission) {\r\n\t\t\tthis.style.display = 'none';\r\n\t\t\treturn html``;\r\n\t\t}\r\n\r\n\t\tthis.style.display = '';\r\n\t\treturn html`<slot></slot>`;\r\n\t}\r\n}\r\n\r\nwindow.customElements.define('k-permission', Permission);\r\n"],"mappings":"OAAOA,
|
|
1
|
+
{"version":3,"file":"src\\kempo\\components\\Permission.js","names":["LightComponent","html","currentUserHasPermission","currentUserHasAllPermissions","currentUserHasSomePermissions","Permission","static","has","type","String","all","some","loading","Boolean","state","hasPermission","constructor","super","this","connectedCallback","checkPermissions","attributeCount","filter","length","error","data","permission","permissions","split","map","p","trim","renderLightDom","style","display","window","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\r\nimport { html } from '/kempo-ui/lit-all.min.js';\r\nimport { currentUserHasPermission, currentUserHasAllPermissions, currentUserHasSomePermissions } from '../sdk.js';\r\n\r\nexport default class Permission extends LightComponent {\r\n\tstatic properties = {\r\n\t\thas: { type: String },\r\n\t\tall: { type: String },\r\n\t\tsome: { type: String },\r\n\t\tloading: { type: Boolean, state: true },\r\n\t\thasPermission: { type: Boolean, state: true }\r\n\t};\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.has = '';\r\n\t\tthis.all = '';\r\n\t\tthis.some = '';\r\n\t\tthis.loading = true;\r\n\t\tthis.hasPermission = false;\r\n\t}\r\n\r\n\tasync connectedCallback() {\r\n\t\tsuper.connectedCallback();\r\n\t\tawait this.checkPermissions();\r\n\t}\r\n\r\n\tasync checkPermissions() {\r\n\t\tconst attributeCount = [this.has, this.all, this.some].filter(Boolean).length;\r\n\t\t\r\n\t\tif(attributeCount > 1) {\r\n\t\t\tthis.hasPermission = false;\r\n\t\t\tthis.loading = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(attributeCount === 0) {\r\n\t\t\tthis.hasPermission = true;\r\n\t\t\tthis.loading = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tif(this.has) {\r\n\t\t\t\tconst [error, data] = await currentUserHasPermission({ permission: this.has });\r\n\t\t\t\tthis.hasPermission = error ? false : data.hasPermission;\r\n\t\t\t} else if(this.all) {\r\n\t\t\t\tconst permissions = this.all.split(',').map(p => p.trim());\r\n\t\t\t\tconst [error, data] = await currentUserHasAllPermissions({ permissions });\r\n\t\t\t\tthis.hasPermission = error ? false : data.hasPermission;\r\n\t\t\t} else {\r\n\t\t\t\tconst permissions = this.some.split(',').map(p => p.trim());\r\n\t\t\t\tconst [error, data] = await currentUserHasSomePermissions({ permissions });\r\n\t\t\t\tthis.hasPermission = error ? false : data.hasPermission;\r\n\t\t\t}\r\n\t\t} catch(error) {\r\n\t\t\tthis.hasPermission = false;\r\n\t\t} finally {\r\n\t\t\tthis.loading = false;\r\n\t\t}\r\n\t}\r\n\r\n\trenderLightDom() {\r\n\t\tif(this.loading) {\r\n\t\t\tthis.style.display = 'none';\r\n\t\t\treturn html``;\r\n\t\t}\r\n\r\n\t\tif(!this.hasPermission) {\r\n\t\t\tthis.style.display = 'none';\r\n\t\t\treturn html``;\r\n\t\t}\r\n\r\n\t\tthis.style.display = '';\r\n\t\treturn html`<slot></slot>`;\r\n\t}\r\n}\r\n\r\nwindow.customElements.define('k-permission', Permission);\r\n"],"mappings":"OAAOA,MAAoB,wDAClBC,MAAY,8DACZC,kCAA0BC,mCAA8BC,MAAqC,2BAEvF,MAAMC,UAAmBL,EACvCM,kBAAoB,CACnBC,IAAK,CAAEC,KAAMC,QACbC,IAAK,CAAEF,KAAMC,QACbE,KAAM,CAAEH,KAAMC,QACdG,QAAS,CAAEJ,KAAMK,QAASC,OAAO,GACjCC,cAAe,CAAEP,KAAMK,QAASC,OAAO,IAGxC,WAAAE,GACCC,QACAC,KAAKX,IAAM,GACXW,KAAKR,IAAM,GACXQ,KAAKP,KAAO,GACZO,KAAKN,SAAU,EACfM,KAAKH,eAAgB,CACtB,CAEA,uBAAMI,GACLF,MAAME,0BACAD,KAAKE,kBACZ,CAEA,sBAAMA,GACL,MAAMC,EAAiB,CAACH,KAAKX,IAAKW,KAAKR,IAAKQ,KAAKP,MAAMW,OAAOT,SAASU,OAEvE,GAAGF,EAAiB,EAGnB,OAFAH,KAAKH,eAAgB,OACrBG,KAAKN,SAAU,GAIhB,GAAsB,IAAnBS,EAGF,OAFAH,KAAKH,eAAgB,OACrBG,KAAKN,SAAU,GAIhB,IACC,GAAGM,KAAKX,IAAK,CACZ,MAAOiB,EAAOC,SAAcvB,EAAyB,CAAEwB,WAAYR,KAAKX,MACxEW,KAAKH,eAAgBS,GAAgBC,EAAKV,aAC3C,MAAO,GAAGG,KAAKR,IAAK,CACnB,MAAMiB,EAAcT,KAAKR,IAAIkB,MAAM,KAAKC,IAAIC,GAAKA,EAAEC,SAC5CP,EAAOC,SAActB,EAA6B,CAAEwB,gBAC3DT,KAAKH,eAAgBS,GAAgBC,EAAKV,aAC3C,KAAO,CACN,MAAMY,EAAcT,KAAKP,KAAKiB,MAAM,KAAKC,IAAIC,GAAKA,EAAEC,SAC7CP,EAAOC,SAAcrB,EAA8B,CAAEuB,gBAC5DT,KAAKH,eAAgBS,GAAgBC,EAAKV,aAC3C,CACD,CAAE,MAAMS,GACPN,KAAKH,eAAgB,CACtB,CAAE,QACDG,KAAKN,SAAU,CAChB,CACD,CAEA,cAAAoB,GACC,OAAGd,KAAKN,SACPM,KAAKe,MAAMC,QAAU,OACdjC,CAAI,IAGRiB,KAAKH,eAKTG,KAAKe,MAAMC,QAAU,GACdjC,CAAI,kBALViB,KAAKe,MAAMC,QAAU,OACdjC,CAAI,GAKb,EAGDkC,OAAOC,eAAeC,OAAO,eAAgBhC","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import e from"/kempo-ui/components/LightComponent.js";import{html as t}from"/kempo-ui/lit-all.min.js";import{checkRole as o}from"../sdk.js";export default class s extends e{static properties={requires:{type:String},exclude:{type:String},loading:{type:Boolean,state:!0},hasRole:{type:Boolean,state:!0}};constructor(){super(),this.requires="",this.exclude="",this.loading=!0,this.hasRole=!1}async connectedCallback(){super.connectedCallback(),await this.checkRole()}async checkRole(){try{const e=await o({requires:this.requires||void 0,exclude:this.exclude||void 0});this.hasRole=e.hasRole}catch(e){console.error("Role check failed:",e),this.hasRole=!1}finally{this.loading=!1}}renderLightDom(){return this.loading?t``:this.hasRole?t`<slot></slot>`:t``}}window.customElements.define("k-role",s);
|
|
2
2
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\Role.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src\\kempo\\components\\Role.js","names":["LightComponent","html","checkRole","Role","static","requires","type","String","exclude","loading","Boolean","state","hasRole","constructor","super","this","connectedCallback","data","undefined","error","console","renderLightDom","window","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\r\nimport { html } from '/kempo-ui/lit-all.min.js';\r\nimport { checkRole } from '../sdk.js';\r\n\r\nexport default class Role extends LightComponent {\r\n\tstatic properties = {\r\n\t\trequires: { type: String },\r\n\t\texclude: { type: String },\r\n\t\tloading: { type: Boolean, state: true },\r\n\t\thasRole: { type: Boolean, state: true }\r\n\t};\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.requires = '';\r\n\t\tthis.exclude = '';\r\n\t\tthis.loading = true;\r\n\t\tthis.hasRole = false;\r\n\t}\r\n\r\n\tasync connectedCallback() {\r\n\t\tsuper.connectedCallback();\r\n\t\tawait this.checkRole();\r\n\t}\r\n\r\n\tasync checkRole() {\r\n\t\ttry {\r\n\t\t\tconst data = await checkRole({\r\n\t\t\t\trequires: this.requires || undefined,\r\n\t\t\t\texclude: this.exclude || undefined\r\n\t\t\t});\r\n\t\t\tthis.hasRole = data.hasRole;\r\n\t\t} catch(error) {\r\n\t\t\tconsole.error('Role check failed:', error);\r\n\t\t\tthis.hasRole = false;\r\n\t\t} finally {\r\n\t\t\tthis.loading = false;\r\n\t\t}\r\n\t}\r\n\r\n\trenderLightDom() {\r\n\t\tif(this.loading) {\r\n\t\t\treturn html``;\r\n\t\t}\r\n\r\n\t\tif(!this.hasRole) {\r\n\t\t\treturn html``;\r\n\t\t}\r\n\r\n\t\treturn html`<slot></slot>`;\r\n\t}\r\n}\r\n\r\nwindow.customElements.define('k-role', Role);\r\n"],"mappings":"OAAOA,
|
|
1
|
+
{"version":3,"file":"src\\kempo\\components\\Role.js","names":["LightComponent","html","checkRole","Role","static","requires","type","String","exclude","loading","Boolean","state","hasRole","constructor","super","this","connectedCallback","data","undefined","error","console","renderLightDom","window","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\r\nimport { html } from '/kempo-ui/lit-all.min.js';\r\nimport { checkRole } from '../sdk.js';\r\n\r\nexport default class Role extends LightComponent {\r\n\tstatic properties = {\r\n\t\trequires: { type: String },\r\n\t\texclude: { type: String },\r\n\t\tloading: { type: Boolean, state: true },\r\n\t\thasRole: { type: Boolean, state: true }\r\n\t};\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.requires = '';\r\n\t\tthis.exclude = '';\r\n\t\tthis.loading = true;\r\n\t\tthis.hasRole = false;\r\n\t}\r\n\r\n\tasync connectedCallback() {\r\n\t\tsuper.connectedCallback();\r\n\t\tawait this.checkRole();\r\n\t}\r\n\r\n\tasync checkRole() {\r\n\t\ttry {\r\n\t\t\tconst data = await checkRole({\r\n\t\t\t\trequires: this.requires || undefined,\r\n\t\t\t\texclude: this.exclude || undefined\r\n\t\t\t});\r\n\t\t\tthis.hasRole = data.hasRole;\r\n\t\t} catch(error) {\r\n\t\t\tconsole.error('Role check failed:', error);\r\n\t\t\tthis.hasRole = false;\r\n\t\t} finally {\r\n\t\t\tthis.loading = false;\r\n\t\t}\r\n\t}\r\n\r\n\trenderLightDom() {\r\n\t\tif(this.loading) {\r\n\t\t\treturn html``;\r\n\t\t}\r\n\r\n\t\tif(!this.hasRole) {\r\n\t\t\treturn html``;\r\n\t\t}\r\n\r\n\t\treturn html`<slot></slot>`;\r\n\t}\r\n}\r\n\r\nwindow.customElements.define('k-role', Role);\r\n"],"mappings":"OAAOA,MAAoB,wDAClBC,MAAY,+CACZC,MAAiB,2BAEX,MAAMC,UAAaH,EACjCI,kBAAoB,CACnBC,SAAU,CAAEC,KAAMC,QAClBC,QAAS,CAAEF,KAAMC,QACjBE,QAAS,CAAEH,KAAMI,QAASC,OAAO,GACjCC,QAAS,CAAEN,KAAMI,QAASC,OAAO,IAGlC,WAAAE,GACCC,QACAC,KAAKV,SAAW,GAChBU,KAAKP,QAAU,GACfO,KAAKN,SAAU,EACfM,KAAKH,SAAU,CAChB,CAEA,uBAAMI,GACLF,MAAME,0BACAD,KAAKb,WACZ,CAEA,eAAMA,GACL,IACC,MAAMe,QAAaf,EAAU,CAC5BG,SAAUU,KAAKV,eAAYa,EAC3BV,QAASO,KAAKP,cAAWU,IAE1BH,KAAKH,QAAUK,EAAKL,OACrB,CAAE,MAAMO,GACPC,QAAQD,MAAM,qBAAsBA,GACpCJ,KAAKH,SAAU,CAChB,CAAE,QACDG,KAAKN,SAAU,CAChB,CACD,CAEA,cAAAY,GACC,OAAGN,KAAKN,QACAR,CAAI,GAGRc,KAAKH,QAIFX,CAAI,gBAHHA,CAAI,EAIb,EAGDqB,OAAOC,eAAeC,OAAO,SAAUrB","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import e from"/kempo-ui/components/LightComponent.js";import{getSession as t}from"../sdk.js";export default class o extends e{connectedCallback(){super.connectedCallback(),this.loadCreatedAt()}async loadCreatedAt(){const[e,o]=await t();if(e)return console.error("Failed to load user created date:",e.msg),void(this.textContent="");const n=new Date(o?.user?.createdAt);this.textContent=n.toLocaleDateString()}renderLightDom(){return"Loading..."}}customElements.define("k-user-created-at",o);
|
|
2
2
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\UserCreatedAt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src\\kempo\\components\\UserCreatedAt.js","names":["LightComponent","getSession","UserCreatedAt","connectedCallback","super","this","loadCreatedAt","error","session","console","msg","textContent","date","Date","user","createdAt","toLocaleDateString","renderLightDom","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\r\nimport { getSession } from '../sdk.js';\r\n\r\nexport default class UserCreatedAt extends LightComponent {\r\n connectedCallback() {\r\n super.connectedCallback();\r\n this.loadCreatedAt();\r\n }\r\n\r\n async loadCreatedAt() {\r\n const [error, session] = await getSession();\r\n if(error){\r\n console.error('Failed to load user created date:', error.msg);\r\n this.textContent = '';\r\n return;\r\n }\r\n const date = new Date(session?.user?.createdAt);\r\n this.textContent = date.toLocaleDateString();\r\n }\r\n\r\n renderLightDom() {\r\n return 'Loading...';\r\n }\r\n}\r\n\r\ncustomElements.define('k-user-created-at', UserCreatedAt);\r\n"],"mappings":"OAAOA,
|
|
1
|
+
{"version":3,"file":"src\\kempo\\components\\UserCreatedAt.js","names":["LightComponent","getSession","UserCreatedAt","connectedCallback","super","this","loadCreatedAt","error","session","console","msg","textContent","date","Date","user","createdAt","toLocaleDateString","renderLightDom","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\r\nimport { getSession } from '../sdk.js';\r\n\r\nexport default class UserCreatedAt extends LightComponent {\r\n connectedCallback() {\r\n super.connectedCallback();\r\n this.loadCreatedAt();\r\n }\r\n\r\n async loadCreatedAt() {\r\n const [error, session] = await getSession();\r\n if(error){\r\n console.error('Failed to load user created date:', error.msg);\r\n this.textContent = '';\r\n return;\r\n }\r\n const date = new Date(session?.user?.createdAt);\r\n this.textContent = date.toLocaleDateString();\r\n }\r\n\r\n renderLightDom() {\r\n return 'Loading...';\r\n }\r\n}\r\n\r\ncustomElements.define('k-user-created-at', UserCreatedAt);\r\n"],"mappings":"OAAOA,MAAoB,8DAClBC,MAAkB,2BAEZ,MAAMC,UAAsBF,EACzC,iBAAAG,GACEC,MAAMD,oBACNE,KAAKC,eACP,CAEA,mBAAMA,GACJ,MAAOC,EAAOC,SAAiBP,IAC/B,GAAGM,EAGD,OAFAE,QAAQF,MAAM,oCAAqCA,EAAMG,UACzDL,KAAKM,YAAc,IAGrB,MAAMC,EAAO,IAAIC,KAAKL,GAASM,MAAMC,WACrCV,KAAKM,YAAcC,EAAKI,oBAC1B,CAEA,cAAAC,GACE,MAAO,YACT,EAGFC,eAAeC,OAAO,oBAAqBjB","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import e from"/kempo-ui/components/LightComponent.js";import{getSession as t}from"../sdk.js";export default class o extends e{connectedCallback(){super.connectedCallback(),this.loadUserEmail()}async loadUserEmail(){const[e,o]=await t();if(e)return console.error("Failed to load user email:",e.msg),void(this.textContent="");this.textContent=o?.user?.email||""}renderLightDom(){return"Loading..."}}customElements.define("k-user-email",o);
|
|
2
2
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\UserEmail.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src\\kempo\\components\\UserEmail.js","names":["LightComponent","getSession","UserEmail","connectedCallback","super","this","loadUserEmail","error","session","console","msg","textContent","user","email","renderLightDom","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\r\nimport { getSession } from '../sdk.js';\r\n\r\nexport default class UserEmail extends LightComponent {\r\n connectedCallback() {\r\n super.connectedCallback();\r\n this.loadUserEmail();\r\n }\r\n\r\n async loadUserEmail() {\r\n const [error, session] = await getSession();\r\n if(error){\r\n console.error('Failed to load user email:', error.msg);\r\n this.textContent = '';\r\n return;\r\n }\r\n this.textContent = session?.user?.email || '';\r\n }\r\n\r\n renderLightDom() {\r\n return 'Loading...';\r\n }\r\n}\r\n\r\ncustomElements.define('k-user-email', UserEmail);\r\n"],"mappings":"OAAOA,
|
|
1
|
+
{"version":3,"file":"src\\kempo\\components\\UserEmail.js","names":["LightComponent","getSession","UserEmail","connectedCallback","super","this","loadUserEmail","error","session","console","msg","textContent","user","email","renderLightDom","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\r\nimport { getSession } from '../sdk.js';\r\n\r\nexport default class UserEmail extends LightComponent {\r\n connectedCallback() {\r\n super.connectedCallback();\r\n this.loadUserEmail();\r\n }\r\n\r\n async loadUserEmail() {\r\n const [error, session] = await getSession();\r\n if(error){\r\n console.error('Failed to load user email:', error.msg);\r\n this.textContent = '';\r\n return;\r\n }\r\n this.textContent = session?.user?.email || '';\r\n }\r\n\r\n renderLightDom() {\r\n return 'Loading...';\r\n }\r\n}\r\n\r\ncustomElements.define('k-user-email', UserEmail);\r\n"],"mappings":"OAAOA,MAAoB,8DAClBC,MAAkB,2BAEZ,MAAMC,UAAkBF,EACrC,iBAAAG,GACEC,MAAMD,oBACNE,KAAKC,eACP,CAEA,mBAAMA,GACJ,MAAOC,EAAOC,SAAiBP,IAC/B,GAAGM,EAGD,OAFAE,QAAQF,MAAM,6BAA8BA,EAAMG,UAClDL,KAAKM,YAAc,IAGrBN,KAAKM,YAAcH,GAASI,MAAMC,OAAS,EAC7C,CAEA,cAAAC,GACE,MAAO,YACT,EAGFC,eAAeC,OAAO,eAAgBd","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import e from"/kempo-ui/components/LightComponent.js";import{getSession as t}from"../sdk.js";export default class i extends e{connectedCallback(){super.connectedCallback(),this.loadEmailVerified()}async loadEmailVerified(){const[e,i]=await t();if(e)return console.error("Failed to load email verified status:",e.msg),void(this.textContent="");this.textContent=i?.user?.emailVerified?"Yes":"No"}renderLightDom(){return"Loading..."}}customElements.define("k-user-email-verified",i);
|
|
2
2
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\UserEmailVerified.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src\\kempo\\components\\UserEmailVerified.js","names":["LightComponent","getSession","UserEmailVerified","connectedCallback","super","this","loadEmailVerified","error","session","console","msg","textContent","user","emailVerified","renderLightDom","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\r\nimport { getSession } from '../sdk.js';\r\n\r\nexport default class UserEmailVerified extends LightComponent {\r\n connectedCallback() {\r\n super.connectedCallback();\r\n this.loadEmailVerified();\r\n }\r\n\r\n async loadEmailVerified() {\r\n const [error, session] = await getSession();\r\n if(error){\r\n console.error('Failed to load email verified status:', error.msg);\r\n this.textContent = '';\r\n return;\r\n }\r\n this.textContent = session?.user?.emailVerified ? 'Yes' : 'No';\r\n }\r\n\r\n renderLightDom() {\r\n return 'Loading...';\r\n }\r\n}\r\n\r\ncustomElements.define('k-user-email-verified', UserEmailVerified);\r\n"],"mappings":"OAAOA,
|
|
1
|
+
{"version":3,"file":"src\\kempo\\components\\UserEmailVerified.js","names":["LightComponent","getSession","UserEmailVerified","connectedCallback","super","this","loadEmailVerified","error","session","console","msg","textContent","user","emailVerified","renderLightDom","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\r\nimport { getSession } from '../sdk.js';\r\n\r\nexport default class UserEmailVerified extends LightComponent {\r\n connectedCallback() {\r\n super.connectedCallback();\r\n this.loadEmailVerified();\r\n }\r\n\r\n async loadEmailVerified() {\r\n const [error, session] = await getSession();\r\n if(error){\r\n console.error('Failed to load email verified status:', error.msg);\r\n this.textContent = '';\r\n return;\r\n }\r\n this.textContent = session?.user?.emailVerified ? 'Yes' : 'No';\r\n }\r\n\r\n renderLightDom() {\r\n return 'Loading...';\r\n }\r\n}\r\n\r\ncustomElements.define('k-user-email-verified', UserEmailVerified);\r\n"],"mappings":"OAAOA,MAAoB,8DAClBC,MAAkB,2BAEZ,MAAMC,UAA0BF,EAC7C,iBAAAG,GACEC,MAAMD,oBACNE,KAAKC,mBACP,CAEA,uBAAMA,GACJ,MAAOC,EAAOC,SAAiBP,IAC/B,GAAGM,EAGD,OAFAE,QAAQF,MAAM,wCAAyCA,EAAMG,UAC7DL,KAAKM,YAAc,IAGrBN,KAAKM,YAAcH,GAASI,MAAMC,cAAgB,MAAQ,IAC5D,CAEA,cAAAC,GACE,MAAO,YACT,EAGFC,eAAeC,OAAO,wBAAyBd","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import e from"/kempo-ui/components/LightComponent.js";import{getSession as t}from"../sdk.js";export default class o extends e{connectedCallback(){super.connectedCallback(),this.loadUserName()}async loadUserName(){const[e,o]=await t();if(e)return console.error("Failed to load user name:",e.msg),void(this.textContent="");this.textContent=o?.user?.name||""}renderLightDom(){return"Loading..."}}customElements.define("k-user-name",o);
|
|
2
2
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\UserName.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src\\kempo\\components\\UserName.js","names":["LightComponent","getSession","UserName","connectedCallback","super","this","loadUserName","error","session","console","msg","textContent","user","name","renderLightDom","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\r\nimport { getSession } from '../sdk.js';\r\n\r\nexport default class UserName extends LightComponent {\r\n connectedCallback() {\r\n super.connectedCallback();\r\n this.loadUserName();\r\n }\r\n\r\n async loadUserName() {\r\n const [error, session] = await getSession();\r\n if(error){\r\n console.error('Failed to load user name:', error.msg);\r\n this.textContent = '';\r\n return;\r\n }\r\n this.textContent = session?.user?.name || '';\r\n }\r\n\r\n renderLightDom() {\r\n return 'Loading...';\r\n }\r\n}\r\n\r\ncustomElements.define('k-user-name', UserName);\r\n"],"mappings":"OAAOA,
|
|
1
|
+
{"version":3,"file":"src\\kempo\\components\\UserName.js","names":["LightComponent","getSession","UserName","connectedCallback","super","this","loadUserName","error","session","console","msg","textContent","user","name","renderLightDom","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\r\nimport { getSession } from '../sdk.js';\r\n\r\nexport default class UserName extends LightComponent {\r\n connectedCallback() {\r\n super.connectedCallback();\r\n this.loadUserName();\r\n }\r\n\r\n async loadUserName() {\r\n const [error, session] = await getSession();\r\n if(error){\r\n console.error('Failed to load user name:', error.msg);\r\n this.textContent = '';\r\n return;\r\n }\r\n this.textContent = session?.user?.name || '';\r\n }\r\n\r\n renderLightDom() {\r\n return 'Loading...';\r\n }\r\n}\r\n\r\ncustomElements.define('k-user-name', UserName);\r\n"],"mappings":"OAAOA,MAAoB,8DAClBC,MAAkB,2BAEZ,MAAMC,UAAiBF,EACpC,iBAAAG,GACEC,MAAMD,oBACNE,KAAKC,cACP,CAEA,kBAAMA,GACJ,MAAOC,EAAOC,SAAiBP,IAC/B,GAAGM,EAGD,OAFAE,QAAQF,MAAM,4BAA6BA,EAAMG,UACjDL,KAAKM,YAAc,IAGrBN,KAAKM,YAAcH,GAASI,MAAMC,MAAQ,EAC5C,CAEA,cAAAC,GACE,MAAO,YACT,EAGFC,eAAeC,OAAO,cAAed","ignoreList":[]}
|
package/dist/kempo/fetch.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const
|
|
1
|
+
const e=new Map,t=async(t,r)=>{const a=((e,t={})=>`${t.method||"GET"}:${e}:${t.body||""}`)(t,r);if(e.has(a)){const t=e.get(a);return new Promise((e,r)=>{t.callbacks.add({resolve:e,reject:r})}).then(async e=>{if(!e.ok){let t;try{t=await e.json()}catch(t){return[{code:e.status,msg:"Service temporarily unavailable. Please try again later."},null]}return[{code:e.status,msg:t.error||t.message||"An error occurred"},null]}try{return[null,await e.json()]}catch(e){return[{code:500,msg:"Service temporarily unavailable. Please try again later."},null]}})}const n=new Set,o=fetch(t,r).then(t=>(n.forEach(({resolve:e})=>e(t.clone())),e.delete(a),t)).catch(t=>{throw n.forEach(({reject:e})=>e(t)),e.delete(a),t});e.set(a,{fetchPromise:o,callbacks:n});try{const e=await o;if(!e.ok){let t;try{t=await e.json()}catch(t){return[{code:e.status,msg:"Service temporarily unavailable. Please try again later."},null]}return[{code:e.status,msg:t.error||t.message||"An error occurred"},null]}try{return[null,await e.json()]}catch(e){return[{code:500,msg:"Service temporarily unavailable. Please try again later."},null]}}catch(e){return"Service temporarily unavailable. Please try again later."===e.message||e.message.includes("Failed to fetch")?[{code:503,msg:"Service temporarily unavailable. Please try again later."},null]:[{code:500,msg:e.message||"An error occurred"},null]}};export const get=(e,r)=>{if(r){const a=Object.entries(r).filter(([,e])=>null!=e);if(a.length){const r=a.map(([e,t])=>Array.isArray(t)?`${encodeURIComponent(e)}=${t.map(e=>encodeURIComponent(e)).join(",")}`:`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&");return t(`${e}?${r}`,{method:"GET"})}}return t(e,{method:"GET"})};export const post=(e,r)=>t(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});export const put=(e,r)=>t(e,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});export const patch=(e,r)=>t(e,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});export const del=(e,r)=>t(e,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});
|
|
2
2
|
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\fetch.js.map
|