Social loginとredirectあるいはdrush entity:deleteについて

hagi に投稿

当ブログサイトではSocial Auth Googleモジュールを利用してGoogleログインを利用している。しかし、通常のログインURLは消していない。今後どうしようかについて迷っている。

Googleアカウントでログインしてもらえば、そのアカウントを利用して、Youtube等のアクセス制限をかけるなどが厳格化できる。ログインした人だけが見られる動画を設定しても、そのURLにガードがかかっていなければURLが不注意で漏れれば実体にアクセスすることが可能になる。このブログは今は執筆者は私一人だからどうでも良いのだが、寄稿者に執筆してもらうようになると管理はより丁寧にしないといけない。

ログインできるメールアドレスをGoogleアカウントに限ることにして、それ以外のログインを許さないようにすれば、サイトにパスワードは残らない。もちろん、Drupalはちゃんと暗号化してくれるが、暗号化されていたとしてもパスワードが保管されているのは事実で、Googleログインだけを許す形にしてしまえば、もちろんパスワードは残らない。知らない情報は漏洩することがないから安心である。

デフォルトのURIは/user/loginでSocial Auth Googleモジュールは/user/login/googleだから、Redirectモジュールを利用して、/user/loginに飛んできたら自動的に/user/login/googleに飛ばすことは可能である。ついでに登録申請の/user/registrationやパスワードリセット/user/passwordも不要になるから、全部/user/login/googleに飛ばしてしまえば良い。実験サイトで動作確認をしたところ問題なく動いている。

ただ、ここでふと万が一GoogleログインがGoogle側で落ちていたらどうなるのか気になった。管理者もログインできなくなってしまうと何もできなくなってしまう。ぱっと思いつくのが、CLIでリダイレクトをオフにする方法である。

drush state:set system.maintenance_mode 1

drush pmu redirect

とりあえず、メンテナンスモードにしてモジュールをアンインストールしてしまえば、大丈夫と思ったのだが、残念ながら失敗する。先にredirectに関連するentityを消さないと駄目だと怒られるのである。

調べてみると

drush entity:delete redirect

で消せることが分かった。その後drush pmu redirectを流せばredirectが解除される。

もしentityのIDが分かってれば、drush entity:delete redirect 1のような形で/user/loginのリダイレクトを定義したentityを消せば、redirectモジュールをアンインストールする必要もない。

分かってしまえば大したことではないのだが、こういう細かい調査は時間を食う。

画像は、Social Auth Googleモジュールのページから引用。

タグ