diff --git a/apps/web-server/src/components/models/auth/SignIn/SignIn.tsx b/apps/web-server/src/components/models/auth/SignIn/SignIn.tsx index f83b70151..0f67bc611 100644 --- a/apps/web-server/src/components/models/auth/SignIn/SignIn.tsx +++ b/apps/web-server/src/components/models/auth/SignIn/SignIn.tsx @@ -392,12 +392,6 @@ export const SignIn: React.FC = () => { await router.push('/'); }) .catch((error: FirebaseError) => { - if (error.code === 'auth/admin-restricted-operation') { - setError( - '匿名認証は有効化されていないため、利用できません。' - ); - return; - } setError(error); }); }} @@ -410,28 +404,112 @@ export const SignIn: React.FC = () => { ); } - const authErrorToString = (error: FirebaseError | string) => { + const authErrorToAlertProps = ( + error: FirebaseError | string + ): { + message: React.ReactNode; + type: 'error' | 'warning' | 'info'; + description: string | undefined; + } | null => { if (typeof error === 'string') { - return error; + return { message: error, type: 'error', description: undefined }; } + // See https://firebase.google.com/docs/reference/js/v8/firebase.auth.Auth switch (error.code) { case 'auth/operation-not-allowed': - return '選択したログインプロバイダは有効化されていないため、利用できません。'; + return { + message: ( +
選択したログイン方法は有効化されていないため、利用できません。
+
+ サーバー運用者の方へ:
+
+ {
+ 'このログイン方法を有効化する場合は、Firebase Authentication の管理画面にある「ログイン プロバイダ」から有効化できます。このログイン方法を有効化しない場合は、NEXT_PUBLIC_AUTH_PROVIDERS の設定でボタンを隠すこともできます。'
+ }
+
+ この Web + サーバーのドメインは承認されていないため、処理を実行できません。 +
+
+ サーバー運用者の方へ:
+
+ {
+ 'Firebase Authentication の管理画面から、この Web サーバーのドメインを承認済みドメインに追加する必要があります。例えばこのページの URL が https://flocon.example.com/signin の場合は、flocon.example.com を承認済みドメインとして追加します。'
+ }
+