エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


CakePHP4のCakeDC/Usersのログイン時のリダイレクトとユーザ権限管理の設定解説

      2023/12/28

CakeDC/Usersのリダイレクト、ユーザ権限管理等の設定解説

 
CakePHP4のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説」の記事で、CakePHP4で CakeDC/Usersを使ってログイン認証機能を実装し、実際にログインを実施してみました。
では、ログイン時に遷移する画面は、どのファイルで設定しているのでしょうか?
 
今回の記事では、ログイン時、ログアウト時に遷移する画面(リダイレクトする画面)、および、アクセスする際にログイン認証が必要な画面、必要ない画面などを設定する方法を解説します。
 
 

CakeDC/Usersのログイン、ログアウト時のリダイレクト設定

 

0.「CakeDC/Users」のログイン、ログアウト時の設定ファイル

 
プラグイン「CakeDC/Users」の設定ファイルは下記にあります。
 /vendor/cakedc/users/config/users.php
 
このファイルを直接変更しても設定を変更することはできますが、プラグインのコアファイルとなりますので、一般的にはこのファイルを直接変更することはしません。
(「vendor」フォルダの中身はプラグインのコアファイルとなります。)
 
多くの場合は、このファイル設定を別の場所に複製して、そちらを変更します。
この記事ではその方法を解説しています。
 
 

1.users.phpを作成、編集

 
前項で説明したとおり、まずは設定ファイルを複製します。
 
 /vendor/cakedc/users/config/users.php

 /config/users.php
にコピーします。
 
 
本来は「users.php」ファイルを全部丸ごと複製した方がいいと思いますが、今回は実験のために、「users.php」ファイルを新規作成し、下記の内容を記述します。
 

 
上記の内容は「/vendor/cakedc/users/config/users.php」の 150行目付近にあるものを少し改変しています。
 
 
上記の設定は、ログインしたときのリダイレクト先を下記の URL(ユーザ一覧画面)としています。
 http://example.com/users/index
 
ログアウトしたときのリダイレクト先を下記の URL(ユーザ登録画面)としています。
 http://example.com/register
 
 

2.bootstrap.phpに「users.php」を読み込む設定

 
続いて、前項で設置した「users.php」を読み込む設定を記述します。
 
編集するファイルは下記になります。
/src/Application.php
 
