diff --git a/src/comp/entry/entryfield.svelte b/src/comp/entry/entryfield.svelte
new file mode 100644
index 0000000..ec6b230
--- /dev/null
+++ b/src/comp/entry/entryfield.svelte
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
diff --git a/src/comp/entry/entryform.svelte b/src/comp/entry/entryform.svelte
new file mode 100644
index 0000000..c71f921
--- /dev/null
+++ b/src/comp/entry/entryform.svelte
@@ -0,0 +1,73 @@
+
+
+
+
+
diff --git a/src/lib/server/db/post.js b/src/lib/server/db/post.js
index 0abf4ac..e3801a0 100644
--- a/src/lib/server/db/post.js
+++ b/src/lib/server/db/post.js
@@ -131,7 +131,7 @@ export async function getPost(post_id, opts = {}) {
}
}();
- const category_guess = await getCategoryCached(sql, post['category_id']);
+ const category_guess = await getCategoryCached(post['category_id']);
if (Object.hasOwn(category_guess, 'error')) {
return {
error: true,
diff --git a/src/lib/server/db/user.js b/src/lib/server/db/user.js
index 6e0732d..e0d052f 100644
--- a/src/lib/server/db/user.js
+++ b/src/lib/server/db/user.js
@@ -134,3 +134,47 @@ export async function createUser(username, password) {
success: true,
};
}
+
+/**
+ * @param {string} username
+ * @param {string} password
+ * @returns {Promise}
+ */
+export async function createUserSession(username, password) {
+ const select = sql`
+ SELECT password, id
+ FROM doki8902.user
+ WHERE username = ${ username };`;
+
+ const result = await select;
+
+ if (result.length == 0) {
+ return {
+ error: true,
+ msg: 'Username or password is incorrect',
+ };
+ }
+
+ const hashedPassword = result[0]['password'];
+
+ const isMatch = await verify(hashedPassword, password);
+
+ if (!isMatch) {
+ return {
+ error: true,
+ msg: 'Username or password is incorrect',
+ };
+ }
+
+ const insert = sql`
+ INSERT INTO doki8902.user_session (user_id)
+ VALUES (${ result[0]['id'] })
+ RETURNING token;`;
+
+ const token = await insert;
+
+ return {
+ success: true,
+ result: token[0]['token'],
+ };
+}
diff --git a/src/routes/(login)/login/+page.server.js b/src/routes/(login)/login/+page.server.js
index e69de29..d2ecd10 100644
--- a/src/routes/(login)/login/+page.server.js
+++ b/src/routes/(login)/login/+page.server.js
@@ -0,0 +1,25 @@
+import { createUserSession } from "$lib/server/db/user";
+
+/** @type {import("@sveltejs/kit").Action} */
+async function POST({ request, cookies }) {
+ if (request.method !== 'POST') {
+ return;
+ }
+
+ const data = await request.formData();
+ const username = data.get('username')?.toString();
+ const password = data.get('password')?.toString();
+
+ if (!username || !password) {
+ return;
+ }
+
+ const result = await createUserSession(username, password);
+
+ console.log(result);
+}
+
+/** @type {import("@sveltejs/kit").Actions} */
+export let actions = {
+ default: POST
+};
diff --git a/src/routes/(login)/login/+page.svelte b/src/routes/(login)/login/+page.svelte
index e69de29..9130a7c 100644
--- a/src/routes/(login)/login/+page.svelte
+++ b/src/routes/(login)/login/+page.svelte
@@ -0,0 +1,11 @@
+
+
+
+ New here?
+
+
+
+
diff --git a/src/routes/(login)/register/+page.server.js b/src/routes/(login)/register/+page.server.js
index 414eb31..b106527 100644
--- a/src/routes/(login)/register/+page.server.js
+++ b/src/routes/(login)/register/+page.server.js
@@ -11,6 +11,10 @@ export function load({ cookies }) {
/** @type {import('./$types').Action} */
async function POST({ request }) {
+ if (request.method !== 'POST') {
+ return;
+ }
+
const data = await request.formData();
const username = data.get('username')?.toString();
const password = data.get('password')?.toString();
diff --git a/src/routes/(login)/register/+page.svelte b/src/routes/(login)/register/+page.svelte
index 09d17cb..5213b13 100644
--- a/src/routes/(login)/register/+page.svelte
+++ b/src/routes/(login)/register/+page.svelte
@@ -1,5 +1,6 @@
-
-
-
+
+
+
+
diff --git a/src/types/status.ts b/src/types/status.ts
index 87ee3e9..a15fdb3 100644
--- a/src/types/status.ts
+++ b/src/types/status.ts
@@ -5,4 +5,5 @@ export type Error = {
export type Success = {
success: boolean,
+ result?: object,
};