Add base web app

This commit is contained in:
2025-11-04 18:58:41 +01:00
parent 1cdd3d9e60
commit d05747e60e
21 changed files with 1511 additions and 181 deletions

View File

@@ -0,0 +1,87 @@
import { APIClient } from "./ApiClient";
export interface AuthInfo {
id: number;
time_create: number;
time_update: number;
name: string;
email: string;
}
const TokenStateKey = "auth-state";
export class AuthApi {
/**
* Check out whether user is signed in or not
*/
static get SignedIn(): boolean {
return localStorage.getItem(TokenStateKey) !== null;
}
/**
* Mark user as authenticated
*/
static SetAuthenticated() {
localStorage.setItem(TokenStateKey, "");
}
/**
* Un-mark user as authenticated
*/
static UnsetAuthenticated() {
localStorage.removeItem(TokenStateKey);
}
/**
* Start OpenID login
*/
static async StartOpenIDLogin(): Promise<{ url: string }> {
return (
await APIClient.exec({
uri: "/auth/start_oidc",
method: "GET",
})
).data;
}
/**
* Finish OpenID login
*/
static async FinishOpenIDLogin(code: string, state: string): Promise<void> {
await APIClient.exec({
uri: "/auth/finish_oidc",
method: "POST",
jsonData: { code: code, state: state },
});
this.SetAuthenticated();
}
/**
* Get auth information
*/
static async GetAuthInfo(): Promise<AuthInfo> {
return (
await APIClient.exec({
uri: "/auth/info",
method: "GET",
})
).data;
}
/**
* Sign out
*/
static async SignOut(): Promise<void> {
try {
await APIClient.exec({
uri: "/auth/sign_out",
method: "GET",
});
} catch (e) {
console.error("Failed to sign out user on API!", e);
}
this.UnsetAuthenticated();
}
}