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

40 lines
944 B
TypeScript
Raw Normal View History

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-15 18:58:30 +00:00
return this.sendError( "No token data" );
2025-11-10 17:41:48 +00:00
}
let tokenID = tokenData.token;
2025-11-15 18:58:30 +00:00
let session = this.ums._sessions.get( tokenID );
2025-11-10 17:41:48 +00:00
if ( ! session )
{
2025-11-15 18:58:30 +00:00
return this.sendError( "No session for token:" + tokenID );
2025-11-10 17:41:48 +00:00
}
2025-11-15 18:58:30 +00:00
let token = this.ums.tokenDB._tokens.get( tokenID );
2025-11-10 17:41:48 +00:00
2025-11-15 18:58:30 +00:00
let isValid = await this.ums.tokenDB.validate( token, request.ip );
2025-11-10 17:41:48 +00:00
if ( ! isValid )
{
2025-11-15 18:58:30 +00:00
return this.sendError( "Invalid token" + tokenID );
2025-11-10 17:41:48 +00:00
}
2025-11-15 18:58:30 +00:00
return this.giveOK();
2025-11-10 17:41:48 +00:00
}
}