Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/app.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ const appConfig = {
realm: 'universis',
clientId: 'aristomate',
redirectUri: 'https://applink.aristomate.gr/authsso/callback',
scope: 'students:read',
scope: 'students:read offline_access',
isMobile: isMobile,
// Use proxy for web
tokenUrl: isMobile ? undefined : 'https://applink.aristomate.gr/api/auth/token'
Expand Down
17 changes: 4 additions & 13 deletions src/lib/authentication/OIDCClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -371,23 +371,14 @@ class OIDCClient {
}

isRefreshable() {
// With offline access scope, refresh token can't expire
const refreshToken = this.getItemFromStore('refresh_token');
if(refreshToken){
const decodedToken = jwtDecode(refreshToken);
const now = Date.now() / 1000;
return (decodedToken.exp as number) > now;
}
return false;
return !!refreshToken;
}

// Check if user is authenticated
isAuthenticated() {
const refreshToken = this.getItemFromStore('refresh_token');
if (!refreshToken) {
return false;
}
return this.isRefreshable();

return this.isRefreshable();
}

// Make authenticated API request
Expand Down Expand Up @@ -437,4 +428,4 @@ const response = await client.fetch('https://api.example.com/data');

// Logout
await client.logout();
*/
*/
5 changes: 4 additions & 1 deletion src/lib/storage/capacitorPersistedStore.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Preferences } from '@capacitor/preferences';
import type { Writable } from 'svelte/store';
import { get, type Writable } from 'svelte/store';
// import { writable, type Writable } from 'svelte/store';
import { persisted } from 'svelte-persisted-store';
import type { GetResult } from '@capacitor/preferences';
Expand Down Expand Up @@ -69,6 +69,7 @@ class CapacitorPersistedStore<T> {
* @param value - The new value of the store.
*/
public set(value: T) {
Preferences.set({ key: this.key, value: JSON.stringify(value) });
this.store.set(value);
}

Expand All @@ -78,6 +79,8 @@ class CapacitorPersistedStore<T> {
*/
public update(updater: (value: T) => T) {
this.store.update(updater);
const newValue = get(this.store);
Preferences.set({ key: this.key, value: JSON.stringify(newValue) });
}
}

Expand Down
5 changes: 3 additions & 2 deletions src/routes/persistedStoreDeclarations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { userCreds, userTokens, useAlternativeLogin } from "$stores/credentials.
import { scheduledNotifications } from "$lib/calendarNotifications/notificationsStore";
import { loginStore } from "$src/lib/authentication/loginStore";
import { userCredsFlag } from "$components/webmailLogin/userCredsFlagStore";
import { get } from "svelte/store";

const persistedStores: CapacitorPersistedStore<any>[] = [
toggles,
Expand All @@ -24,5 +25,5 @@ const persistedStores: CapacitorPersistedStore<any>[] = [

export async function loadPersistedStores() {
console.log('Loading persisted stores');
persistedStores.forEach(async (store) => await store.loadFromStorage());
}
persistedStores.forEach(async (store) => { await store.loadFromStorage();});
}