forked from dullage/flatnotes
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtokenStorage.js
More file actions
46 lines (39 loc) · 1.29 KB
/
tokenStorage.js
File metadata and controls
46 lines (39 loc) · 1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
const tokenStorageKey = "token";
function getBasePath() {
// This relies on the fact that flanotes always has a correctly formatted relative path set in <base> tag
return document.querySelector('base').getAttribute('href')
}
function getCookieString(token) {
const basePath = getBasePath();
return `${tokenStorageKey}=${token}; Path=${basePath}; SameSite=Strict`;
}
export function storeToken(token, persist = false) {
document.cookie = getCookieString(token);
sessionStorage.setItem(tokenStorageKey, token);
if (persist === true) {
localStorage.setItem(tokenStorageKey, token);
}
}
export function getStoredToken() {
return sessionStorage.getItem(tokenStorageKey);
}
export function loadStoredToken() {
const token = localStorage.getItem(tokenStorageKey);
if (token != null) {
storeToken(token, false);
}
}
export function clearStoredToken() {
sessionStorage.removeItem(tokenStorageKey);
localStorage.removeItem(tokenStorageKey);
document.cookie =
getCookieString() + "; expires=Thu, 01 Jan 1970 00:00:00 GMT";
}
export function isCurrentTokenStored() {
const localToken = localStorage.getItem(tokenStorageKey);
if (localToken == null) {
return false;
}
const sessionToken = sessionStorage.getItem(tokenStorageKey);
return localToken === sessionToken;
}