refactor(frontend): Algemene linting fouten
This commit is contained in:
parent
8efce6bee0
commit
dd1000c662
9 changed files with 26 additions and 25 deletions
|
@ -1,10 +1,11 @@
|
|||
import apiClient from "@/services/api-client.ts";
|
||||
import type { FrontendAuthConfig } from "@/services/auth/auth.d.ts";
|
||||
import type {UserManagerSettings} from "oidc-client-ts";
|
||||
|
||||
/**
|
||||
* Fetch the authentication configuration from the backend.
|
||||
*/
|
||||
export async function loadAuthConfig() {
|
||||
export async function loadAuthConfig(): Promise<Record<string, UserManagerSettings>> {
|
||||
const authConfig = (await apiClient.get<FrontendAuthConfig>("auth/config")).data;
|
||||
return {
|
||||
student: {
|
||||
|
|
|
@ -49,7 +49,7 @@ const isLoggedIn = computed(() => authState.user !== null);
|
|||
/**
|
||||
* Redirect the user to the login page where he/she can choose whether to log in as a student or teacher.
|
||||
*/
|
||||
async function initiateLogin() {
|
||||
async function initiateLogin(): Promise<void> {
|
||||
await router.push(loginRoute);
|
||||
}
|
||||
|
||||
|
@ -77,12 +77,12 @@ async function handleLoginCallback(): Promise<void> {
|
|||
/**
|
||||
* Refresh an expired authorization token.
|
||||
*/
|
||||
async function renewToken() {
|
||||
async function renewToken(): Promise<User | null> {
|
||||
const activeRole = authStorage.getActiveRole();
|
||||
if (!activeRole) {
|
||||
console.log("Can't renew the token: Not logged in!");
|
||||
await initiateLogin();
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return await (await getUserManagers())[activeRole].signinSilent();
|
||||
|
@ -91,6 +91,7 @@ async function renewToken() {
|
|||
console.log(error);
|
||||
await initiateLogin();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -113,7 +114,7 @@ apiClient.interceptors.request.use(
|
|||
}
|
||||
return reqConfig;
|
||||
},
|
||||
(error) => Promise.reject(error),
|
||||
async (error) => Promise.reject(error),
|
||||
);
|
||||
|
||||
// Registering interceptor to refresh the token when a request failed because it was expired.
|
||||
|
@ -121,7 +122,7 @@ apiClient.interceptors.response.use(
|
|||
(response) => response,
|
||||
async (error: AxiosError<{ message?: string }>) => {
|
||||
if (error.response?.status === 401) {
|
||||
if (error.response!.data.message === "token_expired") {
|
||||
if (error.response.data.message === "token_expired") {
|
||||
console.log("Access token expired, trying to refresh...");
|
||||
await renewToken();
|
||||
return apiClient(error.config!); // Retry the request
|
||||
|
|
|
@ -12,7 +12,7 @@ export default {
|
|||
* Set the role the user is currently logged in as from the local persistent storage.
|
||||
* This should happen when the user logs in with another account.
|
||||
*/
|
||||
setActiveRole(role: Role) {
|
||||
setActiveRole(role: Role): void {
|
||||
localStorage.setItem("activeRole", role);
|
||||
},
|
||||
|
||||
|
@ -20,7 +20,7 @@ export default {
|
|||
* Remove the saved current role from the local persistent storage.
|
||||
* This should happen when the user is logged out.
|
||||
*/
|
||||
deleteActiveRole() {
|
||||
deleteActiveRole(): void {
|
||||
localStorage.removeItem("activeRole");
|
||||
},
|
||||
};
|
||||
|
|
14
frontend/src/services/auth/auth.d.ts
vendored
14
frontend/src/services/auth/auth.d.ts
vendored
|
@ -1,22 +1,22 @@
|
|||
import { type User, UserManager } from "oidc-client-ts";
|
||||
|
||||
export type AuthState = {
|
||||
export interface AuthState {
|
||||
user: User | null;
|
||||
accessToken: string | null;
|
||||
activeRole: Role | null;
|
||||
};
|
||||
}
|
||||
|
||||
export type FrontendAuthConfig = {
|
||||
export interface FrontendAuthConfig {
|
||||
student: FrontendIdpConfig;
|
||||
teacher: FrontendIdpConfig;
|
||||
};
|
||||
}
|
||||
|
||||
export type FrontendIdpConfig = {
|
||||
export interface FrontendIdpConfig {
|
||||
authority: string;
|
||||
clientId: string;
|
||||
scope: string;
|
||||
responseType: string;
|
||||
};
|
||||
}
|
||||
|
||||
export type Role = "student" | "teacher";
|
||||
export type UserManagersForRoles = { student: UserManager; teacher: UserManager };
|
||||
export interface UserManagersForRoles { student: UserManager; teacher: UserManager }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue