CakePHP4のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説
2023/12/28
CakePHP4のユーザ認証管理プラグイン CakeDC/Usersのインストール手順解説
CakePHPには、ユーザ登録・管理・ログイン認証などの機能を提供する「CakeDC/Users」というプラグインが存在しています。
この記事では「CakeDC/Users」を「CakePHP4」にインストールして使えるようにする手順を解説します。
「CakePHP3のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説・3.6以降対応」の記事では「CakeDC/Users」を「CakePHP3」にインストールする方法や、「CakeDC/Users」自体についての説明、および、「CakeDC/Users」を開発している「CakeDC」についての説明などに付いても書いていますので、初めて「CakeDC/Users」を使ってみよう、という方は併せて参考にしていただければ、と思います。
ちなみに、「CakeDC/Users」のインストール方法は「CakePHP3」のころと少しの違いしかないのですが、その違いを先の記事に追加して説明すると読みにくい記事となってしまうため、記事を分けることとしました。
そのため、「CakePHP4」に「CakeDC/Users」のインストールだけできればいい、ということであればこの記事だけで問題ありませんが、少し詳しく内容を掘り下げたい場合は「CakePHP3のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説・3.6以降対応」の方の記事も読んでいただく方がいいかと思います。
CakeDC/Usersプラグインが提供する機能
「CakeDC/Users」プラグインは、ユーザ管理システムを提供するもので、ユーザの新規登録、ログイン認証、および、管理側で管理する会員管理の仕組みなどをプラグインとして提供するものです。
具体的な機能に関しては以下のようなものがあります。
- ユーザ登録
- メールで送信されたトークンによるアカウント確認
- ユーザログイン(メールアドレス/パスワード)
- ソーシャルログイン(Twitter、Facebook、Google、Instagram、LinkedIn)
- メールでトークンを要求し、新しいパスワードを入力することによってパスワードをリセット
- ユーザ管理(登録/更新/削除)
- シンプルな権限管理
- シンプルな Rbacとスーパーユーザの承認
- Cookie機能を使用した RememberMe(ログイン状態を保存する)
- ユーザ登録時に reCAPTCHA使用
- 二要素認証
上記の太字の機能は、CakePHP3の時に紹介した「v3.1.5」から「v11系」になって追加された箇所になります。
下記の GitHubにも記載されています。
https://github.com/CakeDC/users/blob/11.next-cake4/Docs/Documentation/Overview.md
CakePHP4のユーザ認証管理プラグイン CakeDC/Usersの導入解説
CakeDC/Usersのインストール、設定方法
1.コンポーザーを使って CakeDC/Usersプラグインをインストール
コンポーザーを使って CakeDC/Usersプラグインをインストールします。
下記コマンドを実行します。
1 |
$ composer require cakedc/users |
バージョンに関するエラーが表示されてインストール出来ない場合は、下記のように最新バージョン以外のバージョンを指定してインストールを試してみてください。
前者は「11.1」を指定する方法で、後者は「11系の最新版」を指定する方法となります。
1 2 |
$ composer require cakedc/users:11.1 $ composer require cakedc/users:11.* |
コンポーザーの使い方については「CakePHP3でcomposerを利用してライブラリ・プラグインをインストールする方法」を参照してください。
2.CakeDC/Usersをロードする処理を記述
インストールした「CakeDC/Users」プラグインをロードする処理を記述します。
具体的には「/src/Application.php」の 66行目辺りに、下記のプラグインをロードする処理を記述します。
1 2 3 4 |
// Load more plugins here // CakeDC/Usersのプラグインのロード $this->addPlugin(\CakeDC\Users\Plugin::class); |
「CakePHP3」のころは「/config/bootstrap.php」に記載していましたが、「CakePHP4」では「/src/Application.php」に変更になっています。
3.migrationsコマンドで Usersテーブルを構築
Usersプラグインで利用するテーブルを構築します。
テーブルを構築するために migrationsコマンドを実行します。
1 |
$ bin/cake migrations migrate -p CakeDC/Users |
この migrationsコマンドを実行すると、下記の 3つのテーブルが作成されます。
ユーザーと資格情報が格納される「Users」
ソーシャル・ログイン機能のトークンが格納され管理される「social_accounts」
何に使われているのかがよくわからない「cake_d_c_users_phinxlog」
の 3つです。
上記の「migrations」コマンドは、CakePHP4をインストールしているルートフォルダで実行しますが、Windowsの XAMPP環境などで cakeコマンドにパスが通っていないときは、ルートフォルダの中にある「bin」フォルダ内に移動して「cake migrations migrate -p CakeDC/Users
」を実行してみてください。
次項の「管理権限ユーザ作成」の時も同様です。
4.管理権限ユーザを作成
構築するユーザ管理システムの管理者権限のユーザを作成します。
下記コマンドを実行し、新しいユーザ(superadmin)を登録します。
1 |
$ bin/cake users addSuperuser |
コマンドを実行すると、下記の様に処理結果が画面に表示されます。
1 2 3 4 5 6 7 |
$ cake users addSuperuser Superuser added: Id: 15aa3aaa-7aaa-4a31-b010-57a3aa954a39 Username: superadmin Email: superadmin@example.com Role: superuser Password: 1c59cc31c70c4c88819cc94c952c76c1 |
上記の「superadmin」は、ユーザ管理画面を利用するために必要な、完全な管理権限が与えられているスーパーユーザとなります。
また、ここで表示されるパスワードはここ以外では確認する方法がありませんので、しっかりと記録しておきましょう。
また、「スーパーユーザ権限」のユーザの ID、パスワードを指定して追加する場合は、下記のコマンドで ID、パスワードを指定します。
1 |
bin/cake users add_superuser -u (ログインID) -p (パスワード) |
ちなみに、「スーパーユーザ権限」は「users」テーブルの「is_superuser」カラムでコントロールされています。
「1:スーパーユーザ」「0:一般ユーザ」となっています。
5.Usersプラグインの動作確認
前項までの手順で基本的な「CakeDC/Users」のインストール作業は終了となります。
この項では、インストール作業が正しく行われたかどうかの確認のために、「CakeDC/Users」が提供する各画面にアクセスをしてみます。
ログイン画面の URLは以下になります。
http://example.com/login
上記でアクセスできない場合は、下記を入力してみてください。
http://example.com/users/login
ログインに使う ID、PASSは、「4.管理権限ユーザを作成」で作成した「superadmin」とそのパスワードになります。
ログアウトする場合の URLは以下になります。
下記のログアウト URLを入力すると、ログアウト処理が実行され、ログイン画面にリダイレクトします。
http://example.com/logout
「CakeDC/Users」をインストールした初期状態の設定では、「ログイン画面」「パスワード変更画面」「パスワードリセット画面」を除いた画面にアクセスする場合は、ログイン認証が必要な状態になっています。
(サイトのトップページにアクセスするにもログインが必要な状態になっています。)
CakeDC/Usersのユーザ登録、ログイン、管理側の一覧画面などの URL
インストールした「CakeDC/Users」で構築された各画面の URLを記載します。
ログイン画面
http://example.com/login
http://example.com/users/login
ログアウト URL
http://example.com/logout
http://example.com/users/logout
管理側のユーザ一覧画面
http://example.com/users/index
管理側のユーザ登録・更新・削除・詳細画面
http://example.com/users/add
http://example.com/users/edit/:id
http://example.com/users/delete/:id
http://example.com/users/view/:id
※add以外は、アクセス時にパラメータとして IDが必要です
ユーザ側の新規登録画面
http://example.com/register
http://example.com/users/register
ユーザ側のユーザ登録時のメール認証のメール再送信画面
http://example.com/users/resend-token-validation
ユーザ側のユーザプロフィール画面(ログイン時)
http://example.com//users/profile
ユーザ側のパスワード変更画面(ログイン時)
http://example.com/users/change-password
ユーザ側のパスワードリセット画面(メールアドレス入力画面)
http://example.com/users/request-reset-password
「CakePHP3」の URLとは似ていながら異なっていますので、「Missing Method in UsersController」などのエラーが出ても焦らずに改めて URLを確認してみてください。
例えば「管理側のユーザ一覧画面」は
CakePHP3では
http://example.com/users/users/
でしたが、CakePHP4では
http://example.com/users/index
となっています。また
http://example.com/users/
でもエラーとなるため私はかなり試行錯誤して無駄な時間を使ってしまいました。
CakeDC/Usersがインストールされる場所
コンポーザーを使って CakeDC/Usersプラグインをインストールすると、下記の場所にプラグイン関連ファイル一式が設置されます。
/vendor/cakedc/users
下記の場所が CakeDC/Usersの設定ファイルが設置されています。
/vendor/cakedc/users/config
下記の場所に、プラグインのコントローラーの実際の処理が記述してあるファイルが設置されています。
/vendor/cakedc/users/src/Controller/Traits
下記の場所には CakeDC/Usersの入力画面、一覧画面などのテンプレートが設置されています。
/vendor/cakedc/users/templates
ただし、「/vendor/cakedc/users」の中にあるファイル一式はコアファイルですので、これらのファイルは直接は変更はしないものです。
例えば、ログイン画面のテンプレートファイルをカスタマイズする場合は、
「/vendor/cakedc/users/templates/Users/login.php」
を
「/templates/Plugin/CakeDC/Users/Users/login.php」
にコピーして、コピーしたファイルをカスタマイズします。
ユーザの新規登録画面の解説と、テンプレートのカスタマイズなどの解説は「CakePHP4のCakeDC/Usersの画面、メール本文テンプレートのカスタマイズ方法解説」に書いていますので、こちらを参照してください。
参考サイト
最後に、この記事を書くために参考にした「CakeDC」のオフィシャルブログや GitHubにアップされているドキュメントをご紹介します。
記事を書く際には、CakeDCのオフィシャルブログと GitHubにアップされているドキュメントを参考にさせていただいています。
https://www.cakedc.com/plugins/users#plugin
https://www.cakedc.com/jorge_gonzalez/2020/01/17/users-plugin-9-x-for-cakephp4
https://github.com/CakeDC/users
https://github.com/CakeDC/users/blob/master/Docs/Documentation/Installation.md
CakePHP4の関連記事
CakePHP4のFrozenDateで1ヵ月前、先月、今月1日、来月末の日付などを算出する方法CakePHP4のcake cache clear_allでPermission deniedはパーミッションの変更が必要
CakePHP4のクリエビルダーを使用してOR条件をAND条件でつなぐSQL文を作る方法
CakePHP4のController内でViewテンプレート、レイアウトの変更設定を記述する方法
CakePHP4から外部のデータベースにアクセスする方法解説
CakePHP4の数値項目は「like %10%」の部分一致検索(find select)はできない
CakePHP4でロギングスコープやログレベルを使用してログを出し分ける方法を解説
CakePHP2、CakePHP3、CakePHP4、CakePHP5のバージョンを調べる 2つの方法
Windows上のXAMPP環境のCakePHPのコマンド実行時に環境変数を指定する方法
CakePHP4で複数の引数(パラメータ)を付与してコマンドを実行する方法
その他の「CakePHP4」に関する記事一覧
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
VirtualBoxにCentOS、Apache、MySQL、PHPをインストールするところから初めてCakePHP3の開発環境を構築する手順を詳細解説。この記事1つで全ての設定が完了する。
-
CakePHP3でシェルを作成しコマンドラインから実行・CakePHP2との違い
CakePHP3のシェルスクリプトを作成し、コマンドラインから実行する方法を解説。複数単語をつなげる場合の対応方法がCakePHP2より制限が厳しくなったのでCakePHP3の命名規則の確認が必要だ。
-
CakePHP3のForm Helperの使い方のまとめ
CakePHP3になりフォームヘルパーの使い方も大きく変わりましたので、使い方をまとめました。基本的な使い方からプラスアルファの便利な使い方まで紹介。
-
CakePHPで favicon.icoやapple-touch-icon-144-precomposed.pngが could not be foundのエラーが出るときの対処方法
CakePHPで「CakeDC/Users」などルーティングを行うプラグインを利用するときに、favicon.icoやapple-touch-icon-144-precomposed.pngがNotFoundエラーになることがある。その対処方法の解説。
-
CakePHP3のインストールでURL rewriting……のエラーが!その解決方法解説
CakePHP3をインストールしたら URL rewriting is not properly configured.のエラーが。原因は.htaccessが有効になっていないこと。httpd.confに設定を追加すればOK。
-
CakePHP3のcontroller内でテンプレート、レイアウトを変更する際の指定方法
CakePHP3でテンプレートファイルやレイアウトファイルをデフォルトのものから別のものに変更したい場合の指定方法を解説。
-
CakePHP4のcake cache clear_allでPermission deniedはパーミッションの変更が必要
CakePHP4でキャッシュをクリアするコマンドcake cache clear_allでPermission deniedのエラーが出るのはcakeにパーミッションが足りないとき。その対処方法を解説。
-
CakePHPのFlashエラーは出るが入力項目ごとのメッセージが出ないエラーの原因
Bakeして自動生成した入力フォーム処理を元に少し処理を追加したら、入力エラーがあってもエラーメッセージが表示されなくなった。原因はリダイレクトの処理にあった。
-
CakePHP3で静的ページの作成は webrootか pagesを使う。トップページを参考に解説
CakePHP3で静的なページを設置する場合の方法(webrootとpagesとを活用する方法)を解説。pagesの解説はデフォルトのトップページがどう表示されているかを参考に解説。ルーティングの機能も。
-
CakePHP3、CakePHP4のキャッシュをクリアする方法「bin/cake cache clear_all」を使う
CakePHP3、CakePHP4では処理を高速化する手法の一つとしてキャッシュを利用している。しかし、その情報は元の情報を更新しても反映されない場合がある。そんなときはキャッシュを削除する必要がある。