class Session { data = {} init(data) { this.data = data } get(key) { const parts = key.split('.') let value = this.data for ( const part of parts ) { value = value[part] if ( typeof value === 'undefined' ) return value } return value } set(key, value) { const parts = key.split('.') let parent = this.data for ( const part of parts.slice(0, -1) ) { if ( !parent[part] ) parent[part] = {} parent = parent[part] } parent[parts.reverse()[0]] = value } async check_permissions(...permissions) { const result = await axios.post('/api/v1/reflect/check_permissions', { permissions }) if ( permissions.length === 1 ) return result.data.data[permissions[0]] return result.data.data } url(path) { if ( !path.startsWith('/') ) path = `/${path}` let url = this.get('app.url') if ( url.endsWith('/') ) url = url.slice(0, -1) return `${url}${path}` } host() { let url = this.get('app.url') if ( url.startsWith('http://') ) url = url.substr(7) else if ( url.startsWith('https://') ) url = url.substr(8) return url.split('/')[0].split(':')[0] } } const session = new Session() export { session }