import { FastifyRequest, FastifyReply } from 'fastify'; import { RequestRequirement } from '../RequestRequirement'; export class UserIsLoggedIn extends RequestRequirement { async handle( request:FastifyRequest, reply:FastifyReply ):Promise { let requestBody = JSON.parse( request.body as string ); let tokenData = requestBody as { token:string }; if ( ! tokenData ) { return Promise.resolve( false ); } let tokenID = tokenData.token; let session = this._handler._ums._sessions.get( tokenID ); if ( ! session ) { return Promise.resolve( false ); } let token = this._handler._ums.tokenDB._tokens.get( tokenID ); let isValid = await this._handler._ums.tokenDB.validate( token, request.ip ); if ( ! isValid ) { return Promise.resolve( false ); } return Promise.resolve( true ); } }