stackpress
Version:
Incept is a content management framework.
26 lines (25 loc) • 792 B
JavaScript
import { matchAnyEvent, matchAnyRoute } from './helpers.js';
export default class Session {
static load(data) {
return new Session(data);
}
data;
get guest() {
return !this.data.id;
}
constructor(data) {
this.data = data;
}
can(...permits) {
if (permits.length === 0) {
return true;
}
const permissions = this.data.permits || [];
const events = permissions.filter(permission => typeof permission === 'string');
const routes = permissions.filter(permission => typeof permission !== 'string');
return Array.isArray(permits) && permits.every(permit => typeof permit === 'string'
? matchAnyEvent(permit, events)
: matchAnyRoute(permit, routes));
}
}
;