UNPKG

stackpress

Version:

Incept is a content management framework.

26 lines (25 loc) 792 B
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)); } } ;