2022-02-23 15:13:44 +00:00
|
|
|
import store from '@/store';
|
2018-12-09 13:21:20 +00:00
|
|
|
|
2022-02-23 15:13:44 +00:00
|
|
|
const ID_TOKEN_KEY = 'id_token';
|
|
|
|
|
const USER_KEY = 'user';
|
|
|
|
|
const LOGIN_REDIRECT_KEY = 'login_redirect';
|
2018-12-09 13:21:20 +00:00
|
|
|
|
|
|
|
|
let API_URL = window.CONFIG.API_URL;
|
|
|
|
|
let API_BASE_PATH = window.CONFIG.API_BASE_PATH;
|
|
|
|
|
|
2019-05-13 14:29:47 +00:00
|
|
|
export function setLoggedUser(token, user) {
|
2020-02-14 12:11:15 +00:00
|
|
|
setIdToken(token);
|
|
|
|
|
setUser(user);
|
2022-02-23 15:13:44 +00:00
|
|
|
store.dispatch('setUser', user);
|
2018-12-09 13:21:20 +00:00
|
|
|
}
|
|
|
|
|
|
2019-05-13 14:29:47 +00:00
|
|
|
export function doLogout() {
|
2020-02-14 12:11:15 +00:00
|
|
|
unsetIdToken();
|
|
|
|
|
unsetUser();
|
2022-02-23 15:13:44 +00:00
|
|
|
store.dispatch('setUser', null);
|
2018-12-09 13:21:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function apiurlwithtoken(path) {
|
2020-02-14 12:11:15 +00:00
|
|
|
let u = new URL(API_URL + API_BASE_PATH + path);
|
|
|
|
|
let idToken = getIdToken();
|
|
|
|
|
if (idToken) {
|
2022-02-23 15:13:44 +00:00
|
|
|
u.searchParams.append('access_token', idToken);
|
2020-02-14 12:11:15 +00:00
|
|
|
}
|
|
|
|
|
return u;
|
2018-12-09 13:21:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function apiurl(path) {
|
2020-02-14 12:11:15 +00:00
|
|
|
return new URL(API_URL + API_BASE_PATH + path);
|
2018-12-09 13:21:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function loginurl() {
|
2022-02-23 15:13:44 +00:00
|
|
|
return apiurl('/auth/login');
|
2018-12-09 13:21:20 +00:00
|
|
|
}
|
|
|
|
|
|
2019-03-29 17:08:54 +00:00
|
|
|
export function authorizeurl() {
|
2022-02-23 15:13:44 +00:00
|
|
|
return apiurl('/auth/authorize');
|
2019-03-29 17:08:54 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function registerurl() {
|
2022-02-23 15:13:44 +00:00
|
|
|
return new apiurl('/auth/register');
|
2019-03-29 17:08:54 +00:00
|
|
|
}
|
|
|
|
|
|
2018-12-09 13:21:20 +00:00
|
|
|
export function oauth2callbackurl() {
|
2022-02-23 15:13:44 +00:00
|
|
|
return new apiurl('/auth/oauth2/callback');
|
2018-12-09 13:21:20 +00:00
|
|
|
}
|
|
|
|
|
|
2019-05-13 14:29:47 +00:00
|
|
|
export async function loginapi(init) {
|
2020-02-14 12:11:15 +00:00
|
|
|
if (init === undefined) {
|
|
|
|
|
init = {};
|
|
|
|
|
}
|
2019-05-13 14:29:47 +00:00
|
|
|
|
2020-02-14 12:11:15 +00:00
|
|
|
return await window.fetch(loginurl(), init);
|
2019-05-13 14:29:47 +00:00
|
|
|
}
|
|
|
|
|
|
2019-05-21 09:06:38 +00:00
|
|
|
export async function registerapi(init) {
|
2020-02-14 12:11:15 +00:00
|
|
|
if (init === undefined) {
|
|
|
|
|
init = {};
|
|
|
|
|
}
|
2019-05-21 09:06:38 +00:00
|
|
|
|
2020-02-14 12:11:15 +00:00
|
|
|
return await window.fetch(registerurl(), init);
|
2019-05-21 09:06:38 +00:00
|
|
|
}
|
|
|
|
|
|
2022-02-23 15:13:44 +00:00
|
|
|
export async function fetch(url, init, signal, token, tokenType = 'bearer') {
|
2020-02-14 12:11:15 +00:00
|
|
|
if (!init) {
|
|
|
|
|
init = {};
|
|
|
|
|
}
|
|
|
|
|
if (init.headers === undefined) {
|
2022-02-23 15:13:44 +00:00
|
|
|
init['headers'] = {};
|
2020-02-14 12:11:15 +00:00
|
|
|
}
|
|
|
|
|
if (signal) {
|
2022-02-23 15:13:44 +00:00
|
|
|
init['signal'] = signal;
|
2020-02-14 12:11:15 +00:00
|
|
|
}
|
2021-07-14 11:56:11 +00:00
|
|
|
let idToken = token || getIdToken();
|
2020-02-14 12:11:15 +00:00
|
|
|
if (idToken) {
|
2022-02-23 15:13:44 +00:00
|
|
|
init.headers['Authorization'] = tokenType + ' ' + idToken;
|
2020-02-14 12:11:15 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return await window.fetch(url, init);
|
2018-12-09 13:21:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function setIdToken(idToken) {
|
2020-02-14 12:11:15 +00:00
|
|
|
localStorage.setItem(ID_TOKEN_KEY, idToken);
|
2018-12-09 13:21:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function getIdToken() {
|
2020-02-14 12:11:15 +00:00
|
|
|
return localStorage.getItem(ID_TOKEN_KEY);
|
2018-12-09 13:21:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function unsetIdToken() {
|
2020-02-14 12:11:15 +00:00
|
|
|
localStorage.removeItem(ID_TOKEN_KEY);
|
2018-12-09 13:21:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function setUser(user) {
|
2020-02-14 12:11:15 +00:00
|
|
|
localStorage.setItem(USER_KEY, JSON.stringify(user));
|
2018-12-09 13:21:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function getUser() {
|
2020-02-14 12:11:15 +00:00
|
|
|
let user = localStorage.getItem(USER_KEY);
|
|
|
|
|
if (user) {
|
|
|
|
|
return JSON.parse(user);
|
|
|
|
|
}
|
|
|
|
|
return null;
|
2018-12-09 13:21:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function unsetUser() {
|
2020-02-14 12:11:15 +00:00
|
|
|
localStorage.removeItem(USER_KEY);
|
2018-12-09 13:21:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function isLoggedIn() {
|
2020-02-14 12:11:15 +00:00
|
|
|
const idToken = getIdToken();
|
|
|
|
|
return !!idToken;
|
2018-12-09 13:21:20 +00:00
|
|
|
}
|
2019-09-26 08:03:44 +00:00
|
|
|
|
|
|
|
|
export function getLoginRedirect() {
|
2020-02-14 12:11:15 +00:00
|
|
|
return sessionStorage.getItem(LOGIN_REDIRECT_KEY);
|
2019-09-26 08:03:44 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function setLoginRedirect(url) {
|
2020-02-14 12:11:15 +00:00
|
|
|
sessionStorage.setItem(LOGIN_REDIRECT_KEY, url);
|
2019-09-26 08:03:44 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function unsetLoginRedirect() {
|
2020-02-14 12:11:15 +00:00
|
|
|
return sessionStorage.removeItem(LOGIN_REDIRECT_KEY);
|
|
|
|
|
}
|