diff --git a/src/lib/server/userService.ts b/src/lib/server/userService.ts new file mode 100644 index 0000000..80c41ae --- /dev/null +++ b/src/lib/server/userService.ts @@ -0,0 +1,36 @@ +import { db } from '$lib/server/dbService'; + +export const getUsers = (): { userId: string; userName: string }[] => { + const getUsersSQLStmt = `SELECT id, name + FROM users;`; + const statement = db.prepare(getUsersSQLStmt); + const result = statement.all() as { id: string; name: string }[]; + const userList: { userId: string; userName: string }[] = []; + + for (const resultItem of result) { + const user = { userId: resultItem.id, userName: resultItem.name }; + userList.push(user); + } + + return userList; +}; + +export const addUser = (userName: string, userPassword: string): number => { + const addUserSQLStmt = `INSERT into users(name, pw) + values (?, ?)`; + const statement = db.prepare(addUserSQLStmt); + + let rowCount; + try { + const info = statement.run(userName, userPassword); + rowCount = info.changes; + } catch (error) { + console.log(error); + rowCount = 0; + } + + return rowCount; +}; + +export const deleteUser = () => { +}; diff --git a/src/routes/(angemeldet)/+page.svelte b/src/routes/(angemeldet)/+page.svelte index 6287a40..16f5d0a 100644 --- a/src/routes/(angemeldet)/+page.svelte +++ b/src/routes/(angemeldet)/+page.svelte @@ -42,6 +42,18 @@

Fügen Sie einem Tatort Bilder hinzu.

{/if} +
+
+ +
+ + Benutzerverwaltung + + +

Füge neue Benutzer hinzu oder entferne welche.

+
diff --git a/src/routes/(angemeldet)/user-management/+page.svelte b/src/routes/(angemeldet)/user-management/+page.svelte new file mode 100644 index 0000000..ebff868 --- /dev/null +++ b/src/routes/(angemeldet)/user-management/+page.svelte @@ -0,0 +1,180 @@ + + +

+ Benutzerverwaltung +

+ +

+ Benutzerliste +

+ +
+ + + + + + + + + {#each userList as user} + + + + + {/each} + +
BenutzernameEntfernen
{user.userName} + +
+
+ +

+ Neuer Nutzer +

+ +
+
+
+ + +
+ +
+ + +
+
+
+ +
+ {#if addUserError} + + {/if} + {#if addUserSuccess} + + {/if} + + +
+ + \ No newline at end of file diff --git a/src/routes/api/users/+server.ts b/src/routes/api/users/+server.ts new file mode 100644 index 0000000..c14b677 --- /dev/null +++ b/src/routes/api/users/+server.ts @@ -0,0 +1,25 @@ +import { json } from '@sveltejs/kit'; +import { addUser, getUsers } from '$lib/server/userService'; + +export function GET({ locals }) { + if (!locals.user) { + return json({ error: 'Unauthorized' }, { status: 401 }); + } + + const users_list = getUsers(); + + return new Response(JSON.stringify(users_list)); +} + +export async function POST({ request, locals }) { + if (!locals.user) { + return json({ error: 'Unauthorized' }, { status: 401 }); + } + + const data = await request.json(); + const userName = data.userName; + const userPassword = data.userPassword; + const rowCount = addUser(userName, userPassword); + + return new Response(null, { status: rowCount == 1 ? 200 : 400 }); +}