import { FastifyRequest, FastifyReply } from 'fastify'; import { RequestRequirement } from '../RequestRequirement'; import { Message } from '../../../../browser/messages/Message'; export class UserIsLoggedIn extends RequestRequirement { async handle( request:FastifyRequest, reply:FastifyReply ):Promise { let requestBody = request.body; let tokenData = requestBody as { token:string }; if ( ! tokenData ) { return this.sendError( "No token data" ); } let tokenID = tokenData.token; let session = this.ums._sessions.get( tokenID ); if ( ! session ) { return this.sendError( "No session for token: " + tokenID ); } let token = this.ums.tokenDB._tokens.get( tokenID ); let messages = []; let isValid = await this.ums.tokenDB.validate( token, request.ip, messages ); if ( ! isValid ) { let message = messages.length > 0 ? ( " " + messages.join( ", " ) ) : ""; return this.sendError( "Invalid token: " + tokenID + message ); } return this.giveOK(); } }