31 lines
675 B
TypeScript
31 lines
675 B
TypeScript
|
|
import { DateMath } from "../../../browser/date/DateMath";
|
||
|
|
import { ISOTimeStamp } from "../../../browser/date/ISOTimeStamp";
|
||
|
|
|
||
|
|
export class Permission
|
||
|
|
{
|
||
|
|
id:string;
|
||
|
|
by:string;
|
||
|
|
granted:ISOTimeStamp;
|
||
|
|
expires:ISOTimeStamp;
|
||
|
|
revokableBy:string[];
|
||
|
|
|
||
|
|
|
||
|
|
static isMatching( permissionID:string, permission:Permission )
|
||
|
|
{
|
||
|
|
return permission.id === permissionID && Permission.isValid( permission );
|
||
|
|
}
|
||
|
|
|
||
|
|
static isValid( permission:Permission )
|
||
|
|
{
|
||
|
|
let isExpired = true;
|
||
|
|
|
||
|
|
let expiresInfo = permission.expires;
|
||
|
|
|
||
|
|
if ( ! expiresInfo || DateMath.isExpired( ISOTimeStamp.toDate( expiresInfo ) ) )
|
||
|
|
{
|
||
|
|
isExpired = false;
|
||
|
|
}
|
||
|
|
|
||
|
|
return ! isExpired;
|
||
|
|
}
|
||
|
|
}
|