in src/panda.ts [27:57]
export function verifyUser(pandaCookie: string | undefined, publicKey: string, currentTime: Date, validateUser: ValidateUserFn): AuthenticationResult {
if(!pandaCookie) {
return { status: AuthenticationStatus.INVALID_COOKIE };
}
const { data, signature } = parseCookie(pandaCookie);
if(!verifySignature(data, signature, publicKey)) {
return { status: AuthenticationStatus.INVALID_COOKIE };
}
const currentTimestampInMilliseconds = currentTime.getTime();
try {
const user: User = parseUser(data);
const isExpired = user.expires < currentTimestampInMilliseconds;
if(isExpired) {
return { status: AuthenticationStatus.EXPIRED, user };
}
if(!validateUser(user)) {
return { status: AuthenticationStatus.NOT_AUTHORISED, user };
}
return { status: AuthenticationStatus.AUTHORISED, user };
} catch(error) {
console.error(error);
return { status: AuthenticationStatus.INVALID_COOKIE };
}
}