diff --git a/src/routes/(front)/api/login/+server.js b/src/routes/(front)/api/login/+server.js
new file mode 100644
index 0000000..2e3b3d2
--- /dev/null
+++ b/src/routes/(front)/api/login/+server.js
@@ -0,0 +1,19 @@
+import db from '$lib/db/db.server';
+import { usersTable } from '$lib/db/schema.server';
+import { json } from '@sveltejs/kit';
+import { eq } from 'drizzle-orm';
+
+/** @type {import('./$types').RequestHandler} */
+export async function POST(event) {
+ let data = await event.request.json();
+ if(!data.token) return json({success: false});
+
+ let [user] = await db.select().from(usersTable).where(eq(usersTable.id, data.token));
+ if(!user) return json({success:false});
+
+ event.cookies.set("token", user.id, {
+ path: "/"
+ });
+
+ return json({ success: true, user });
+}
\ No newline at end of file
diff --git a/src/routes/(front)/api/me/+server.js b/src/routes/(front)/api/me/+server.js
new file mode 100644
index 0000000..d121218
--- /dev/null
+++ b/src/routes/(front)/api/me/+server.js
@@ -0,0 +1,15 @@
+import db from '$lib/db/db.server';
+import { usersTable } from '$lib/db/schema.server';
+import { json } from '@sveltejs/kit';
+import { eq } from 'drizzle-orm';
+
+/** @type {import('./$types').RequestHandler} */
+export async function GET(event) {
+ let token = event.cookies.get("token");
+ if(!token) return json({success: false});
+
+ let [user] = await db.select().from(usersTable).where(eq(usersTable.id, token));
+ if(!user) return json({success:false});
+
+ return json({ success: true, user });
+}
\ No newline at end of file
diff --git a/src/routes/admin/api/users/+server.js b/src/routes/admin/api/users/+server.js
new file mode 100644
index 0000000..52f26d1
--- /dev/null
+++ b/src/routes/admin/api/users/+server.js
@@ -0,0 +1,27 @@
+import { json } from '@sveltejs/kit';
+import db from '$lib/db/db.server';
+import { usersTable } from '$lib/db/schema.server';
+import { eq } from 'drizzle-orm';
+import { getRole } from '$lib/auth/utils';
+
+/** @type {import('./$types').RequestHandler} */
+export async function GET(event) {
+ console.log(getRole(event))
+ const users = await db.select().from(usersTable);
+
+ return json({ success: true, users });
+}
+
+/** @type {import('./$types').RequestHandler} */
+export async function PUT({ request }) {
+ const body = await request.json();
+ if (!body.role || !body.id) return new Response(null, {
+ status: 400
+ });
+
+ db.update(usersTable).set({
+ role: body.role
+ }).where(eq(usersTable.id, body.id));
+
+ return json({success: true});
+}
\ No newline at end of file
diff --git a/src/routes/admin/books/+page.server.ts b/src/routes/admin/books/+page.server.ts
new file mode 100644
index 0000000..81a599e
--- /dev/null
+++ b/src/routes/admin/books/+page.server.ts
@@ -0,0 +1,61 @@
+import db from "$lib/db/db.server";
+import { booksTable, usersTable } from "$lib/db/schema.server";
+import { json, type Actions, type ServerLoadEvent } from "@sveltejs/kit";
+import type { PageServerLoad } from "./$types";
+import { eq } from "drizzle-orm";
+
+
+export const load: PageServerLoad = async () => {
+ const books = await db.select().from(booksTable);
+
+ return { books };
+}
+
+export const actions: Actions = {
+ create: async (event) => {
+ // console.log("hello");
+ const data = await event.request.formData();
+ if(!data.has("name") || !data.has("userRole")) return json({
+ success: false,
+ message: "Missing property"
+ });
+
+ await db.insert(booksTable).values({
+ name: data.get("name")?.valueOf(),
+ type: data.get("type")?.valueOf()
+ });
+
+ return json({
+ success: true
+ })
+ },
+ updateType: async (event) => {
+ const data = await event.request.json();
+
+ if(!data.id || !data.type) return {
+ success: false,
+ message: "Missing property"
+ };
+
+ await db.update(booksTable).set({
+ type: data.type
+ }).where(eq(booksTable.id, data.id));
+
+ return {
+ success: true
+ }
+ },
+ delete: async (event) => {
+ const data = await event.request.json();
+
+ if(!data.id) return json({
+ success: false
+ });
+
+ await db.delete(booksTable).where(eq(data.id, booksTable.id));
+
+ return {
+ success: true
+ }
+ }
+};
\ No newline at end of file
diff --git a/src/routes/admin/books/+page.svelte b/src/routes/admin/books/+page.svelte
new file mode 100644
index 0000000..3b9b365
--- /dev/null
+++ b/src/routes/admin/books/+page.svelte
@@ -0,0 +1,81 @@
+
+
+
diff --git a/src/routes/admin/users/+page.server.ts b/src/routes/admin/users/+page.server.ts
index e434970..18ee352 100644
--- a/src/routes/admin/users/+page.server.ts
+++ b/src/routes/admin/users/+page.server.ts
@@ -1,7 +1,53 @@
-import type { Actions } from "@sveltejs/kit";
+import db from "$lib/db/db.server";
+import { usersTable } from "$lib/db/schema.server";
+import { json, type Actions, type ServerLoadEvent } from "@sveltejs/kit";
+import type { PageServerLoad } from "./$types";
+import { eq } from "drizzle-orm";
+
+export const load: PageServerLoad = async () => {
+ const users = await db.select().from(usersTable);
+
+ return { users };
+}
export const actions: Actions = {
- default: async (event) => {
- console.log(event.request.body);
+ create: async (event) => {
+ // console.log("hello");
+ const data = await event.request.formData();
+ if(!data.has("name") || !data.has("userRole")) return json({
+ success: false,
+ message: "Missing property"
+ });
+
+ await db.insert(usersTable).values({
+ name: data.get("name")?.valueOf(),
+ role: data.get("userRole")?.valueOf(),
+ discord_id: data.get("discordid")?.valueOf()
+ });
},
+ updateRole: async (event) => {
+ const data = await event.request.json();
+
+ if(!data.user_id || !data.role) return json({
+ success: false,
+ message: "Missing property"
+ });
+
+ db.update(usersTable).set({
+ role: data.role
+ }).where(eq(usersTable.id, data.user_id));
+ },
+ delete: async (event) => {
+ const data = await event.request.json();
+
+ if(!data.id) return json({
+ success: false
+ });
+
+ await db.delete(usersTable).where(eq(data.id, usersTable.id));
+
+ return {
+ success: true
+ }
+ }
};
\ No newline at end of file
diff --git a/src/routes/admin/users/+page.svelte b/src/routes/admin/users/+page.svelte
index 6cca760..a72e98f 100644
--- a/src/routes/admin/users/+page.svelte
+++ b/src/routes/admin/users/+page.svelte
@@ -2,22 +2,17 @@
import { Button } from "$lib/components/ui/button/index.js";
import Nav from "$lib/admin/nav.svelte";
import * as Avatar from "$lib/components/ui/avatar";
- import UserRoleDropdown from "$lib/admin/user-role-dropdown.svelte";
+ import Dropdown from "$lib/admin/dropdown.svelte";
import * as Dialog from "$lib/components/ui/dialog";
import { Label } from "$lib/components/ui/label";
import {Input} from "$lib/components/ui/input";
+ import {X} from "lucide-svelte";
+ import { onMount } from "svelte";
+ import type { PageServerLoad } from "./$types";
+ import type { PageServerData } from "./$types";
- const users: { username: string; role: "Member" | "Admin"; }[] = [
- {
- username: "Joe Biden",
- role: "Member",
- },
- {
- username: "BoeJiden",
- role: "Admin",
- },
- ];
-
+ export let data: PageServerData;
+ let users = data.users;