diff --git a/src/routes/(kener)/+layout.server.js b/src/routes/(kener)/+layout.server.js
index 94411f7..6c86872 100644
--- a/src/routes/(kener)/+layout.server.js
+++ b/src/routes/(kener)/+layout.server.js
@@ -1,8 +1,19 @@
// @ts-nocheck
import i18n from "$lib/i18n/server";
-import { GetAllSiteData } from "$lib/server/controllers/controller.js";
+import { redirect } from "@sveltejs/kit";
+import { base } from "$app/paths";
+import { GetAllSiteData, IsSetupComplete } from "$lib/server/controllers/controller.js";
export async function load({ params, route, url, cookies, request }) {
+ let isSetupComplete = await IsSetupComplete();
+ if (!isSetupComplete) {
+ throw redirect(302, base + "/setup");
+ }
+
+ if (process.env.KENER_SECRET_KEY === undefined) {
+ throw redirect(302, base + "/setup");
+ }
+
let site = await GetAllSiteData();
const headers = request.headers;
const userAgent = headers.get("user-agent");
diff --git a/src/routes/(kener)/+layout.svelte b/src/routes/(kener)/+layout.svelte
index 444ecd7..747a9b4 100644
--- a/src/routes/(kener)/+layout.svelte
+++ b/src/routes/(kener)/+layout.svelte
@@ -11,7 +11,6 @@
import * as DropdownMenu from "$lib/components/ui/dropdown-menu";
import { analyticsEvent } from "$lib/analytics";
import { setMode, mode, ModeWatcher } from "mode-watcher";
- // import { Termo } from "termo";
export let data;
let defaultLocaleKey = data.selectedLang;
diff --git a/src/routes/(manage)/+layout.server.js b/src/routes/(manage)/+layout.server.js
index 8419b00..9049af7 100644
--- a/src/routes/(manage)/+layout.server.js
+++ b/src/routes/(manage)/+layout.server.js
@@ -11,7 +11,11 @@ function maskString(str) {
export async function load({ params, route, url, cookies, request }) {
let siteData = await GetAllSiteData();
//check if user is authenticated using cookies
+ if (process.env.KENER_SECRET_KEY === undefined) {
+ throw redirect(302, base + "/setup");
+ }
let tokenData = cookies.get("kener-user");
+
if (!!!tokenData) {
//redirect to signin page if user is not authenticated
throw redirect(302, base + "/signin");
diff --git a/src/routes/(manage)/+layout.svelte b/src/routes/(manage)/+layout.svelte
index 54a13a2..0cb0994 100644
--- a/src/routes/(manage)/+layout.svelte
+++ b/src/routes/(manage)/+layout.svelte
@@ -28,9 +28,11 @@
Manage Kener
+
+
-
-
+
+
Manage Kener
diff --git a/src/routes/(manage)/manage/api/+server.js b/src/routes/(manage)/manage/api/+server.js
index e13016f..5d9e1bf 100644
--- a/src/routes/(manage)/manage/api/+server.js
+++ b/src/routes/(manage)/manage/api/+server.js
@@ -11,13 +11,37 @@ import {
GetAllAlertsPaginated,
GetAllAPIKeys,
CreateNewAPIKey,
- UpdateApiKeyStatus
+ UpdateApiKeyStatus,
+ VerifyToken
} from "$lib/server/controllers/controller.js";
-export async function POST({ request }) {
+export async function POST({ request, cookies }) {
const payload = await request.json();
let action = payload.action;
let data = payload.data || {};
let resp = {};
+
+ let tokenData = cookies.get("kener-user");
+
+ if (!!!tokenData) {
+ return json(
+ {
+ error: "Unauthorized"
+ },
+ { status: 401 }
+ );
+ }
+
+ let tokenUser = await VerifyToken(tokenData);
+ if (!!!tokenUser) {
+ //redirect to signin page if user is not authenticated
+ return json(
+ {
+ error: "Unauthorized"
+ },
+ { status: 401 }
+ );
+ }
+
try {
if (action === "storeSiteData") {
resp = await storeSiteData(data);
diff --git a/src/routes/(manage)/manage/upload/+server.js b/src/routes/(manage)/manage/upload/+server.js
new file mode 100644
index 0000000..0365a97
--- /dev/null
+++ b/src/routes/(manage)/manage/upload/+server.js
@@ -0,0 +1,46 @@
+// @ts-nocheck
+import { writeFileSync } from "fs-extra";
+import { randomUUID } from "crypto";
+import { json } from "@sveltejs/kit";
+import { VerifyToken } from "$lib/server/controllers/controller.js";
+
+export async function POST({ request, cookies }) {
+ let tokenData = cookies.get("kener-user");
+
+ if (!!!tokenData) {
+ return json(
+ {
+ error: "Unauthorized"
+ },
+ { status: 401 }
+ );
+ }
+
+ let tokenUser = await VerifyToken(tokenData);
+ if (!!!tokenUser) {
+ //redirect to signin page if user is not authenticated
+ return json(
+ {
+ error: "Unauthorized"
+ },
+ { status: 401 }
+ );
+ }
+ // Parse the form data from the request
+ const formData = await request.formData();
+
+ // Get the image file from the form data
+ const imageFile = formData.get("image");
+
+ // Generate a unique filename
+ const filename = `${randomUUID()}-${imageFile.name}`;
+
+ // Read the file as a buffer
+ const fileBuffer = await imageFile.arrayBuffer();
+
+ // Save the file to the static directory
+ writeFileSync(`./static/uploads/${filename}`, Buffer.from(fileBuffer));
+
+ // Return a response
+ return json({ filename });
+}
diff --git a/static/uploads/upload.dir b/static/uploads/upload.dir
new file mode 100644
index 0000000..25f88e1
--- /dev/null
+++ b/static/uploads/upload.dir
@@ -0,0 +1 @@
+this is the upload directory
\ No newline at end of file
diff --git a/test.db b/test.db
deleted file mode 100644
index 0b58f0d..0000000
Binary files a/test.db and /dev/null differ
diff --git a/test.db-shm b/test.db-shm
deleted file mode 100644
index 8ce43e5..0000000
Binary files a/test.db-shm and /dev/null differ
diff --git a/test.db-wal b/test.db-wal
deleted file mode 100644
index 1ecf42f..0000000
Binary files a/test.db-wal and /dev/null differ