universo-platform-3d

Форк
0
26 строк · 1014.0 Байт
1
import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common'
2

3
import { Socket } from 'socket.io'
4
import { FirebaseAuthenticationService } from '../firebase/firebase-authentication.service'
5
import { WsAuthHelperService } from './ws-auth-helper.service'
6

7
/**
8
 * @description This is used with WsAuthHelperService to ensure that the user is authed before processing a request
9
 * See: https://github.com/nestjs/nest/issues/882#issuecomment-1493106283
10
 */
11
@Injectable()
12
export class WsAuthGuard implements CanActivate {
13
  constructor(private readonly wsAuthHelperService: WsAuthHelperService) {}
14

15
  async canActivate(context: ExecutionContext): Promise<boolean> {
16
    const client = context.switchToWs().getClient<Socket>()
17

18
    // wait until client data initialization will be finished
19
    const check =
20
      (await this.wsAuthHelperService.finishInitialization(
21
        client['id'] as any
22
      )) ||
23
      this.wsAuthHelperService.initializationSuccess[client['id'] as string]
24
    return check
25
  }
26
}
27

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.