show admin pages only when permissions are correct
This commit is contained in:
parent
4830551edc
commit
d0c40e1d81
@ -6,7 +6,7 @@ export const load: LayoutServerLoad = async ({ cookies }) => {
|
|||||||
const session = getSession(cookies);
|
const session = getSession(cookies);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
userCount: session?.permissions.userRead() ? await User.count() : 0,
|
userCount: session?.permissions.userRead() ? await User.count() : null,
|
||||||
adminCount: session?.permissions.adminRead() ? await Admin.count() : 0
|
adminCount: session?.permissions.adminRead() ? await Admin.count() : null
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -19,27 +19,31 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
export let data: LayoutData;
|
export let data: LayoutData;
|
||||||
$adminCount = data.adminCount;
|
if (data.adminCount) $adminCount = data.adminCount;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#if $page.url.pathname !== `${env.PUBLIC_BASE_PATH}/admin/login`}
|
{#if $page.url.pathname !== `${env.PUBLIC_BASE_PATH}/admin/login`}
|
||||||
<div class="flex h-screen">
|
<div class="flex h-screen">
|
||||||
<div class="h-full w-max">
|
<div class="h-full">
|
||||||
<ul class="menu p-4 w-fit h-full bg-base-200 text-base-content">
|
<ul class="menu p-4 w-max h-full bg-base-200 text-base-content">
|
||||||
<li>
|
{#if data.userCount != null}
|
||||||
<a href="{env.PUBLIC_BASE_PATH}/admin/users">
|
<li>
|
||||||
<IconOutline name="user-group-outline" />
|
<a href="{env.PUBLIC_BASE_PATH}/admin/users">
|
||||||
<span class="ml-1">Registrierte Nutzer</span>
|
<IconOutline name="user-group-outline" />
|
||||||
<div class="badge">{data.userCount}</div>
|
<span class="ml-1">Registrierte Nutzer</span>
|
||||||
</a>
|
<div class="badge">{data.userCount}</div>
|
||||||
</li>
|
</a>
|
||||||
<li>
|
</li>
|
||||||
<a href="{env.PUBLIC_BASE_PATH}/admin/admin">
|
{/if}
|
||||||
<IconOutline name="users-outline" />
|
{#if data.adminCount != null}
|
||||||
<span class="ml-1">Website Admins</span>
|
<li>
|
||||||
<div class="badge">{$adminCount}</div>
|
<a href="{env.PUBLIC_BASE_PATH}/admin/admin">
|
||||||
</a>
|
<IconOutline name="users-outline" />
|
||||||
</li>
|
<span class="ml-1">Website Admins</span>
|
||||||
|
<div class="badge">{$adminCount}</div>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{/if}
|
||||||
<li class="mt-auto">
|
<li class="mt-auto">
|
||||||
<button on:click={(e) => buttonTriggeredRequest(e, logout())}>
|
<button on:click={(e) => buttonTriggeredRequest(e, logout())}>
|
||||||
<IconOutline name="arrow-left-on-rectangle-outline" />
|
<IconOutline name="arrow-left-on-rectangle-outline" />
|
||||||
|
@ -2,8 +2,13 @@ import type { PageServerLoad } from './$types';
|
|||||||
import { Admin } from '$lib/server/database';
|
import { Admin } from '$lib/server/database';
|
||||||
import { getSession } from '$lib/server/session';
|
import { getSession } from '$lib/server/session';
|
||||||
import { Permissions } from '$lib/permissions';
|
import { Permissions } from '$lib/permissions';
|
||||||
|
import { redirect } from '@sveltejs/kit';
|
||||||
|
import { env } from '$env/dynamic/public';
|
||||||
|
|
||||||
|
export const load: PageServerLoad = async ({ parent, cookies }) => {
|
||||||
|
const { adminCount } = await parent();
|
||||||
|
if (adminCount == null) throw redirect(302, `${env.PUBLIC_BASE_PATH}/admin`);
|
||||||
|
|
||||||
export const load: PageServerLoad = async ({ cookies }) => {
|
|
||||||
let admins: (typeof Admin.prototype)[] = [];
|
let admins: (typeof Admin.prototype)[] = [];
|
||||||
if (getSession(cookies, { permissions: [Permissions.AdminRead] }) != null) {
|
if (getSession(cookies, { permissions: [Permissions.AdminRead] }) != null) {
|
||||||
admins = await Admin.findAll({ raw: true, attributes: { exclude: ['password'] } });
|
admins = await Admin.findAll({ raw: true, attributes: { exclude: ['password'] } });
|
||||||
|
@ -2,8 +2,13 @@ import type { PageServerLoad } from './$types';
|
|||||||
import { User } from '$lib/server/database';
|
import { User } from '$lib/server/database';
|
||||||
import { getSession } from '$lib/server/session';
|
import { getSession } from '$lib/server/session';
|
||||||
import { Permissions } from '$lib/permissions';
|
import { Permissions } from '$lib/permissions';
|
||||||
|
import { redirect } from '@sveltejs/kit';
|
||||||
|
import { env } from '$env/dynamic/public';
|
||||||
|
|
||||||
|
export const load: PageServerLoad = async ({ parent, cookies }) => {
|
||||||
|
const { userCount } = await parent();
|
||||||
|
if (userCount == null) throw redirect(302, `${env.PUBLIC_BASE_PATH}/admin`);
|
||||||
|
|
||||||
export const load: PageServerLoad = async ({ cookies }) => {
|
|
||||||
return {
|
return {
|
||||||
count:
|
count:
|
||||||
getSession(cookies, { permissions: [Permissions.UserRead] }) != null ? await User.count() : 0
|
getSession(cookies, { permissions: [Permissions.UserRead] }) != null ? await User.count() : 0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user