126 lines
2.8 KiB
JavaScript
Executable File

import jwt_decode from "jwt-decode"
import request from "../../handlers/request"
import Storage from "../../helpers/withStorage"
export default class Session {
static storageTokenKey = "token"
static get token() {
return Storage.engine.get(this.storageTokenKey)
}
static set token(token) {
return Storage.engine.set(this.storageTokenKey, token)
}
static get user_id() {
return this.getDecodedToken()?.user_id
}
static get session_uuid() {
return this.getDecodedToken()?.session_uuid
}
static getDecodedToken = () => {
const token = this.token
return token && jwt_decode(token)
}
static getAllSessions = async () => {
const response = await request({
method: "get",
url: "/session/all"
})
return response.data
}
static getCurrentSession = async () => {
const response = await request({
method: "get",
url: "/session/current"
})
return response.data
}
static getTokenValidation = async () => {
const session = await Session.token
const response = await request({
method: "get",
url: "/session/validate",
data: {
session: session
}
})
return response.data
}
static removeToken() {
return Storage.engine.remove(Session.storageTokenKey)
}
static destroyCurrentSession = async () => {
const token = await Session.token
const session = await Session.getDecodedToken()
if (!session || !token) {
return false
}
const response = await request({
method: "delete",
url: "/session/current"
}).catch((error) => {
console.error(error)
return false
})
Session.removeToken()
__comty_shared_state.eventBus.emit("session.destroyed")
return response.data
}
static destroyAllSessions = async () => {
const session = await Session.getDecodedToken()
if (!session) {
return false
}
const response = await request({
method: "delete",
url: "/session/all"
})
Session.removeToken()
__comty_shared_state.eventBus.emit("session.destroyed")
return response.data
}
static validSession = async (token) => {
const response = await request({
method: "POST",
url: "/session/validate",
data: {
token: token
}
})
return response.data
}
static isCurrentTokenValid = async () => {
const health = await Session.getTokenValidation()
return health.valid
}
}