You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.2 KiB
JavaScript
51 lines
1.2 KiB
JavaScript
export class cookieHandler {
|
|
constructor() {
|
|
this.cookies = {};
|
|
this.reload();
|
|
this.expires = undefined;
|
|
this.SameSite = 'Strict';
|
|
}
|
|
getCookies(){
|
|
return this.cookies;
|
|
}
|
|
setCookies(cookies){
|
|
Object.keys(cookies).forEach(key => {
|
|
this.cookies[key] = cookies[key];
|
|
})
|
|
}
|
|
set(key, value){
|
|
this.cookies[key] = value;
|
|
}
|
|
get(key){
|
|
return this.cookies[key];
|
|
}
|
|
parseCookie(string){
|
|
let cookies = {};
|
|
string.replace(/ /g, '').split(';').forEach(cookie => {
|
|
let arr = cookie.split('=');
|
|
cookies[arr[0]] = arr[1];
|
|
})
|
|
return cookies;
|
|
}
|
|
reload(){
|
|
if (document.cookie) this.cookies = this.parseCookie(document.cookie);
|
|
console.log('cookie loaded')
|
|
}
|
|
store(){
|
|
Object.keys(this.cookies).forEach(key => {
|
|
document.cookie = `${key}=${this.cookies[key]}; expires=${this.expires}; SameSite=${this.SameSite}; Secure;`;
|
|
});
|
|
console.log('cookie stored');
|
|
}
|
|
toString(cookies = this.cookies){
|
|
let string = '';
|
|
Object.keys(cookies).forEach(key => {
|
|
string += `${key}=${cookies[key]}; `;
|
|
})
|
|
return string;
|
|
}
|
|
setExpire(days){
|
|
this.expires = new Date(Date.now() + 86400 * 10000 * days);
|
|
}
|
|
}
|