initial commit
Some checks failed
deploy / build-and-deploy (push) Failing after 21s

This commit is contained in:
2025-05-18 13:16:20 +02:00
commit 60f3f8a096
148 changed files with 17900 additions and 0 deletions

View File

@ -0,0 +1,16 @@
---
import AdminLayout from '@layouts/admin/AdminLayout.astro';
import Admins from '@app/admin/admins/Admins.svelte';
import SidebarActions from '@app/admin/admins/SidebarActions.svelte';
import { Session } from '@util/session.ts';
import { Permissions } from '@util/permissions.ts';
import { BASE_PATH } from 'astro:env/client';
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Admin);
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
---
<AdminLayout title="Website Admins">
<SidebarActions slot="actions" client:load />
<Admins client:load />
</AdminLayout>

View File

@ -0,0 +1,14 @@
---
import Feedback from '@app/admin/feedback/Feedback.svelte';
import AdminLayout from '@layouts/admin/AdminLayout.astro';
import { Session } from '@util/session.ts';
import { Permissions } from '@util/permissions.ts';
import { BASE_PATH } from 'astro:env/client';
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Feedback);
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
---
<AdminLayout title="Feedback">
<Feedback client:load />
</AdminLayout>

View File

@ -0,0 +1,10 @@
---
import { Session } from '@util/session.ts';
import { BASE_PATH } from 'astro:env/client';
import AdminLayout from '@layouts/admin/AdminLayout.astro';
const session = Session.sessionFromCookies(Astro.cookies);
if (!session) return Astro.redirect(`${BASE_PATH}/admin/login`);
---
<AdminLayout title="Admin Panel" />

View File

@ -0,0 +1,50 @@
---
import AdminLoginLayout from '@layouts/admin/AdminLoginLayout.astro';
import Password from '@components/input/Password.svelte';
import Input from '@components/input/Input.svelte';
import Popup from '@components/popup/Popup.svelte';
---
<AdminLoginLayout title="Login">
<div class="flex justify-center items-center w-full h-screen">
<div class="card w-96 px-6 py-6 shadow-lg">
<h1 class="text-3xl text-center">Admin Login</h1>
<div class="divider"></div>
<form id="login" class="flex flex-col items-center">
<div>
<Input id="username" type="text" label="Nutzername" required />
<Password id="password" label="Passwort" required />
</div>
<div class="mt-4">
<button class="btn btn-neutral">Login</button>
</div>
</form>
</div>
</div>
</AdminLoginLayout>
<Popup client:idle />
<script>
import { actions } from 'astro:actions';
import { BASE_PATH } from 'astro:env/client';
import { popupState } from '@components/popup/Popup';
const loginForm = document.getElementById('login') as HTMLFormElement;
loginForm.addEventListener('submit', async (e) => {
e.preventDefault();
const usernameInput = document.getElementById('username') as HTMLInputElement;
const passwordInput = document.getElementById('password') as HTMLInputElement;
const { error } = await actions.session.login({
username: usernameInput.value,
password: passwordInput.value
});
if (error) {
popupState.set({ type: 'error', title: 'Fehler', message: error.message });
return;
}
window.location.href = `${BASE_PATH}/admin`;
});
</script>

View File

@ -0,0 +1,16 @@
---
import { Session } from '@util/session';
import { Permissions } from '@util/permissions';
import { BASE_PATH } from 'astro:env/client';
import AdminLayout from '@layouts/admin/AdminLayout.astro';
import SidebarActions from '@app/admin/reports/SidebarActions.svelte';
import Reports from '@app/admin/reports/Reports.svelte';
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Reports);
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
---
<AdminLayout title="Reports">
<SidebarActions slot="actions" client:load />
<Reports client:load />
</AdminLayout>

View File

@ -0,0 +1,17 @@
---
import AdminLayout from '@layouts/admin/AdminLayout.astro';
import Settings from '@app/admin/settings/Settings.svelte';
import { db } from '@db/database.ts';
import { Session } from '@util/session.ts';
import { Permissions } from '@util/permissions.ts';
import { BASE_PATH } from 'astro:env/client';
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Settings);
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
const settings = await db.getSettings({});
---
<AdminLayout title="Einstellungen">
<Settings {settings} client:load />
</AdminLayout>

View File

@ -0,0 +1,16 @@
---
import AdminLayout from '@layouts/admin/AdminLayout.astro';
import SidebarActions from '@app/admin/teams/SidebarActions.svelte';
import Teams from '@app/admin/teams/Teams.svelte';
import { Session } from '@util/session.ts';
import { Permissions } from '@util/permissions.ts';
import { BASE_PATH } from 'astro:env/client';
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Admin);
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
---
<AdminLayout title="Teams">
<SidebarActions slot="actions" client:load />
<Teams client:load />
</AdminLayout>

View File

@ -0,0 +1,16 @@
---
import AdminLayout from '@layouts/admin/AdminLayout.astro';
import Users from '@app/admin/users/Users.svelte';
import SidebarActions from '@app/admin/users/SidebarActions.svelte';
import { Session } from '@util/session.ts';
import { Permissions } from '@util/permissions.ts';
import { BASE_PATH } from 'astro:env/client';
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Admin);
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
---
<AdminLayout title="Registrierte Nutzer">
<SidebarActions slot="actions" client:load />
<Users client:load />
</AdminLayout>