@axium/server 0.24.0 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/axiumd.service +1 -1
- package/build/client/_app/immutable/assets/account.dAAx7bby.css +1 -0
- package/build/client/_app/immutable/assets/account.dAAx7bby.css.br +0 -0
- package/build/client/_app/immutable/assets/account.dAAx7bby.css.gz +0 -0
- package/build/client/_app/immutable/assets/list.DVGH0BeP.css +1 -0
- package/build/client/_app/immutable/assets/list.DVGH0BeP.css.br +0 -0
- package/build/client/_app/immutable/assets/list.DVGH0BeP.css.gz +0 -0
- package/build/client/_app/immutable/assets/styles.D8SZ-PeY.css +1 -0
- package/build/client/_app/immutable/assets/styles.D8SZ-PeY.css.br +2 -0
- package/build/client/_app/immutable/assets/styles.D8SZ-PeY.css.gz +0 -0
- package/build/client/_app/immutable/chunks/1taVrT-y.js +1 -0
- package/build/client/_app/immutable/chunks/1taVrT-y.js.br +0 -0
- package/build/client/_app/immutable/chunks/1taVrT-y.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BSFUgC2l.js +23 -0
- package/build/client/_app/immutable/chunks/BSFUgC2l.js.br +0 -0
- package/build/client/_app/immutable/chunks/BSFUgC2l.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bbzjahjl.js +2 -0
- package/build/client/_app/immutable/chunks/Bbzjahjl.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bbzjahjl.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BxjargW5.js +1 -0
- package/build/client/_app/immutable/chunks/BxjargW5.js.br +0 -0
- package/build/client/_app/immutable/chunks/BxjargW5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C2ewTgu8.js +1 -0
- package/build/client/_app/immutable/chunks/C2ewTgu8.js.br +0 -0
- package/build/client/_app/immutable/chunks/C2ewTgu8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CFWAHLsq.js +1 -0
- package/build/client/_app/immutable/chunks/CFWAHLsq.js.br +0 -0
- package/build/client/_app/immutable/chunks/CFWAHLsq.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CPL43v-I.js +1 -0
- package/build/client/_app/immutable/chunks/CPL43v-I.js.br +0 -0
- package/build/client/_app/immutable/chunks/CPL43v-I.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CTKC36WM.js +1 -0
- package/build/client/_app/immutable/chunks/CTKC36WM.js.br +0 -0
- package/build/client/_app/immutable/chunks/CTKC36WM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CekH6JMP.js +1 -0
- package/build/client/_app/immutable/chunks/CekH6JMP.js.br +0 -0
- package/build/client/_app/immutable/chunks/CekH6JMP.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Ch16TNvP.js +1 -0
- package/build/client/_app/immutable/chunks/Ch16TNvP.js.br +0 -0
- package/build/client/_app/immutable/chunks/Ch16TNvP.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CqfYW08-.js +1 -0
- package/build/client/_app/immutable/chunks/CqfYW08-.js.br +0 -0
- package/build/client/_app/immutable/chunks/CqfYW08-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D1v6O410.js +1 -0
- package/build/client/_app/immutable/chunks/D1v6O410.js.br +0 -0
- package/build/client/_app/immutable/chunks/D1v6O410.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DY4fWHx_.js +1 -0
- package/build/client/_app/immutable/chunks/DY4fWHx_.js.br +0 -0
- package/build/client/_app/immutable/chunks/DY4fWHx_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DdnE6dyJ.js +2 -0
- package/build/client/_app/immutable/chunks/DdnE6dyJ.js.br +0 -0
- package/build/client/_app/immutable/chunks/DdnE6dyJ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DeieCYM0.js +22 -0
- package/build/client/_app/immutable/chunks/DeieCYM0.js.br +0 -0
- package/build/client/_app/immutable/chunks/DeieCYM0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DfUzlYF5.js +1 -0
- package/build/client/_app/immutable/chunks/DfUzlYF5.js.br +0 -0
- package/build/client/_app/immutable/chunks/DfUzlYF5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dnk28BpG.js +1 -0
- package/build/client/_app/immutable/chunks/Dnk28BpG.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dnk28BpG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/KNAS5R2A.js +3 -0
- package/build/client/_app/immutable/chunks/KNAS5R2A.js.br +0 -0
- package/build/client/_app/immutable/chunks/KNAS5R2A.js.gz +0 -0
- package/build/client/_app/immutable/chunks/eyJgPND9.js +1 -0
- package/build/client/_app/immutable/chunks/eyJgPND9.js.br +1 -0
- package/build/client/_app/immutable/chunks/eyJgPND9.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CPF6A_DV.js +2 -0
- package/build/client/_app/immutable/entry/app.CPF6A_DV.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CPF6A_DV.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.Dos_Ttds.js +1 -0
- package/build/client/_app/immutable/entry/start.Dos_Ttds.js.br +2 -0
- package/build/client/_app/immutable/entry/start.Dos_Ttds.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.DlE8ZTIF.js → 0.C5HgTRfT.js} +1 -1
- package/build/client/_app/immutable/nodes/0.C5HgTRfT.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.C5HgTRfT.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.CGcgSoA9.js +1 -0
- package/build/client/_app/immutable/nodes/1.CGcgSoA9.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.CGcgSoA9.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.ukScuXwz.js +1 -0
- package/build/client/_app/immutable/nodes/10.ukScuXwz.js.br +5 -0
- package/build/client/_app/immutable/nodes/10.ukScuXwz.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.D3RDNx7M.js +1 -0
- package/build/client/_app/immutable/nodes/11.D3RDNx7M.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.D3RDNx7M.js.gz +0 -0
- package/build/client/_app/immutable/nodes/12._vvpCcSG.js +1 -0
- package/build/client/_app/immutable/nodes/12._vvpCcSG.js.br +0 -0
- package/build/client/_app/immutable/nodes/12._vvpCcSG.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.BWPzZMQ5.js +1 -0
- package/build/client/_app/immutable/nodes/13.BWPzZMQ5.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.BWPzZMQ5.js.gz +0 -0
- package/build/client/_app/immutable/nodes/14.Cr843Lep.js +1 -0
- package/build/client/_app/immutable/nodes/14.Cr843Lep.js.br +0 -0
- package/build/client/_app/immutable/nodes/14.Cr843Lep.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.DUpwDjw8.js +1 -0
- package/build/client/_app/immutable/nodes/2.DUpwDjw8.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.DUpwDjw8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.CvEpuMc7.js → 3.DPH7xl7M.js} +1 -1
- package/build/client/_app/immutable/nodes/3.DPH7xl7M.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.DPH7xl7M.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.Bk0knTIK.js +1 -0
- package/build/client/_app/immutable/nodes/4.Bk0knTIK.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.Bk0knTIK.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.DwnZ1Bh8.js +1 -0
- package/build/client/_app/immutable/nodes/5.DwnZ1Bh8.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.DwnZ1Bh8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.5U-KxFgt.js +2 -0
- package/build/client/_app/immutable/nodes/6.5U-KxFgt.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.5U-KxFgt.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.DFc4sJix.js +1 -0
- package/build/client/_app/immutable/nodes/7.DFc4sJix.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.DFc4sJix.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.BG4bv5P5.js +1 -0
- package/build/client/_app/immutable/nodes/8.BG4bv5P5.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.BG4bv5P5.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.BKljyhOi.js +1 -0
- package/build/client/_app/immutable/nodes/9.BKljyhOi.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.BKljyhOi.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/client/styles.css +7 -0
- package/build/client/styles.css.br +0 -0
- package/build/client/styles.css.gz +0 -0
- package/build/handler.js +20 -3
- package/build/server/chunks/0-CZBaNtSI.js +9 -0
- package/build/server/chunks/{0-DgHTujtC.js.map → 0-CZBaNtSI.js.map} +1 -1
- package/build/server/chunks/1-D_3BtEbe.js +9 -0
- package/build/server/chunks/{1-k30i-hic.js.map → 1-D_3BtEbe.js.map} +1 -1
- package/build/server/chunks/10-CLkNMKHU.js +13 -0
- package/build/server/chunks/10-CLkNMKHU.js.map +1 -0
- package/build/server/chunks/11-5xPYR_1w.js +13 -0
- package/build/server/chunks/11-5xPYR_1w.js.map +1 -0
- package/build/server/chunks/12-N7UaQj7u.js +9 -0
- package/build/server/chunks/12-N7UaQj7u.js.map +1 -0
- package/build/server/chunks/13-QYVLpXli.js +9 -0
- package/build/server/chunks/13-QYVLpXli.js.map +1 -0
- package/build/server/chunks/14-CPY578rT.js +9 -0
- package/build/server/chunks/14-CPY578rT.js.map +1 -0
- package/build/server/chunks/2-_1jFrcvz.js +13 -0
- package/build/server/chunks/2-_1jFrcvz.js.map +1 -0
- package/build/server/chunks/3-B1CwnVF_.js +9 -0
- package/build/server/chunks/{2-CXlrhpR6.js.map → 3-B1CwnVF_.js.map} +1 -1
- package/build/server/chunks/4-CcxCcH4F.js +13 -0
- package/build/server/chunks/4-CcxCcH4F.js.map +1 -0
- package/build/server/chunks/5-CrlH6VoB.js +13 -0
- package/build/server/chunks/5-CrlH6VoB.js.map +1 -0
- package/build/server/chunks/6-FkP678Uz.js +13 -0
- package/build/server/chunks/6-FkP678Uz.js.map +1 -0
- package/build/server/chunks/7-B1iCe7VA.js +13 -0
- package/build/server/chunks/7-B1iCe7VA.js.map +1 -0
- package/build/server/chunks/8-p6n9G-P_.js +13 -0
- package/build/server/chunks/8-p6n9G-P_.js.map +1 -0
- package/build/server/chunks/9-fc3lKB7X.js +13 -0
- package/build/server/chunks/9-fc3lKB7X.js.map +1 -0
- package/build/server/chunks/Icon-CG7XnWX5.js +30 -0
- package/build/server/chunks/Icon-CG7XnWX5.js.map +1 -0
- package/build/server/chunks/Logout-BwzK1P29.js +45 -0
- package/build/server/chunks/Logout-BwzK1P29.js.map +1 -0
- package/build/server/chunks/_layout.svelte-9KMUotip.js +31 -0
- package/build/server/chunks/_layout.svelte-9KMUotip.js.map +1 -0
- package/build/server/chunks/_page.svelte-BD3HmLo_.js +28 -0
- package/build/server/chunks/_page.svelte-BD3HmLo_.js.map +1 -0
- package/build/server/chunks/_page.svelte-BFzPdJ6z.js +105 -0
- package/build/server/chunks/_page.svelte-BFzPdJ6z.js.map +1 -0
- package/build/server/chunks/_page.svelte-BIxxuzff.js +64 -0
- package/build/server/chunks/_page.svelte-BIxxuzff.js.map +1 -0
- package/build/server/chunks/_page.svelte-Bou2_u6i.js +13 -0
- package/build/server/chunks/_page.svelte-Bou2_u6i.js.map +1 -0
- package/build/server/chunks/_page.svelte-C25oQ2NT.js +80 -0
- package/build/server/chunks/_page.svelte-C25oQ2NT.js.map +1 -0
- package/build/server/chunks/_page.svelte-CAzWL4aq.js +66 -0
- package/build/server/chunks/_page.svelte-CAzWL4aq.js.map +1 -0
- package/build/server/chunks/_page.svelte-Ci5V-DhL.js +72 -0
- package/build/server/chunks/_page.svelte-Ci5V-DhL.js.map +1 -0
- package/build/server/chunks/_page.svelte-CnfRSJsl.js +37 -0
- package/build/server/chunks/_page.svelte-CnfRSJsl.js.map +1 -0
- package/build/server/chunks/_page.svelte-DgyZKeaF.js +231 -0
- package/build/server/chunks/_page.svelte-DgyZKeaF.js.map +1 -0
- package/build/server/chunks/_page.svelte-VDBvShZ8.js +6 -0
- package/build/server/chunks/_page.svelte-VDBvShZ8.js.map +1 -0
- package/build/server/chunks/_page.svelte-cAsZlwLs.js +24 -0
- package/build/server/chunks/_page.svelte-cAsZlwLs.js.map +1 -0
- package/build/server/chunks/_page.svelte-rrN2zFNa.js +66 -0
- package/build/server/chunks/_page.svelte-rrN2zFNa.js.map +1 -0
- package/build/server/chunks/account-BZSP6KBP.js +445 -0
- package/build/server/chunks/account-BZSP6KBP.js.map +1 -0
- package/build/server/chunks/color-K_MR7m8s.js +14 -0
- package/build/server/chunks/color-K_MR7m8s.js.map +1 -0
- package/build/server/chunks/context-R2425nfV.js +64 -0
- package/build/server/chunks/context-R2425nfV.js.map +1 -0
- package/build/server/chunks/{error.svelte-DNQXZmIO.js → error.svelte-DTrQqomO.js} +8 -7
- package/build/server/chunks/error.svelte-DTrQqomO.js.map +1 -0
- package/build/server/chunks/index-DJrm8BZm.js +844 -0
- package/build/server/chunks/index-DJrm8BZm.js.map +1 -0
- package/build/server/chunks/{index-CvHf_GW2.js → index-eKiDBuyI.js} +826 -438
- package/build/server/chunks/index-eKiDBuyI.js.map +1 -0
- package/build/server/chunks/layout.svelte-UxsTmhKc.js +8 -0
- package/build/server/chunks/layout.svelte-UxsTmhKc.js.map +1 -0
- package/build/server/chunks/{string-DLbvtT1R.js → numbers-DL8C9q4W.js} +1 -71
- package/build/server/chunks/numbers-DL8C9q4W.js.map +1 -0
- package/build/server/chunks/{FormDialog-CB-2YGWi.js → user2-Coq3Frtw.js} +102 -203
- package/build/server/chunks/user2-Coq3Frtw.js.map +1 -0
- package/build/server/chunks/{utils-h74ns7K6.js → utils-DlBYhQz7.js} +2 -1
- package/build/server/chunks/utils-DlBYhQz7.js.map +1 -0
- package/build/server/index.js +1787 -994
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +70 -13
- package/build/server/manifest.js.map +1 -1
- package/dist/acl.d.ts +1 -2
- package/dist/api/acl.js +4 -4
- package/dist/api/admin.d.ts +1 -0
- package/dist/api/admin.js +135 -0
- package/dist/api/index.d.ts +2 -0
- package/dist/api/index.js +2 -0
- package/dist/api/metadata.js +3 -3
- package/dist/api/passkeys.js +10 -10
- package/dist/api/register.js +4 -4
- package/dist/api/session.js +5 -5
- package/dist/api/users.js +48 -48
- package/dist/audit.d.ts +7 -39
- package/dist/audit.js +10 -13
- package/dist/auth.d.ts +4 -11
- package/dist/auth.js +4 -4
- package/dist/cli.js +40 -54
- package/dist/config.d.ts +24 -14
- package/dist/config.js +42 -25
- package/dist/database.d.ts +3 -4
- package/dist/database.js +12 -12
- package/dist/internal_requests.d.ts +3 -0
- package/dist/internal_requests.js +119 -0
- package/dist/io.d.ts +1 -1
- package/dist/io.js +2 -5
- package/dist/linking.d.ts +0 -1
- package/dist/linking.js +2 -5
- package/dist/plugins.d.ts +4 -39
- package/dist/plugins.js +35 -51
- package/dist/requests.d.ts +5 -5
- package/dist/requests.js +14 -14
- package/dist/routes.d.ts +6 -10
- package/dist/routes.js +4 -5
- package/dist/serve.d.ts +3 -2
- package/dist/serve.js +165 -13
- package/dist/state.js +2 -1
- package/package.json +6 -5
- package/routes/account/+page.svelte +5 -109
- package/routes/admin/+layout.svelte +56 -0
- package/routes/admin/+layout.ts +29 -0
- package/routes/admin/+page.svelte +39 -0
- package/routes/admin/+page.ts +7 -0
- package/routes/admin/audit/+page.svelte +137 -0
- package/routes/admin/audit/+page.ts +20 -0
- package/routes/admin/audit/[id]/+page.svelte +43 -0
- package/routes/admin/audit/[id]/+page.ts +9 -0
- package/routes/admin/audit/styles.css +31 -0
- package/routes/admin/config/+page.svelte +28 -0
- package/routes/admin/config/+page.ts +9 -0
- package/routes/admin/plugins/+page.svelte +23 -0
- package/routes/admin/plugins/+page.ts +7 -0
- package/routes/admin/users/+page.svelte +60 -0
- package/routes/admin/users/+page.ts +9 -0
- package/routes/admin/users/[id]/+page.svelte +108 -0
- package/routes/admin/users/[id]/+page.ts +17 -0
- package/routes/tsconfig.json +1 -1
- package/svelte.config.js +4 -10
- package/{web/template.html → template.html} +1 -1
- package/{web/tsconfig.json → web.tsconfig.json} +2 -2
- package/build/client/_app/immutable/chunks/B1E1cVbi.js +0 -1
- package/build/client/_app/immutable/chunks/B1E1cVbi.js.br +0 -0
- package/build/client/_app/immutable/chunks/B1E1cVbi.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D3hk2v8y.js +0 -1
- package/build/client/_app/immutable/chunks/D3hk2v8y.js.br +0 -2
- package/build/client/_app/immutable/chunks/D3hk2v8y.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D4Bce_hb.js +0 -1
- package/build/client/_app/immutable/chunks/D4Bce_hb.js.br +0 -0
- package/build/client/_app/immutable/chunks/D4Bce_hb.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D9TfJrfD.js +0 -1
- package/build/client/_app/immutable/chunks/D9TfJrfD.js.br +0 -0
- package/build/client/_app/immutable/chunks/D9TfJrfD.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DJeR1n-B.js +0 -51
- package/build/client/_app/immutable/chunks/DJeR1n-B.js.br +0 -0
- package/build/client/_app/immutable/chunks/DJeR1n-B.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dy1O3iBu.js +0 -2
- package/build/client/_app/immutable/chunks/Dy1O3iBu.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dy1O3iBu.js.gz +0 -0
- package/build/client/_app/immutable/chunks/NhZR8nmR.js +0 -3
- package/build/client/_app/immutable/chunks/NhZR8nmR.js.br +0 -0
- package/build/client/_app/immutable/chunks/NhZR8nmR.js.gz +0 -0
- package/build/client/_app/immutable/chunks/pba7IodQ.js +0 -1
- package/build/client/_app/immutable/chunks/pba7IodQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/pba7IodQ.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.DJWgFLyv.js +0 -2
- package/build/client/_app/immutable/entry/app.DJWgFLyv.js.br +0 -0
- package/build/client/_app/immutable/entry/app.DJWgFLyv.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CM7y0WAo.js +0 -1
- package/build/client/_app/immutable/entry/start.CM7y0WAo.js.br +0 -2
- package/build/client/_app/immutable/entry/start.CM7y0WAo.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.DlE8ZTIF.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.DlE8ZTIF.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BER4lkmI.js +0 -1
- package/build/client/_app/immutable/nodes/1.BER4lkmI.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.BER4lkmI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.CvEpuMc7.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CvEpuMc7.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.CVudd8x2.js +0 -7
- package/build/client/_app/immutable/nodes/3.CVudd8x2.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CVudd8x2.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.Dhj0R0r7.js +0 -1
- package/build/client/_app/immutable/nodes/4.Dhj0R0r7.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.Dhj0R0r7.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.CGoBaVII.js +0 -1
- package/build/client/_app/immutable/nodes/5.CGoBaVII.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.CGoBaVII.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.BtB2uWXy.js +0 -1
- package/build/client/_app/immutable/nodes/6.BtB2uWXy.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BtB2uWXy.js.gz +0 -0
- package/build/server/chunks/0-DgHTujtC.js +0 -9
- package/build/server/chunks/1-k30i-hic.js +0 -9
- package/build/server/chunks/2-CXlrhpR6.js +0 -9
- package/build/server/chunks/3-CGT4Ugys.js +0 -13
- package/build/server/chunks/3-CGT4Ugys.js.map +0 -1
- package/build/server/chunks/4-BscEiwUk.js +0 -9
- package/build/server/chunks/4-BscEiwUk.js.map +0 -1
- package/build/server/chunks/5-H0ePIJBE.js +0 -9
- package/build/server/chunks/5-H0ePIJBE.js.map +0 -1
- package/build/server/chunks/6-BrPpcagX.js +0 -9
- package/build/server/chunks/6-BrPpcagX.js.map +0 -1
- package/build/server/chunks/FormDialog-CB-2YGWi.js.map +0 -1
- package/build/server/chunks/Logout-LKOt-AST.js +0 -45
- package/build/server/chunks/Logout-LKOt-AST.js.map +0 -1
- package/build/server/chunks/_page.svelte-B1LK5J87.js +0 -11
- package/build/server/chunks/_page.svelte-B1LK5J87.js.map +0 -1
- package/build/server/chunks/_page.svelte-CMtkwvbP.js +0 -68
- package/build/server/chunks/_page.svelte-CMtkwvbP.js.map +0 -1
- package/build/server/chunks/_page.svelte-CbI2KxeA.js +0 -62
- package/build/server/chunks/_page.svelte-CbI2KxeA.js.map +0 -1
- package/build/server/chunks/_page.svelte-D1_WJoyP.js +0 -6
- package/build/server/chunks/_page.svelte-D1_WJoyP.js.map +0 -1
- package/build/server/chunks/_page.svelte-d01Hl2Ia.js +0 -639
- package/build/server/chunks/_page.svelte-d01Hl2Ia.js.map +0 -1
- package/build/server/chunks/error.svelte-DNQXZmIO.js.map +0 -1
- package/build/server/chunks/hooks.server-BQqilaHv.js +0 -17301
- package/build/server/chunks/hooks.server-BQqilaHv.js.map +0 -1
- package/build/server/chunks/index-CvHf_GW2.js.map +0 -1
- package/build/server/chunks/index-RTKpMYZ1.js +0 -397
- package/build/server/chunks/index-RTKpMYZ1.js.map +0 -1
- package/build/server/chunks/layout.svelte-BSvrn-4a.js +0 -8
- package/build/server/chunks/layout.svelte-BSvrn-4a.js.map +0 -1
- package/build/server/chunks/string-DLbvtT1R.js.map +0 -1
- package/build/server/chunks/utils-h74ns7K6.js.map +0 -1
- package/dist/sveltekit.d.ts +0 -8
- package/dist/sveltekit.js +0 -60
- package/web/hooks.server.ts +0 -4
package/build/server/manifest.js
CHANGED
|
@@ -10,15 +10,23 @@ return {
|
|
|
10
10
|
assets: new Set(["icons/brands.svg","icons/light.svg","icons/regular.svg","icons/solid.svg","styles.css","theme.css"]),
|
|
11
11
|
mimeTypes: {".svg":"image/svg+xml",".css":"text/css"},
|
|
12
12
|
_: {
|
|
13
|
-
client: {start:"_app/immutable/entry/start.
|
|
13
|
+
client: {start:"_app/immutable/entry/start.Dos_Ttds.js",app:"_app/immutable/entry/app.CPF6A_DV.js",imports:["_app/immutable/entry/start.Dos_Ttds.js","_app/immutable/chunks/KNAS5R2A.js","_app/immutable/chunks/CFWAHLsq.js","_app/immutable/chunks/Dnk28BpG.js","_app/immutable/chunks/Bbzjahjl.js","_app/immutable/chunks/D1v6O410.js","_app/immutable/entry/app.CPF6A_DV.js","_app/immutable/chunks/Dnk28BpG.js","_app/immutable/chunks/Bbzjahjl.js","_app/immutable/chunks/DsnmJJEf.js","_app/immutable/chunks/CFWAHLsq.js","_app/immutable/chunks/D1v6O410.js","_app/immutable/chunks/1taVrT-y.js","_app/immutable/chunks/DfUzlYF5.js","_app/immutable/chunks/CTKC36WM.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
|
|
14
14
|
nodes: [
|
|
15
|
-
__memo(() => import('./chunks/0-
|
|
16
|
-
__memo(() => import('./chunks/1-
|
|
17
|
-
__memo(() => import('./chunks/2-
|
|
18
|
-
__memo(() => import('./chunks/3-
|
|
19
|
-
__memo(() => import('./chunks/4-
|
|
20
|
-
__memo(() => import('./chunks/5-
|
|
21
|
-
__memo(() => import('./chunks/6-
|
|
15
|
+
__memo(() => import('./chunks/0-CZBaNtSI.js')),
|
|
16
|
+
__memo(() => import('./chunks/1-D_3BtEbe.js')),
|
|
17
|
+
__memo(() => import('./chunks/2-_1jFrcvz.js')),
|
|
18
|
+
__memo(() => import('./chunks/3-B1CwnVF_.js')),
|
|
19
|
+
__memo(() => import('./chunks/4-CcxCcH4F.js')),
|
|
20
|
+
__memo(() => import('./chunks/5-CrlH6VoB.js')),
|
|
21
|
+
__memo(() => import('./chunks/6-FkP678Uz.js')),
|
|
22
|
+
__memo(() => import('./chunks/7-B1iCe7VA.js')),
|
|
23
|
+
__memo(() => import('./chunks/8-p6n9G-P_.js')),
|
|
24
|
+
__memo(() => import('./chunks/9-fc3lKB7X.js')),
|
|
25
|
+
__memo(() => import('./chunks/10-CLkNMKHU.js')),
|
|
26
|
+
__memo(() => import('./chunks/11-5xPYR_1w.js')),
|
|
27
|
+
__memo(() => import('./chunks/12-N7UaQj7u.js')),
|
|
28
|
+
__memo(() => import('./chunks/13-QYVLpXli.js')),
|
|
29
|
+
__memo(() => import('./chunks/14-CPY578rT.js'))
|
|
22
30
|
],
|
|
23
31
|
remotes: {
|
|
24
32
|
|
|
@@ -28,35 +36,84 @@ return {
|
|
|
28
36
|
id: "/_axium/default",
|
|
29
37
|
pattern: /^\/_axium\/default\/?$/,
|
|
30
38
|
params: [],
|
|
31
|
-
page: { layouts: [0,], errors: [1,], leaf:
|
|
39
|
+
page: { layouts: [0,], errors: [1,], leaf: 3 },
|
|
32
40
|
endpoint: null
|
|
33
41
|
},
|
|
34
42
|
{
|
|
35
43
|
id: "/account",
|
|
36
44
|
pattern: /^\/account\/?$/,
|
|
37
45
|
params: [],
|
|
38
|
-
page: { layouts: [0,], errors: [1,], leaf:
|
|
46
|
+
page: { layouts: [0,], errors: [1,], leaf: 4 },
|
|
47
|
+
endpoint: null
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
id: "/admin",
|
|
51
|
+
pattern: /^\/admin\/?$/,
|
|
52
|
+
params: [],
|
|
53
|
+
page: { layouts: [0,2,], errors: [1,,], leaf: 5 },
|
|
54
|
+
endpoint: null
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
id: "/admin/audit",
|
|
58
|
+
pattern: /^\/admin\/audit\/?$/,
|
|
59
|
+
params: [],
|
|
60
|
+
page: { layouts: [0,2,], errors: [1,,], leaf: 6 },
|
|
61
|
+
endpoint: null
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
id: "/admin/audit/[id]",
|
|
65
|
+
pattern: /^\/admin\/audit\/([^/]+?)\/?$/,
|
|
66
|
+
params: [{"name":"id","optional":false,"rest":false,"chained":false}],
|
|
67
|
+
page: { layouts: [0,2,], errors: [1,,], leaf: 7 },
|
|
68
|
+
endpoint: null
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
id: "/admin/config",
|
|
72
|
+
pattern: /^\/admin\/config\/?$/,
|
|
73
|
+
params: [],
|
|
74
|
+
page: { layouts: [0,2,], errors: [1,,], leaf: 8 },
|
|
75
|
+
endpoint: null
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: "/admin/plugins",
|
|
79
|
+
pattern: /^\/admin\/plugins\/?$/,
|
|
80
|
+
params: [],
|
|
81
|
+
page: { layouts: [0,2,], errors: [1,,], leaf: 9 },
|
|
82
|
+
endpoint: null
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
id: "/admin/users",
|
|
86
|
+
pattern: /^\/admin\/users\/?$/,
|
|
87
|
+
params: [],
|
|
88
|
+
page: { layouts: [0,2,], errors: [1,,], leaf: 10 },
|
|
89
|
+
endpoint: null
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
id: "/admin/users/[id]",
|
|
93
|
+
pattern: /^\/admin\/users\/([^/]+?)\/?$/,
|
|
94
|
+
params: [{"name":"id","optional":false,"rest":false,"chained":false}],
|
|
95
|
+
page: { layouts: [0,2,], errors: [1,,], leaf: 11 },
|
|
39
96
|
endpoint: null
|
|
40
97
|
},
|
|
41
98
|
{
|
|
42
99
|
id: "/login",
|
|
43
100
|
pattern: /^\/login\/?$/,
|
|
44
101
|
params: [],
|
|
45
|
-
page: { layouts: [0,], errors: [1,], leaf:
|
|
102
|
+
page: { layouts: [0,], errors: [1,], leaf: 12 },
|
|
46
103
|
endpoint: null
|
|
47
104
|
},
|
|
48
105
|
{
|
|
49
106
|
id: "/logout",
|
|
50
107
|
pattern: /^\/logout\/?$/,
|
|
51
108
|
params: [],
|
|
52
|
-
page: { layouts: [0,], errors: [1,], leaf:
|
|
109
|
+
page: { layouts: [0,], errors: [1,], leaf: 13 },
|
|
53
110
|
endpoint: null
|
|
54
111
|
},
|
|
55
112
|
{
|
|
56
113
|
id: "/register",
|
|
57
114
|
pattern: /^\/register\/?$/,
|
|
58
115
|
params: [],
|
|
59
|
-
page: { layouts: [0,], errors: [1,], leaf:
|
|
116
|
+
page: { layouts: [0,], errors: [1,], leaf: 14 },
|
|
60
117
|
endpoint: null
|
|
61
118
|
}
|
|
62
119
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sources":["../../.svelte-kit/adapter-node/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([\"icons/brands.svg\",\"icons/light.svg\",\"icons/regular.svg\",\"icons/solid.svg\",\"styles.css\",\"theme.css\"]),\n\tmimeTypes: {\".svg\":\"image/svg+xml\",\".css\":\"text/css\"},\n\t_: {\n\t\tclient: {start:\"_app/immutable/entry/start.
|
|
1
|
+
{"version":3,"file":"manifest.js","sources":["../../.svelte-kit/adapter-node/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([\"icons/brands.svg\",\"icons/light.svg\",\"icons/regular.svg\",\"icons/solid.svg\",\"styles.css\",\"theme.css\"]),\n\tmimeTypes: {\".svg\":\"image/svg+xml\",\".css\":\"text/css\"},\n\t_: {\n\t\tclient: {start:\"_app/immutable/entry/start.Dos_Ttds.js\",app:\"_app/immutable/entry/app.CPF6A_DV.js\",imports:[\"_app/immutable/entry/start.Dos_Ttds.js\",\"_app/immutable/chunks/KNAS5R2A.js\",\"_app/immutable/chunks/CFWAHLsq.js\",\"_app/immutable/chunks/Dnk28BpG.js\",\"_app/immutable/chunks/Bbzjahjl.js\",\"_app/immutable/chunks/D1v6O410.js\",\"_app/immutable/entry/app.CPF6A_DV.js\",\"_app/immutable/chunks/Dnk28BpG.js\",\"_app/immutable/chunks/Bbzjahjl.js\",\"_app/immutable/chunks/DsnmJJEf.js\",\"_app/immutable/chunks/CFWAHLsq.js\",\"_app/immutable/chunks/D1v6O410.js\",\"_app/immutable/chunks/1taVrT-y.js\",\"_app/immutable/chunks/DfUzlYF5.js\",\"_app/immutable/chunks/CTKC36WM.js\"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},\n\t\tnodes: [\n\t\t\t__memo(() => import('./nodes/0.js')),\n\t\t\t__memo(() => import('./nodes/1.js')),\n\t\t\t__memo(() => import('./nodes/2.js')),\n\t\t\t__memo(() => import('./nodes/3.js')),\n\t\t\t__memo(() => import('./nodes/4.js')),\n\t\t\t__memo(() => import('./nodes/5.js')),\n\t\t\t__memo(() => import('./nodes/6.js')),\n\t\t\t__memo(() => import('./nodes/7.js')),\n\t\t\t__memo(() => import('./nodes/8.js')),\n\t\t\t__memo(() => import('./nodes/9.js')),\n\t\t\t__memo(() => import('./nodes/10.js')),\n\t\t\t__memo(() => import('./nodes/11.js')),\n\t\t\t__memo(() => import('./nodes/12.js')),\n\t\t\t__memo(() => import('./nodes/13.js')),\n\t\t\t__memo(() => import('./nodes/14.js'))\n\t\t],\n\t\tremotes: {\n\t\t\t\n\t\t},\n\t\troutes: [\n\t\t\t{\n\t\t\t\tid: \"/_axium/default\",\n\t\t\t\tpattern: /^\\/_axium\\/default\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 3 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/account\",\n\t\t\t\tpattern: /^\\/account\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 4 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/admin\",\n\t\t\t\tpattern: /^\\/admin\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,2,], errors: [1,,], leaf: 5 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/admin/audit\",\n\t\t\t\tpattern: /^\\/admin\\/audit\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,2,], errors: [1,,], leaf: 6 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/admin/audit/[id]\",\n\t\t\t\tpattern: /^\\/admin\\/audit\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,2,], errors: [1,,], leaf: 7 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/admin/config\",\n\t\t\t\tpattern: /^\\/admin\\/config\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,2,], errors: [1,,], leaf: 8 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/admin/plugins\",\n\t\t\t\tpattern: /^\\/admin\\/plugins\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,2,], errors: [1,,], leaf: 9 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/admin/users\",\n\t\t\t\tpattern: /^\\/admin\\/users\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,2,], errors: [1,,], leaf: 10 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/admin/users/[id]\",\n\t\t\t\tpattern: /^\\/admin\\/users\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,2,], errors: [1,,], leaf: 11 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/login\",\n\t\t\t\tpattern: /^\\/login\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 12 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/logout\",\n\t\t\t\tpattern: /^\\/logout\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 13 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/register\",\n\t\t\t\tpattern: /^\\/register\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 14 },\n\t\t\t\tendpoint: null\n\t\t\t}\n\t\t],\n\t\tprerendered_routes: new Set([]),\n\t\tmatchers: async () => {\n\t\t\t\n\t\t\treturn { };\n\t\t},\n\t\tserver_assets: {}\n\t}\n}\n})();\n\nexport const prerendered = new Set([]);\n\nexport const base = \"\";"],"names":[],"mappings":"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"}
|
package/dist/acl.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { AccessControl, Permission } from '@axium/core';
|
|
1
|
+
import type { AccessControl, Permission, UserInternal } from '@axium/core';
|
|
2
2
|
import type { AliasedRawBuilder, Expression, ExpressionBuilder, Selectable } from 'kysely';
|
|
3
|
-
import type { UserInternal } from './auth.js';
|
|
4
3
|
import * as db from './database.js';
|
|
5
4
|
export interface Target {
|
|
6
5
|
userId: string;
|
package/dist/api/acl.js
CHANGED
|
@@ -8,10 +8,10 @@ addRoute({
|
|
|
8
8
|
itemType: z.string(),
|
|
9
9
|
itemId: z.uuid(),
|
|
10
10
|
},
|
|
11
|
-
async PUT(
|
|
12
|
-
const type =
|
|
13
|
-
const itemId =
|
|
14
|
-
const data = await parseBody(
|
|
11
|
+
async PUT(request, params) {
|
|
12
|
+
const type = params.itemType;
|
|
13
|
+
const itemId = params.itemId;
|
|
14
|
+
const data = await parseBody(request, z.object({
|
|
15
15
|
userId: z.uuid(),
|
|
16
16
|
permission: z.number().int().min(0).max(5),
|
|
17
17
|
}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { AuditFilter, Severity } from '@axium/core';
|
|
2
|
+
import { jsonArrayFrom, jsonObjectFrom } from 'kysely/helpers/postgres';
|
|
3
|
+
import { omit } from 'utilium';
|
|
4
|
+
import * as z from 'zod';
|
|
5
|
+
import { audit, getEvents } from '../audit.js';
|
|
6
|
+
import { getSessionAndUser } from '../auth.js';
|
|
7
|
+
import { config } from '../config.js';
|
|
8
|
+
import { count, database as db } from '../database.js';
|
|
9
|
+
import { error, getToken, withError } from '../requests.js';
|
|
10
|
+
import { addRoute } from '../routes.js';
|
|
11
|
+
import { plugins } from '../plugins.js';
|
|
12
|
+
import pkg from '../../package.json' with { type: 'json' };
|
|
13
|
+
async function assertAdmin(route, req) {
|
|
14
|
+
const token = getToken(req);
|
|
15
|
+
if (!token)
|
|
16
|
+
error(401, 'Missing token');
|
|
17
|
+
const admin = await getSessionAndUser(token).catch(withError('Invalid session', 400));
|
|
18
|
+
if (!admin.user.isAdmin)
|
|
19
|
+
error(403, 'Not an administrator');
|
|
20
|
+
if (!config.admin_api)
|
|
21
|
+
error(503, 'Admin API is disabled');
|
|
22
|
+
await audit('admin_api', admin.userId, { route: route.path, session: admin.id });
|
|
23
|
+
return admin.user;
|
|
24
|
+
}
|
|
25
|
+
addRoute({
|
|
26
|
+
path: '/api/admin/summary',
|
|
27
|
+
async GET(req) {
|
|
28
|
+
await assertAdmin(this, req);
|
|
29
|
+
const groups = Object.groupBy(await getEvents({}).execute(), e => e.severity);
|
|
30
|
+
const auditEvents = Object.fromEntries(Object.entries(groups).map(([sev, events]) => [sev, events.length]));
|
|
31
|
+
return {
|
|
32
|
+
...(await count('users', 'passkeys', 'sessions')),
|
|
33
|
+
auditEvents,
|
|
34
|
+
configFiles: config.files.size,
|
|
35
|
+
plugins: plugins.size,
|
|
36
|
+
version: pkg.version,
|
|
37
|
+
};
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
addRoute({
|
|
41
|
+
path: '/api/admin/plugins',
|
|
42
|
+
async GET(req) {
|
|
43
|
+
await assertAdmin(this, req);
|
|
44
|
+
return Array.from(plugins.values()).map(p => omit(p, '_hooks'));
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
addRoute({
|
|
48
|
+
path: '/api/admin/users/all',
|
|
49
|
+
async GET(req) {
|
|
50
|
+
await assertAdmin(this, req);
|
|
51
|
+
const users = await db.selectFrom('users').selectAll().execute();
|
|
52
|
+
return users;
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
addRoute({
|
|
56
|
+
path: '/api/admin/users/:userId',
|
|
57
|
+
params: { userId: z.uuid() },
|
|
58
|
+
async GET(req, params) {
|
|
59
|
+
await assertAdmin(this, req);
|
|
60
|
+
if (!params.userId)
|
|
61
|
+
error(400, 'Missing user ID');
|
|
62
|
+
const user = await db
|
|
63
|
+
.selectFrom('users')
|
|
64
|
+
.selectAll()
|
|
65
|
+
.select(eb => jsonArrayFrom(eb.selectFrom('sessions').whereRef('sessions.userId', '=', 'users.id').selectAll())
|
|
66
|
+
.$castTo()
|
|
67
|
+
.as('sessions'))
|
|
68
|
+
.where('id', '=', params.userId)
|
|
69
|
+
.executeTakeFirstOrThrow()
|
|
70
|
+
.catch(withError('User not found', 404));
|
|
71
|
+
return {
|
|
72
|
+
...user,
|
|
73
|
+
sessions: user.sessions.map(s => ({
|
|
74
|
+
...omit(s, 'token'),
|
|
75
|
+
created: new Date(s.created),
|
|
76
|
+
expires: new Date(s.expires),
|
|
77
|
+
})),
|
|
78
|
+
};
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
/**
|
|
82
|
+
* Redacts critical information that we don't want to send over the API, even to admins.
|
|
83
|
+
*/
|
|
84
|
+
function _redactConfig(config) {
|
|
85
|
+
if (config.db?.password) {
|
|
86
|
+
config.db.password = '*'.repeat(config.db.password.length);
|
|
87
|
+
}
|
|
88
|
+
return config;
|
|
89
|
+
}
|
|
90
|
+
addRoute({
|
|
91
|
+
path: '/api/admin/config',
|
|
92
|
+
async GET(req) {
|
|
93
|
+
await assertAdmin(this, req);
|
|
94
|
+
return {
|
|
95
|
+
config: _redactConfig(config.plain()),
|
|
96
|
+
files: Object.fromEntries(config.files.entries().map(([path, cfg]) => [path, _redactConfig(cfg)])),
|
|
97
|
+
};
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
addRoute({
|
|
101
|
+
path: '/api/admin/audit/events',
|
|
102
|
+
async GET(req) {
|
|
103
|
+
await assertAdmin(this, req);
|
|
104
|
+
const filter = { severity: Severity.Info };
|
|
105
|
+
try {
|
|
106
|
+
const search = Object.fromEntries(new URL(req.url).searchParams);
|
|
107
|
+
Object.assign(filter, AuditFilter.parse(search));
|
|
108
|
+
}
|
|
109
|
+
catch (e) {
|
|
110
|
+
error(400, e instanceof z.core.$ZodError ? z.prettifyError(e) : 'invalid body');
|
|
111
|
+
}
|
|
112
|
+
return await getEvents(filter)
|
|
113
|
+
.select(eb => jsonObjectFrom(eb.selectFrom('users').whereRef('users.id', '=', 'audit_log.userId').select(['id', 'name'])).as('user'))
|
|
114
|
+
.execute();
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
addRoute({
|
|
118
|
+
path: '/api/admin/audit/:eventId',
|
|
119
|
+
params: { eventId: z.uuid() },
|
|
120
|
+
async GET(req, params) {
|
|
121
|
+
await assertAdmin(this, req);
|
|
122
|
+
if (!params.eventId)
|
|
123
|
+
error(400, 'Missing event ID');
|
|
124
|
+
const event = await db
|
|
125
|
+
.selectFrom('audit_log')
|
|
126
|
+
.selectAll()
|
|
127
|
+
.select(eb => jsonObjectFrom(eb.selectFrom('users').whereRef('users.id', '=', 'audit_log.userId').selectAll())
|
|
128
|
+
.$castTo()
|
|
129
|
+
.as('user'))
|
|
130
|
+
.where('id', '=', params.eventId)
|
|
131
|
+
.executeTakeFirstOrThrow()
|
|
132
|
+
.catch(withError('Audit event not found', 404));
|
|
133
|
+
return event;
|
|
134
|
+
},
|
|
135
|
+
});
|
package/dist/api/index.d.ts
CHANGED
package/dist/api/index.js
CHANGED
package/dist/api/metadata.js
CHANGED
|
@@ -8,9 +8,9 @@ import { error, getToken } from '../requests.js';
|
|
|
8
8
|
import { addRoute, routes } from '../routes.js';
|
|
9
9
|
addRoute({
|
|
10
10
|
path: '/api/metadata',
|
|
11
|
-
async GET(
|
|
11
|
+
async GET(request) {
|
|
12
12
|
if (!config.debug) {
|
|
13
|
-
const token = getToken(
|
|
13
|
+
const token = getToken(request);
|
|
14
14
|
if (!token)
|
|
15
15
|
error(401, 'Missing session token');
|
|
16
16
|
const session = await getSessionAndUser(token);
|
|
@@ -39,7 +39,7 @@ addRoute({
|
|
|
39
39
|
});
|
|
40
40
|
addRoute({
|
|
41
41
|
path: '/api/apps',
|
|
42
|
-
async GET(
|
|
42
|
+
async GET() {
|
|
43
43
|
const result = [];
|
|
44
44
|
for (const app of apps.values()) {
|
|
45
45
|
if (config.apps.disabled.includes(app.id))
|
package/dist/api/passkeys.js
CHANGED
|
@@ -10,15 +10,15 @@ addRoute({
|
|
|
10
10
|
params: {
|
|
11
11
|
id: z.string(),
|
|
12
12
|
},
|
|
13
|
-
async GET(
|
|
14
|
-
const passkey = await getPasskey(
|
|
15
|
-
await checkAuthForUser(
|
|
13
|
+
async GET(request, params) {
|
|
14
|
+
const passkey = await getPasskey(params.id);
|
|
15
|
+
await checkAuthForUser(request, passkey.userId);
|
|
16
16
|
return omit(passkey, 'counter', 'publicKey');
|
|
17
17
|
},
|
|
18
|
-
async PATCH(
|
|
19
|
-
const body = await parseBody(
|
|
20
|
-
const passkey = await getPasskey(
|
|
21
|
-
await checkAuthForUser(
|
|
18
|
+
async PATCH(request, params) {
|
|
19
|
+
const body = await parseBody(request, PasskeyChangeable);
|
|
20
|
+
const passkey = await getPasskey(params.id);
|
|
21
|
+
await checkAuthForUser(request, passkey.userId);
|
|
22
22
|
const result = await db
|
|
23
23
|
.updateTable('passkeys')
|
|
24
24
|
.set(body)
|
|
@@ -28,9 +28,9 @@ addRoute({
|
|
|
28
28
|
.catch(withError('Could not update passkey'));
|
|
29
29
|
return omit(result, 'counter', 'publicKey');
|
|
30
30
|
},
|
|
31
|
-
async DELETE(
|
|
32
|
-
const passkey = await getPasskey(
|
|
33
|
-
await checkAuthForUser(
|
|
31
|
+
async DELETE(request, params) {
|
|
32
|
+
const passkey = await getPasskey(params.id);
|
|
33
|
+
await checkAuthForUser(request, passkey.userId);
|
|
34
34
|
const { count } = await db
|
|
35
35
|
.selectFrom('passkeys')
|
|
36
36
|
.select(db.fn.countAll().as('count'))
|
package/dist/api/register.js
CHANGED
|
@@ -10,10 +10,10 @@ import { createSessionData, error, parseBody, withError } from '../requests.js';
|
|
|
10
10
|
import { addRoute } from '../routes.js';
|
|
11
11
|
// Map of user ID => challenge
|
|
12
12
|
const registrations = new Map();
|
|
13
|
-
async function OPTIONS(
|
|
13
|
+
async function OPTIONS(request) {
|
|
14
14
|
if (!config.allow_new_users)
|
|
15
15
|
error(409, 'New user registration is disabled');
|
|
16
|
-
const { name, email } = await parseBody(
|
|
16
|
+
const { name, email } = await parseBody(request, z.object({ name: z.string().optional(), email: z.email().optional() }));
|
|
17
17
|
const userId = randomUUID();
|
|
18
18
|
const user = await getUser(userId).catch(() => null);
|
|
19
19
|
if (user)
|
|
@@ -34,10 +34,10 @@ async function OPTIONS(event) {
|
|
|
34
34
|
registrations.set(userId, options.challenge);
|
|
35
35
|
return { userId, options };
|
|
36
36
|
}
|
|
37
|
-
async function POST(
|
|
37
|
+
async function POST(request) {
|
|
38
38
|
if (!config.allow_new_users)
|
|
39
39
|
error(409, 'New user registration is disabled');
|
|
40
|
-
const { userId, email, name, response } = await parseBody(
|
|
40
|
+
const { userId, email, name, response } = await parseBody(request, UserRegistration);
|
|
41
41
|
const existing = await db.selectFrom('users').selectAll().where('email', '=', email.toLowerCase()).executeTakeFirst();
|
|
42
42
|
if (existing)
|
|
43
43
|
error(409, 'Email already in use');
|
package/dist/api/session.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { omit } from 'utilium';
|
|
2
|
+
import { audit } from '../audit.js';
|
|
2
3
|
import { getSessionAndUser } from '../auth.js';
|
|
3
4
|
import { database as db } from '../database.js';
|
|
4
5
|
import { error, getToken, stripUser, withError } from '../requests.js';
|
|
5
6
|
import { addRoute } from '../routes.js';
|
|
6
|
-
import { audit } from '../audit.js';
|
|
7
7
|
addRoute({
|
|
8
8
|
path: '/api/session',
|
|
9
|
-
async GET(
|
|
10
|
-
const token = getToken(
|
|
9
|
+
async GET(request) {
|
|
10
|
+
const token = getToken(request);
|
|
11
11
|
if (!token)
|
|
12
12
|
error(401, 'Missing token');
|
|
13
13
|
const result = await getSessionAndUser(token).catch(withError('Invalid session', 400));
|
|
@@ -16,8 +16,8 @@ addRoute({
|
|
|
16
16
|
user: stripUser(result.user, true),
|
|
17
17
|
};
|
|
18
18
|
},
|
|
19
|
-
async DELETE(
|
|
20
|
-
const token = getToken(
|
|
19
|
+
async DELETE(request) {
|
|
20
|
+
const token = getToken(request);
|
|
21
21
|
if (!token)
|
|
22
22
|
error(401, 'Missing token');
|
|
23
23
|
const result = await db
|
package/dist/api/users.js
CHANGED
|
@@ -18,8 +18,8 @@ const params = { id: z.uuid() };
|
|
|
18
18
|
*/
|
|
19
19
|
addRoute({
|
|
20
20
|
path: '/api/user_id',
|
|
21
|
-
async POST(
|
|
22
|
-
const { value } = await parseBody(
|
|
21
|
+
async POST(request) {
|
|
22
|
+
const { value } = await parseBody(request, z.object({ using: z.literal('email'), value: z.email() }));
|
|
23
23
|
const { id } = await db
|
|
24
24
|
.selectFrom('users')
|
|
25
25
|
.select('id')
|
|
@@ -32,16 +32,16 @@ addRoute({
|
|
|
32
32
|
addRoute({
|
|
33
33
|
path: '/api/users/:id',
|
|
34
34
|
params,
|
|
35
|
-
async GET(
|
|
36
|
-
const userId =
|
|
37
|
-
const auth = await checkAuthForUser(
|
|
35
|
+
async GET(request, params) {
|
|
36
|
+
const userId = params.id;
|
|
37
|
+
const auth = await checkAuthForUser(request, userId).catch(() => null);
|
|
38
38
|
const user = auth?.user || (await getUser(userId).catch(withError('User does not exist', 404)));
|
|
39
39
|
return stripUser(user, !!auth);
|
|
40
40
|
},
|
|
41
|
-
async PATCH(
|
|
42
|
-
const userId =
|
|
43
|
-
const body = await parseBody(
|
|
44
|
-
await checkAuthForUser(
|
|
41
|
+
async PATCH(request, params) {
|
|
42
|
+
const userId = params.id;
|
|
43
|
+
const body = await parseBody(request, UserChangeable);
|
|
44
|
+
await checkAuthForUser(request, userId);
|
|
45
45
|
if ('email' in body)
|
|
46
46
|
body.emailVerified = null;
|
|
47
47
|
if ('preferences' in body)
|
|
@@ -55,9 +55,9 @@ addRoute({
|
|
|
55
55
|
.catch(withError('Failed to update user'));
|
|
56
56
|
return stripUser(result, true);
|
|
57
57
|
},
|
|
58
|
-
async DELETE(
|
|
59
|
-
const userId =
|
|
60
|
-
await checkAuthForUser(
|
|
58
|
+
async DELETE(request, params) {
|
|
59
|
+
const userId = params.id;
|
|
60
|
+
await checkAuthForUser(request, userId, true);
|
|
61
61
|
const result = await db
|
|
62
62
|
.deleteFrom('users')
|
|
63
63
|
.where('id', '=', userId)
|
|
@@ -71,9 +71,9 @@ addRoute({
|
|
|
71
71
|
addRoute({
|
|
72
72
|
path: '/api/users/:id/full',
|
|
73
73
|
params,
|
|
74
|
-
async GET(
|
|
75
|
-
const userId =
|
|
76
|
-
const { user } = await checkAuthForUser(
|
|
74
|
+
async GET(request, params) {
|
|
75
|
+
const userId = params.id;
|
|
76
|
+
const { user } = await checkAuthForUser(request, userId);
|
|
77
77
|
const sessions = await getSessions(userId);
|
|
78
78
|
return {
|
|
79
79
|
...stripUser(user, true),
|
|
@@ -84,9 +84,9 @@ addRoute({
|
|
|
84
84
|
addRoute({
|
|
85
85
|
path: '/api/users/:id/auth',
|
|
86
86
|
params,
|
|
87
|
-
async OPTIONS(
|
|
88
|
-
const userId =
|
|
89
|
-
const { type } = await parseBody(
|
|
87
|
+
async OPTIONS(request, params) {
|
|
88
|
+
const userId = params.id;
|
|
89
|
+
const { type } = await parseBody(request, UserAuthOptions);
|
|
90
90
|
const user = await getUser(userId).catch(withError('User does not exist', 404));
|
|
91
91
|
if (user.isSuspended)
|
|
92
92
|
error(403, 'User is suspended');
|
|
@@ -100,9 +100,9 @@ addRoute({
|
|
|
100
100
|
challenges.set(userId, { data: options.challenge, type });
|
|
101
101
|
return options;
|
|
102
102
|
},
|
|
103
|
-
async POST(
|
|
104
|
-
const userId =
|
|
105
|
-
const response = await parseBody(
|
|
103
|
+
async POST(request, params) {
|
|
104
|
+
const userId = params.id;
|
|
105
|
+
const response = await parseBody(request, PasskeyAuthenticationResponse);
|
|
106
106
|
const auth = challenges.get(userId);
|
|
107
107
|
if (!auth)
|
|
108
108
|
error(404, 'No challenge');
|
|
@@ -140,10 +140,10 @@ addRoute({
|
|
|
140
140
|
/**
|
|
141
141
|
* Get passkey registration options for a user.
|
|
142
142
|
*/
|
|
143
|
-
async OPTIONS(
|
|
144
|
-
const userId =
|
|
143
|
+
async OPTIONS(request, params) {
|
|
144
|
+
const userId = params.id;
|
|
145
145
|
const existing = await getPasskeysByUserId(userId);
|
|
146
|
-
const { user } = await checkAuthForUser(
|
|
146
|
+
const { user } = await checkAuthForUser(request, userId);
|
|
147
147
|
const options = await webauthn.generateRegistrationOptions({
|
|
148
148
|
rpName: config.auth.rp_name,
|
|
149
149
|
rpID: config.auth.rp_id,
|
|
@@ -163,19 +163,19 @@ addRoute({
|
|
|
163
163
|
/**
|
|
164
164
|
* Get passkeys for a user.
|
|
165
165
|
*/
|
|
166
|
-
async GET(
|
|
167
|
-
const userId =
|
|
168
|
-
await checkAuthForUser(
|
|
166
|
+
async GET(request, params) {
|
|
167
|
+
const userId = params.id;
|
|
168
|
+
await checkAuthForUser(request, userId);
|
|
169
169
|
const passkeys = await getPasskeysByUserId(userId);
|
|
170
170
|
return passkeys.map(p => omit(p, 'publicKey', 'counter'));
|
|
171
171
|
},
|
|
172
172
|
/**
|
|
173
173
|
* Register a new passkey for an existing user.
|
|
174
174
|
*/
|
|
175
|
-
async PUT(
|
|
176
|
-
const userId =
|
|
177
|
-
const response = await parseBody(
|
|
178
|
-
await checkAuthForUser(
|
|
175
|
+
async PUT(request, params) {
|
|
176
|
+
const userId = params.id;
|
|
177
|
+
const response = await parseBody(request, PasskeyRegistration);
|
|
178
|
+
await checkAuthForUser(request, userId);
|
|
179
179
|
const expectedChallenge = registrations.get(userId);
|
|
180
180
|
if (!expectedChallenge)
|
|
181
181
|
error(404, 'No registration challenge found for this user');
|
|
@@ -202,15 +202,15 @@ addRoute({
|
|
|
202
202
|
addRoute({
|
|
203
203
|
path: '/api/users/:id/sessions',
|
|
204
204
|
params,
|
|
205
|
-
async GET(
|
|
206
|
-
const userId =
|
|
207
|
-
await checkAuthForUser(
|
|
205
|
+
async GET(request, params) {
|
|
206
|
+
const userId = params.id;
|
|
207
|
+
await checkAuthForUser(request, userId);
|
|
208
208
|
return (await getSessions(userId).catch(e => error(503, 'Failed to get sessions' + (config.debug ? ': ' + e : '')))).map(s => omit(s, 'token'));
|
|
209
209
|
},
|
|
210
|
-
async DELETE(
|
|
211
|
-
const userId =
|
|
212
|
-
const body = await parseBody(
|
|
213
|
-
await checkAuthForUser(
|
|
210
|
+
async DELETE(request, params) {
|
|
211
|
+
const userId = params.id;
|
|
212
|
+
const body = await parseBody(request, LogoutSessions);
|
|
213
|
+
await checkAuthForUser(request, userId, body.confirm_all);
|
|
214
214
|
if (!body.confirm_all && !Array.isArray(body.id))
|
|
215
215
|
error(400, 'Invalid request body');
|
|
216
216
|
const query = body.confirm_all ? db.deleteFrom('sessions') : db.deleteFrom('sessions').where('sessions.id', 'in', body.id);
|
|
@@ -226,27 +226,27 @@ addRoute({
|
|
|
226
226
|
addRoute({
|
|
227
227
|
path: '/api/users/:id/verify_email',
|
|
228
228
|
params,
|
|
229
|
-
async OPTIONS(
|
|
230
|
-
const userId =
|
|
229
|
+
async OPTIONS(request, params) {
|
|
230
|
+
const userId = params.id;
|
|
231
231
|
if (!config.auth.email_verification)
|
|
232
232
|
return { enabled: false };
|
|
233
|
-
await checkAuthForUser(
|
|
233
|
+
await checkAuthForUser(request, userId);
|
|
234
234
|
if (!config.auth.email_verification)
|
|
235
235
|
return { enabled: false };
|
|
236
236
|
return { enabled: true };
|
|
237
237
|
},
|
|
238
|
-
async GET(
|
|
239
|
-
const userId =
|
|
240
|
-
const { user } = await checkAuthForUser(
|
|
238
|
+
async GET(request, params) {
|
|
239
|
+
const userId = params.id;
|
|
240
|
+
const { user } = await checkAuthForUser(request, userId);
|
|
241
241
|
if (user.emailVerified)
|
|
242
242
|
error(409, 'Email already verified');
|
|
243
243
|
const verification = await createVerification('verify_email', userId, config.auth.verification_timeout * 60);
|
|
244
244
|
return omit(verification, 'token', 'role');
|
|
245
245
|
},
|
|
246
|
-
async POST(
|
|
247
|
-
const userId =
|
|
248
|
-
const { token } = await parseBody(
|
|
249
|
-
const { user } = await checkAuthForUser(
|
|
246
|
+
async POST(request, params) {
|
|
247
|
+
const userId = params.id;
|
|
248
|
+
const { token } = await parseBody(request, z.object({ token: z.string() }));
|
|
249
|
+
const { user } = await checkAuthForUser(request, userId);
|
|
250
250
|
if (user.emailVerified)
|
|
251
251
|
error(409, 'Email already verified');
|
|
252
252
|
await useVerification('verify_email', userId, token).catch(withError('Invalid or expired verification token', 400));
|