下記の 5行目の記述を追加します。

 
追記する場所は「CakePHP4のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説」で、CakeDC/Usersをインストールしたときに追記した、2行目のプラグインをロードする「$this->addPlugin(....」に続けて記述をします。
 
 
これで、ログインしたとき、および、ログアウトしたときのリダイレクト先の設定は完了です。
 
 
「/vendor/cakedc/users/config/users.php」に記載してあるその他の変更したい項目がある場合は、「/config/users.php」にコピペして値を変更するとその値が適用されます。
「/config/users.php」に記載していない項目は、「/vendor/cakedc/users/config/users.php」に記載してある設定が適用されます。
「/vendor/cakedc/users/config/users.php」にも記載が無い項目は、プログラム上のデフォルト値が適用されます。
 
 

CakeDC/Usersのログイン権限の設定

 
前項では、ログイン時、ログアウト時のリダイレクト先の設定の解説をしましたが、続けて、ログインが必要なページ、ログインが不要なページを設定します。
 
具体的には、下記のような設定を行います。
・ログインしていなくてもアクセスできるページ
・ログインしているユーザがアクセスできるページ
・admin(管理者権限)でログインしているときにアクセスできるページ
 
この設定を間違えると、だれもログイン、ログアウトができなくなったり、だれでもユーザ一覧を見ることができるようになったりしますので、慎重な設定が求められます。
 
 
また、この設定の検証を行うために、最初に作成した「admin」以外の一般ユーザのアカウントを作成しておいてください。
 
 

0.「CakeDC/Users」のログイン要・不要の設定ファイル

 
プラグイン「CakeDC/Users」のログイン要・不要の設定ファイルは下記になります。
 /vendor/cakedc/users/config/permissions.php
 
先の「users.php」と同様、この「permissions.php」に記載してある内容を変更する場合は、別の場所に複製してそちらを変更します。
 
 

1.permissions.phpを作成、編集

 
前項と同様に、まずは設定ファイルを複製します。
 
 /vendor/cakedc/users/config/permissions.php

 /config/permissions.php
にコピーします。
 
 
本来は「permissions.php」ファイルを全部丸ごと複製した方がいいと思いますが、今回は実験のために、「permissions.php」ファイルを新規作成し、下記の内容を記述します。
 

 
上記の内容は「/vendor/cakedc/users/config/permissions.php」の 52行目付近、100行目付近、109行目にあるものです。
 
それを元に、上記の 62、63行目に「index」「add」を追加しています。
 
 
先に紹介した「users.php」の設定は、設定を読み込む「Configure::write(....」の設定が必要でしたが、「permissions.php」は設置するだけで記述した内容が反映されます。
 
 

permissions.phpの設定方法

 
前項の「permissions.php」の 5行目からの「all bypass」と書かれている箇所が、ログイン認証なしにアクセスが可能なページになります。
39行目の「'bypassAuth' => true」を指定することで、その設定になります。
 
「CakeDC/Users」の Ver. 9より古いバージョンでは、各コントローラーに設定を記述していましたが、Ver. 9以降では「permissions.php」でまとめて管理する方法に変更されました。
詳細は下記を参照してください。
https://www.cakedc.com/rochamarcelo/2020/02/03/cakedc-users-9-x-easy-migration-from-authcomponent
 
 
また、41行目からの「admin role allowed to all the things」と書かれている箇所が、「スーパーユーザ権限(admin権限)」の認証した場合にアクセスできるページの設定です。
権限は 43行目の「role」で指定し、「スーパーユーザ権限(admin権限)」の場合は「'role' => 'admin'」と指定します。
 
また、「admin権限」の場合は全ての項目が「*」となっていますが、これは「すべてのページに対してアクセスを許可する」という設定になっていることを表しています。
 
 
また、51行目からの「specific actions allowed for the all roles in Users plugin」と書かれている箇所が、「一般ユーザ権限(user権限)」の認証した場合にアクセスできるページの設定です。
53行目の「role」は「*」となっていますが、これは認証された全ての権限でアクセス可能、と言う意味です。
デフォルトの設定では「admin権限」と「user権限」しかありませんので、「*」は「user権限」と言う意味になります。
 
62行目に追加した設定によって、先の「users.php」に、ログインしたときのリダイレクト先として設定した下記の URLに一般ユーザがアクセスできるという設定をしています。
 http://example.com/users/index
 
 

「redirect」パラメータでログイン時のリダイレクトページを指定する方法

 
ログイン時のリダイレクトページは「users.php」に記述すると説明しましたが、「redirect」パラメータを使用することで、ログイン時にリダイレクトする URLを指定することもできます。
 
 
CakeDC/Usersのリダイレクトは、下記の仕様になっています。

  • 認証が必要なページにアクセスをした時に、認証していない場合は「?redirect=http%3A%2F%2Fexample.com%2F」のようにリダイレクト先を指定するパラメータが追加された URLのログイン画面に遷移する
  • 「redirect」パラメータが付いた状態でログイン認証を実行すると「redirect」で指定されているページにリダイレクトする
  • 「redirect」がない場合は、「users.php」のリダイレクト設定に従ってリダイレクトをする

 
 
そのため、例えば、
  http://example.com/
にアクセスします。でも、認証が必要なページのため
  http://example.com/login?redirect=http%3A%2F%2Fexample.com%2F
にリダイレクトします。この場合、ログイン認証を通過すると
  http://example.com/
に遷移します。
 
この記事で解説をした設定の場合は「users.php」の設定で「http://example.com/users/index/」にリダイレクトをする設定になっていますが、「redirect」のパラメータが付いていれば、ログイン後は「http://example.com/」にリダイレクトします。
 
基本的なリダイレクト先は「users.php」に指定しておき、クリックするリンクごとにリダイレクト先を指定したい場合は「redirect」パラメータで指定することもできるようになっています。
 
 

CakePHP4のCakeDC/Usersの関連記事

 
CakePHP4の CakeDC/Usersを使うために、基本となるインストールの方法から入力画面のテンプレートのカスタマイズや、リダイレクトの設定など、CakeDC/Usersに関する記事を下記に書いています。
あわせて参考にしてみてください。
 CakePHP4のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説
 CakePHP4のCakeDC/Usersの画面、メール本文テンプレートのカスタマイズ方法解説
 CakePHP4のCakeDC/Usersのログイン時のリダイレクトとユーザ権限管理の設定解説
 
 
また、この記事を書くうえで参考にした記事は下記になります。
 
https://github.com/CakeDC/users/blob/600ea02a2053d51d55380cbb6122fb8a447d7f05/Docs/Documentation/Installation.md
 
https://github.com/CakeDC/users/blob/0c510044adffcbe66bff407b1cdbdd9f87d2476b/Docs/Documentation/Configuration.md
 
 

CakePHP4の関連記事

CakePHPのFlashエラーは出るが入力項目ごとのメッセージが出ないエラーの原因
CakePHP4のフラッシュメッセージの表示場所、デザインを変更する方法を解説
CakePHPで同一テーブル内の値を比較する条件でレコードを取得する方法
国際化と地域化の翻訳機能「__()」を使って定数に変数を埋め込む方法
CakePHP4で現在処理しているコントローラー名、アクション名を取得する方法
CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説
CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説
CakePHP4のメッセージ日本語化の設定(国際化と地域化の機能の使い方の解説)
CakePHP4で公開側と管理側のデザインテンプレートを分ける方法・setLayout()
CakePHP4でcontrollerで実行したバリデーションエラーをmodelのにマージする方法
 
その他の「CakePHP4」に関する記事一覧
 
 

 - CakePHP 3.x 4.x

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHP3にデザインテンプレートBootstrapを導入する方法・friendsofcake/bootstrap-ui使用
CakePHP3にデザインテンプレートBootstrapを導入する方法・friendsofcake/bootstrap-ui使用

CakePHP3にプラグイン「friendsofcake/bootstrap-ui」、デザインテンプレート「Bootstrap」を設置する手順を解説。Bootstrapの簡単な使い方やデフォルトのデザインとの混在方法なども解説。

CakePHP 2.3 コマンドラインからPHPのシェル実行の方法解説

CakePHP 2.3でコマンドラインから CakePHPで記述した処理を実行する方法を解説します。

CakePHP3でレコードを追加、更新(Insert、Update)する複数の方法を紹介
CakePHP3でレコードを保存(追加、更新、Insert、Update)する複数の方法を紹介

CakePHP3でレコードを追加、更新(Insert、Update)する記述方法を解説。1件ずつ処理、全件をまとめて処理、条件に該当する複数件のレコードを処理方法をサンプルコードを用いて解説。

CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説

CakePHP3でパンくずの指定方法の解説。2つのヘルパーがあるが簡単なHTMLヘルパーを使った方法を、実際の状況に合わせて3つのパターン(エレメント化、ブロック化)にして解説。

CakePHP3チュートリアルで日付と時刻のDateTimeでエラーが出たときの対処方法
CakePHP3チュートリアルで日付と時刻のDateTimeでエラーが出たときの対処方法

CakePHP3のブックマークチュートリアルには記載ミスもあり、そのまま動かない個所もある。CakePHP3では namespaceを使うようになったので、classを呼び出すときに¥を追加する必要が!

CakePHP4で現在処理しているコントローラー名、アクション名を取得する方法
CakePHP4で現在処理しているコントローラー名、アクション名を取得する方法

CakePHP3で現在処理しているコントローラー名、アクション名を取得する方法を解説。複数の方法があるが、getParam()メソッドを使う方法が汎用性があって便利かも。

CakePHP3のCakeDC/Usersの画面、メール本文テンプレートのカスタマイズ方法解説
CakePHP3のCakeDC/Usersの画面、メール本文テンプレートのカスタマイズ方法解説

CakeDC謹製Usersプラグインの紹介。ユーザ新規登録の流れを紹介しつつテンプレートファイルがどこにあるか、設定情報ファイルがどこにあるか、を説明しつつカスタマイズの方法を解説します。

CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説
CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説

CakeDC謹製Usersプラグインの紹介。CakePHP4で使う場合のUsersのカスタマイズとして入力項目のバリデーションの変更を、プラグインのファイルは触らずオーバーライドにより実装する方法を解説する。

CakePHP4で公開側と管理側のデザインテンプレートを分ける方法・setLayout()
CakePHP4で公開側と管理側のデザインテンプレートを分ける方法・setLayout()

CakePHP4でデフォルトのレイアウトファイル「default.php」は管理側に使用し、これとは別のデザインを公開側のページに設定したい、を実装する方法を解説。

CakePHP 2.3でファイルをアップロード・その2 ファイル名を乱数で設定

CakePHPのアップロードするファイル名を乱数で変更しセキュリティを高める方法を解説。