39 lines
888 B
TypeScript
39 lines
888 B
TypeScript
|
|
import { FastifyRequest, FastifyReply } from 'fastify';
|
|
import { RequestRequirement } from '../RequestRequirement';
|
|
|
|
export class UserIsLoggedIn extends RequestRequirement
|
|
{
|
|
|
|
async handle( request:FastifyRequest, reply:FastifyReply ):Promise<boolean>
|
|
{
|
|
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 );
|
|
}
|
|
}
|