mirror of
https://github.com/standardnotes/server
synced 2026-07-14 00:01:54 -04:00
28 lines
1.0 KiB
TypeScript
28 lines
1.0 KiB
TypeScript
import { TokenEncoderInterface, WebSocketConnectionTokenData } from '@standardnotes/security'
|
|
import { inject, injectable } from 'inversify'
|
|
|
|
import TYPES from '../../../Bootstrap/Types'
|
|
import { UseCaseInterface } from '../UseCaseInterface'
|
|
import { CreateWebSocketConnectionDTO } from './CreateWebSocketConnectionDTO'
|
|
import { CreateWebSocketConnectionResponse } from './CreateWebSocketConnectionResponse'
|
|
|
|
@injectable()
|
|
export class CreateWebSocketConnectionToken implements UseCaseInterface {
|
|
constructor(
|
|
@inject(TYPES.WebSocketConnectionTokenEncoder)
|
|
private tokenEncoder: TokenEncoderInterface<WebSocketConnectionTokenData>,
|
|
@inject(TYPES.WEB_SOCKET_CONNECTION_TOKEN_TTL) private tokenTTL: number,
|
|
) {}
|
|
|
|
async execute(dto: CreateWebSocketConnectionDTO): Promise<CreateWebSocketConnectionResponse> {
|
|
const data: WebSocketConnectionTokenData = {
|
|
userUuid: dto.userUuid,
|
|
sessionUuid: dto.sessionUuid,
|
|
}
|
|
|
|
return {
|
|
token: this.tokenEncoder.encodeExpirableToken(data, this.tokenTTL),
|
|
}
|
|
}
|
|
}
|