2025-11-10 17:41:48 +00:00
|
|
|
|
|
|
|
|
import { FastifyRequest, FastifyReply } from 'fastify';
|
|
|
|
|
import { RequestRequirement } from '../RequestRequirement';
|
2025-11-11 21:46:18 +00:00
|
|
|
import { Message } from '../../../../browser/messages/Message';
|
2025-11-10 17:41:48 +00:00
|
|
|
|
|
|
|
|
export class UserIsLoggedIn extends RequestRequirement
|
|
|
|
|
{
|
|
|
|
|
|
2025-11-11 21:46:18 +00:00
|
|
|
async handle( request:FastifyRequest, reply:FastifyReply ):Promise<Message[]>
|
2025-11-10 17:41:48 +00:00
|
|
|
{
|
2025-11-11 13:13:39 +00:00
|
|
|
let requestBody = request.body;
|
2025-11-10 17:41:48 +00:00
|
|
|
let tokenData = requestBody as { token:string };
|
|
|
|
|
|
|
|
|
|
if ( ! tokenData )
|
|
|
|
|
{
|
2025-11-11 21:46:18 +00:00
|
|
|
return Promise.resolve( [ Message.Error( "No token data" )] );
|
2025-11-10 17:41:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let tokenID = tokenData.token;
|
|
|
|
|
|
|
|
|
|
let session = this._handler._ums._sessions.get( tokenID );
|
|
|
|
|
|
|
|
|
|
if ( ! session )
|
|
|
|
|
{
|
2025-11-11 21:46:18 +00:00
|
|
|
return Promise.resolve( [ Message.Error( "No session for token:" + tokenID )] );
|
2025-11-10 17:41:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let token = this._handler._ums.tokenDB._tokens.get( tokenID );
|
|
|
|
|
|
|
|
|
|
let isValid = await this._handler._ums.tokenDB.validate( token, request.ip );
|
|
|
|
|
|
|
|
|
|
if ( ! isValid )
|
|
|
|
|
{
|
2025-11-11 21:46:18 +00:00
|
|
|
return Promise.resolve( [ Message.Error( "Invalid token" + tokenID )] );
|
2025-11-10 17:41:48 +00:00
|
|
|
}
|
|
|
|
|
|
2025-11-11 21:46:18 +00:00
|
|
|
return Promise.resolve( [] );
|
2025-11-10 17:41:48 +00:00
|
|
|
}
|
|
|
|
|
}
|