import { getApiUrl } from './scripts/upstream'; import { uuid } from './stores/uuid'; export interface libauthResponse { uuidPresent?: boolean; serverAuthCheck?: boolean; uuidValue?: string; serverAuthCheckResponseCode?: number; } interface uuidCheckRes { uuidValue?: string; uuidPresent?: boolean; } export async function checkAuth(): Promise { let result: libauthResponse = {}; const uuidCheck = await checkUuid(); result.uuidPresent = uuidCheck?.uuidPresent; result.uuidValue = uuidCheck?.uuidValue; const serverCheck = await checkServerAuth(result.uuidValue || ''); result.serverAuthCheck = serverCheck.authOk; result.serverAuthCheckResponseCode = serverCheck.status; return result; } async function checkUuid(): Promise { let uuid_value: string = ''; const unsubscribe = uuid.subscribe((value) => { uuid_value = value; }); let res: uuidCheckRes = { uuidValue: uuid_value }; console.log('uuid-value is: ', uuid_value); if (uuid_value && uuid_value != 'null') { res = { uuidPresent: true, uuidValue: uuid_value }; } else { res = { uuidPresent: false, uuidValue: uuid_value }; } unsubscribe(); return res; } async function checkServerAuth(uuidString: string) { const url = `${getApiUrl()}/api/v2/user/checkAuth`; const options = { method: 'GET', headers: { uuid: uuidString } }; const res = await fetch(url, options); let ok: boolean; if (res.status !== 401) { ok = true; } else { ok = false; } return { authOk: ok, status: res.status }; } export async function logout(): Promise { uuid.set(null); return true; }