はじめに
前回の記事でAPIを利用したAuth0のユーザー登録をやってみましたが
ユーザー登録は ManagementAPIで行い、ログイン画面はUniversal Loginを利用する場合はUniversal Loginから新規登録をできないように設定しておきたいかと思います。
今回はUniversal Loginから新規登録ができないように設定をしてみました。
Database Connections設定
新規登録をできないようにするにはUniversal Loginの設定ではなくデータベースの設定を変更する必要があります。
Auth0の管理画面を開いてデータベースの設定を開きます。
データベース設定の中のDisable Sign Upsを以下のようにONにします。

この設定だけでUniversal LoginからSignUpの選択肢が消えます。
Classicの場合は以下のようにLogin、SignUpのタブが消え、ログインのみが可能になります。

Newの場合は下のほうに表示されていたSingUpのリンクが消えます。

ソーシャルログインによる新規登録の無効化
ここまでの手順でAuth0のデータベースに対する新規登録は無効化することができましたが
これだけだとソーシャルログインによるユーザーの登録を防ぐことはできません。
ソーシャルログインしてきたユーザーがデータベースに存在しない場合はユーザーが作成されてしまいます。
ソーシャルログインを利用しつつ、ソーシャルログインによる新規登録は防ぎたい場合はRulesを使って制御します。
Rulesのテンプレートの中からDisable social signupsを選択してRulesを追加します。

このRulesを追加した状態でソーシャルログインによる新規登録を行うとエラーが返却されるので
アプリケーション側でエラーハンドリングをしてください。(エラーの詳細はDisable social signupsのコードを参照してください。)
ソーシャルログインによる新規登録を無効化するときの注意点
ソーシャルログインによる新規登録の無効化のほうはRulesを使った制御になっているので
データベース設定での新規登録の無効化とは違い、実はデータベース上にユーザーが作成されてしまいます。
Rulesの中でソーシャルログインによる新規登録が行われたユーザーはapp_metadataにis_signupというプロパティが追加されており、これがtrueに場合にログインエラーとしているだけです。

もしもDisable social signupsのRulesでエラーとなっているユーザーのログインを許可したい場合は
app_metadataのis_signupプロパティを削除してください。
おわりに
ユーザー登録をManagementAPIや管理画面からの操作だけでやりたい場合は
Universal Loginからの新規登録の無効化もぜひ一緒にやってみてください。
