diff --git a/api/src/framework/express/user.ts b/api/src/framework/express/user.ts
index 08fea14..d3e9c55 100644
--- a/api/src/framework/express/user.ts
+++ b/api/src/framework/express/user.ts
@@ -69,17 +69,17 @@ export function Routes(services: Services) {
);
router.get(
'/read/:uuid',
+ CheckPermissions(),
ReadUserSchema(),
SchemaValidator(),
- CheckPermissions(),
ReadHandler(services),
);
router.post(
'/create',
+ CheckPermissions(),
CreateUserSchema(),
SchemaValidator(),
- CheckPermissions(),
CreateHandler(services),
);
diff --git a/www/src/App.svelte b/www/src/App.svelte
index 4802038..856b0ae 100644
--- a/www/src/App.svelte
+++ b/www/src/App.svelte
@@ -1,10 +1,25 @@
diff --git a/www/src/functions/request.ts b/www/src/functions/request.ts
index 6050926..0f0fb0b 100644
--- a/www/src/functions/request.ts
+++ b/www/src/functions/request.ts
@@ -4,18 +4,15 @@ enum Methods {
'PUT' = 'PUT',
}
-export async function get(route: string): Promise {
+export async function get(route: string): Promise {
return request('GET', route);
}
-export async function post(
- route: string,
- data?: unknown,
-): Promise {
+export async function post(route: string, data?: unknown): Promise {
return request('POST', route, data);
}
-export async function put(route: string, data: unknown): Promise {
+export async function put(route: string, data: unknown): Promise {
return request('PUT', route, data);
}
@@ -23,7 +20,7 @@ async function request(
method: keyof typeof Methods,
route: string,
data?: unknown,
-): Promise {
+): Promise {
const response = await fetch(`${process.env.APIURL}${route}`, {
headers: {
'content-type': 'application/json',
@@ -34,8 +31,11 @@ async function request(
body: data ? JSON.stringify(data) : null,
});
+ if (!response.ok) throw new Error(await response.json());
+
if (response.ok && response.status !== 204) {
return response.json() as T;
}
- return null;
+
+ return {} as T;
}
diff --git a/www/src/functions/user.ts b/www/src/functions/user.ts
index c63a6fc..04ad500 100644
--- a/www/src/functions/user.ts
+++ b/www/src/functions/user.ts
@@ -1,22 +1,18 @@
import type { CreateUserBody, LoginUserBody, UserInfo } from '@core';
import { post, get } from './request';
-import { currentUser } from '../store/user';
export async function login(raw: LoginUserBody) {
- const user = await post('/user/login', raw);
- currentUser.set(user);
- return user;
+ return post('/user/login', raw);
}
export async function logout() {
- await post('/user/logout');
- currentUser.set(null);
+ await post('/user/logout');
}
export async function read(uuid: string) {
- const user = await get(`/user/read/${uuid}`);
+ return get(`/user/read/${uuid}`);
}
export async function create(raw: CreateUserBody) {
- const user = await post('/user/create', raw);
+ return post('/user/create', raw);
}
diff --git a/www/src/pages/Login.svelte b/www/src/pages/Login.svelte
index a918172..c0e6e4b 100644
--- a/www/src/pages/Login.svelte
+++ b/www/src/pages/Login.svelte
@@ -3,6 +3,7 @@
import NavBar from '../components/NavBar.svelte';
import { Form, Input, Button } from 'spaper';
import { login } from '../functions/user';
+ import { currentUser } from '../store/user';
import { useNavigate } from 'svelte-navigator';
const user: LoginUserBody = {
@@ -13,10 +14,11 @@
const navigate = useNavigate();
const loginHandler = async () => {
- const result = await login(user);
- if (result) {
+ try {
+ const res = await login(user);
+ currentUser.set(res);
navigate('/');
- }
+ } catch (error) {}
};
@@ -39,7 +41,7 @@
type="secondary"
class="row sm-2 col-4"
block
- on:click={() => loginHandler()}>Sign inSign in
diff --git a/www/src/pages/Profile.svelte b/www/src/pages/Profile.svelte
index 0bfe38b..f75a8ac 100644
--- a/www/src/pages/Profile.svelte
+++ b/www/src/pages/Profile.svelte
@@ -8,12 +8,16 @@
const navigate = useNavigate();
const logoutHandler = async () => {
- await logout();
- navigate('/');
+ try {
+ await logout();
+ } finally {
+ currentUser.set(null);
+ navigate('/');
+ }
};
-
+
{$currentUser?.uuid}
{$currentUser?.username}
{$currentUser?.role}