angular - AngularFire2 の emailVerified を使用して、電子メールが検証されていないユーザーをリダイレクトするにはどうすればよいですか?

okwaves2024-01-25  9

emailVerified AngularFire2 エクスポート パイプを使用して、電子メールがまだ検証されていないユーザーを特定のルートからリダイレクトする例が見つかりません。

redirectLoggedInTo(redirect)、redirectUnauthorizedTo(redirect)、および hasCustomClaim(claim) の使用方法に関するユースケースが提供されます。

AngularFire チームは都合よく、GitHub ページ (https://github.com/angular/angularfire/blob/master/docs/auth/router-guards.md) に例を掲載することを避けています。



------------------------

ソース コードの emailVerified は次のとおりです:

export const emailVerified: AuthPipe = map(user => !!user && user.emailVerified)

したがって、次のように 2 番目のマップを使用できます。

import { AngularFireAuthGuard, emailVerified } from '@angular/fire/auth-guard'
import { map } from 'rxjs/operators'

...

const redirectUnverifiedUser = () =>
  pipe(
    emailVerified,
    map(emailVerified => {
      if (emailVerified) {
        return true;
      } else {
        return ['login', 'verify-email']
      }
    })
  );

...そしてルート設定内:

{
  path: 'example',
  ...
  canActivate: [AngularFireAuthGuard],
  data: { authGuardPipe: redirectUnverifiedUser },
},

未承認のユーザーをログイン ページにリダイレクトする必要があるが、電子メールを認証していない承認済みのユーザーも別のページにリダイレクトする必要がある場合は、次のコマンドを使用できます。

import { AngularFireAuthGuard, AuthPipeGenerator } from '@angular/fire/auth-guard'
import { map } from 'rxjs/operators'

...

const redirectUnauthorizedOrUnverifiedUser: AuthPipeGenerator = () =>
  map(user => {
    if (user) {
      if (user.emailVerified) {
        return true
      } else {
        return ['login', 'verify-email']
      }
    } else {
      return ['login']
    }
  })

...そしてルート設定内で次のようにします:

{
  path: 'example',
  ...
  canActivate: [AngularFireAuthGuard],
  data: { authGuardPipe: redirectUnauthorizedOrUnverifiedUser },
},

1

私の新しい質問に答えてもらえますか: stackoverflow.com/questions/74575931/…参考までに、あなたの答えは古くなっています。 AngularFireAuthGuard はモジュール '@angular/fire/auth-guard' のエクスポートされたメンバーではなくなりました。

– トーマス デビッド キーホー

2022 年 11 月 26 日 16:09

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。