Skip to main content
Module

x/samlify/src/validator.ts

πŸ” Node.js API for Single Sign On (SAML 2.0)
Go to Latest
File
// unit is mstype DriftTolerance = [number, number];
function verifyTime( utcNotBefore: string | undefined, utcNotOnOrAfter: string | undefined, drift: DriftTolerance = [0, 0]): boolean {
const now = new Date();
if (!utcNotBefore && !utcNotOnOrAfter) { // show warning because user intends to have time check but the document doesn't include corresponding information console.warn('You intend to have time validation however the document doesn\'t include the valid range.'); return true; }
let notBeforeLocal: Date | null = null; let notOnOrAfterLocal: Date | null = null;
const [notBeforeDrift, notOnOrAfterDrift] = drift;
if (utcNotBefore && !utcNotOnOrAfter) { notBeforeLocal = new Date(utcNotBefore); return +notBeforeLocal + notBeforeDrift <= +now; } if (!utcNotBefore && utcNotOnOrAfter) { notOnOrAfterLocal = new Date(utcNotOnOrAfter); return +now < +notOnOrAfterLocal + notOnOrAfterDrift; }
notBeforeLocal = new Date(utcNotBefore!); notOnOrAfterLocal = new Date(utcNotOnOrAfter!);
return ( +notBeforeLocal + notBeforeDrift <= +now && +now < +notOnOrAfterLocal + notOnOrAfterDrift );
}
export { verifyTime};