Add libauth.ts for centralised authentication

This commit is contained in:
Fred Boniface 2023-08-24 13:32:12 +01:00
parent 73dd219394
commit 55831164ed
2 changed files with 67 additions and 9 deletions

60
src/lib/libauth.ts Normal file
View File

@ -0,0 +1,60 @@
import { uuid } from "./stores/uuid"
export interface libauthResponse {
uuidPresent?: boolean;
serverAuthCheck?: boolean;
uuidValue?: string;
serverAuthCheckResponseCode?: number;
}
export async function checkAuth(): Promise<libauthResponse> {
let result: libauthResponse = {};
const uuidCheck = await checkUuid();
result.uuidPresent = uuidCheck.uuidPresent;
result.uuidValue = uuidCheck.uuidValue;
const serverCheck = await checkServerAuth();
result.serverAuthCheck = serverCheck.authOk;
result.serverAuthCheckResponseCode = serverCheck.status;
return result
}
export async function checkUuid() {
let uuid_value: string = '';
uuid.subscribe((value => uuid_value = value))
console.log("uuid-value is: ", uuid_value)
if (uuid_value && uuid_value != 'null') {
return {
uuidPresent: true,
uuidValue: uuid_value,
}
}
return {
uuidPresent: false,
uuidValue: '',
}
}
export async function checkServerAuth() {
let uuid_value: string = '';
uuid.subscribe((value => uuid_value = value))
const url = "https://owlboard.info/api/v2/auth/check"
const options = {
method: 'GET',
headers: {
uuid: uuid_value,
}
};
const res = await fetch(url, options)
let ok: boolean;
if (res.status === 200) {
ok = true;
} else {
ok = false;
}
return {
authOk: ok,
status: res.status,
}
}

View File

@ -4,6 +4,7 @@
import Loading from '$lib/navigation/loading.svelte'; import Loading from '$lib/navigation/loading.svelte';
import { onMount } from 'svelte'; import { onMount } from 'svelte';
import { uuid } from '$lib/stores/uuid.js'; import { uuid } from '$lib/stores/uuid.js';
import { checkAuth } from '$lib/libauth';
const title = 'Register'; const title = 'Register';
@ -38,17 +39,14 @@
isLoading = false; isLoading = false;
} }
$: { onMount(async () => {
if ($uuid != 'null') { const auth = await checkAuth();
state = 'reg' if (auth.uuidPresent === false) {
} else state = 'unreg' state = 'unreg';
} } else if (auth.uuidPresent === true) {
/* onMount(async () => {
if ($uuid != 'null') {
state = 'reg'; state = 'reg';
} }
});*/ });
</script> </script>
{#if isLoading} {#if isLoading}