+
+ {$page.status}
+
+
Thats an error
+ {#if $page.status === 404}
+
We cant seem to find the page you are looking for.
+
The address may be mistyped, or the page may have moved or been deleted.
+ {/if}
+ {#if $page.status === 403}
+
You dont have access to this page!
+
Please contact your admin if you think this is a mistake
+ {/if}
+ {#if $page.status === 401}
+
You must be signed-in to view this page!
+ {/if}
+ {#if $page.status === 500}
+
This one is on our end...
+
We are working to resolve this as fast as possible.
+ {/if}
+ {#if $page.status !== 404 && $page.status !== 403 && $page.status !== 401 && $page.status !== 500}
+
An unexpected error has occurred.
+
Please try again later
+ {/if}
+
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 4fc1558..8373979 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -2,7 +2,7 @@
import '../app.css';
import { onMount } from 'svelte';
import { userState } from '$lib/shared.svelte';
- // import { userState } from '$lib/shared.svelte';
+ import { PERMISSIONS } from '$lib/consts';
let currentTheme: string = $state('');
@@ -42,7 +42,7 @@
@@ -57,34 +57,28 @@
/>
About
- {#if (userState.perms & 0b00000001) !== 0}
+ {#if (userState.perms & PERMISSIONS.VIEW_POSTINGS) !== 0}
Listings
{/if}
- {#if (userState.perms & 0b00001000) !== 0}
-
Administration
{/if}
-
diff --git a/src/routes/account/+page.svelte b/src/routes/account/+page.svelte
new file mode 100644
index 0000000..53a29dc
--- /dev/null
+++ b/src/routes/account/+page.svelte
@@ -0,0 +1,9 @@
+
diff --git a/src/routes/administration/+layout.svelte b/src/routes/admin/+layout.svelte
similarity index 67%
rename from src/routes/administration/+layout.svelte
rename to src/routes/admin/+layout.svelte
index 1d0908c..d6217cd 100644
--- a/src/routes/administration/+layout.svelte
+++ b/src/routes/admin/+layout.svelte
@@ -7,28 +7,27 @@
-
+
{@render children()}
diff --git a/src/routes/admin/+page.svelte b/src/routes/admin/+page.svelte
new file mode 100644
index 0000000..493e7f7
--- /dev/null
+++ b/src/routes/admin/+page.svelte
@@ -0,0 +1,7 @@
+
diff --git a/src/routes/administration/postings/+page.svelte b/src/routes/admin/postings/+page.svelte
similarity index 100%
rename from src/routes/administration/postings/+page.svelte
rename to src/routes/admin/postings/+page.svelte
diff --git a/src/routes/admin/tags/+page.server.ts b/src/routes/admin/tags/+page.server.ts
new file mode 100644
index 0000000..6d41b1a
--- /dev/null
+++ b/src/routes/admin/tags/+page.server.ts
@@ -0,0 +1,14 @@
+import type { PageServerLoad } from './$types';
+import { getUserPerms, getTags } from '$lib/db/index.server';
+import { PERMISSIONS } from '$lib/consts';
+import { error } from '@sveltejs/kit';
+
+export const load: PageServerLoad = async ({ cookies }) => {
+ const perms = getUserPerms(cookies);
+ if (perms >= 0 && (perms & PERMISSIONS.MANAGE_TAGS) > 0) {
+ return {
+ tags: await getTags()
+ };
+ }
+ error(401, 'Unauthorized');
+};
diff --git a/src/routes/admin/tags/+page.svelte b/src/routes/admin/tags/+page.svelte
new file mode 100644
index 0000000..29f29b0
--- /dev/null
+++ b/src/routes/admin/tags/+page.svelte
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+ Tag Management (Total: {data.tags?.length || 0})
+
+
Create New Tag
+
+
+
+
+
+
+ | ID |
+ Name |
+ |
+
+
+
+ {#if data.tags !== undefined}
+ {#each data.tags as tag}
+
+ | {tag.id} |
+ {tag.display_name} |
+
+ info
+ edit
+ |
+
+ {/each}
+ {/if}
+
+
+
+
+
diff --git a/src/routes/admin/users/+page.server.ts b/src/routes/admin/users/+page.server.ts
new file mode 100644
index 0000000..1893f00
--- /dev/null
+++ b/src/routes/admin/users/+page.server.ts
@@ -0,0 +1,14 @@
+import type { PageServerLoad } from './$types';
+import { getUserPerms, getUsers } from '$lib/db/index.server';
+import { PERMISSIONS } from '$lib/consts';
+import { error } from '@sveltejs/kit';
+
+export const load: PageServerLoad = async ({ cookies }) => {
+ const perms = getUserPerms(cookies);
+ if (perms >= 0 && (perms & PERMISSIONS.MANAGE_USERS) > 0) {
+ return {
+ users: await getUsers()
+ };
+ }
+ error(401, 'Unauthorized');
+};
diff --git a/src/routes/admin/users/+page.svelte b/src/routes/admin/users/+page.svelte
new file mode 100644
index 0000000..7a7a72b
--- /dev/null
+++ b/src/routes/admin/users/+page.svelte
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+ User Account Management (Total: {data.users?.length || 0})
+
+
Create New User
+
+
+
+
+
+
+ | ID |
+ Username |
+ Permissions |
+ Created |
+ Last Sign-In |
+ Active |
+ |
+
+
+
+ {#if data.users !== undefined}
+ {#each data.users as user}
+
+ | {user.id} |
+ {user.username} |
+ {user.perms} |
+ {user.created_at?.toLocaleDateString('en-US', dateFormatOptions) ||
+ 'unknown'} |
+ {user.last_signin?.toLocaleDateString('en-US', dateFormatOptions) ||
+ 'unknown'} |
+
+ {user.active ? 'check' : 'close'}
+ |
+
+ person
+ edit
+ |
+
+ {/each}
+ {/if}
+
+
+
+
+
diff --git a/src/routes/administration/users/+page.svelte b/src/routes/administration/users/+page.svelte
deleted file mode 100644
index f569a20..0000000
--- a/src/routes/administration/users/+page.svelte
+++ /dev/null
@@ -1,18 +0,0 @@
-
diff --git a/src/routes/administration/tags/+page.svelte b/src/routes/register/+page.svelte
similarity index 100%
rename from src/routes/administration/tags/+page.svelte
rename to src/routes/register/+page.svelte
diff --git a/src/routes/register/employer/+page.svelte b/src/routes/register/employer/+page.svelte
new file mode 100644
index 0000000..e69de29
diff --git a/src/routes/register/user/+page.svelte b/src/routes/register/user/+page.svelte
new file mode 100644
index 0000000..e69de29
diff --git a/src/routes/signin/+page.server.ts b/src/routes/signin/+page.server.ts
index a2e6794..caded21 100644
--- a/src/routes/signin/+page.server.ts
+++ b/src/routes/signin/+page.server.ts
@@ -38,7 +38,7 @@ export const actions: Actions = {
}
},
- login: async ({ request, cookies }) => {
+ signin: async ({ request, cookies }) => {
const data = await request.formData();
const username = data.get('username')?.toString();
const password = data.get('password')?.toString();
diff --git a/src/routes/signin/+page.svelte b/src/routes/signin/+page.svelte
index 45d1d32..50507fc 100644
--- a/src/routes/signin/+page.svelte
+++ b/src/routes/signin/+page.svelte
@@ -1,22 +1,88 @@
-