library-ts/node/users/requirements/user/UserIsLoggedIn.ts

39 lines
864 B
TypeScript
Raw Normal View History

2025-11-10 17:41:48 +00:00
import { FastifyRequest, FastifyReply } from 'fastify';
import { RequestRequirement } from '../RequestRequirement';
export class UserIsLoggedIn extends RequestRequirement
{
async handle( request:FastifyRequest, reply:FastifyReply ):Promise<boolean>
{
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 )
{
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 );
}
}