エス技研

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


CakePHP4のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説

      2022/04/06

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プラグインをインストールします。
 
下記コマンドを実行します。
 

 
 
バージョンに関するエラーが表示されてインストール出来ない場合は、下記のように最新バージョン以外のバージョンを指定してインストールを試してみてください。
前者は「11.1」を指定する方法で、後者は「11系の最新版」を指定する方法となります。
 

 
 
コンポーザーの使い方については「CakePHP3でcomposerを利用してライブラリ・プラグインをインストールする方法」を参照してください。
 
 

2.CakeDC/Usersをロードする処理を記述

 
インストールした「CakeDC/Users」プラグインをロードする処理を記述します。
 
具体的には「/src/Application.php」の 66行目辺りに、下記のプラグインをロードする処理を記述します。
 

 
 
「CakePHP3」のころは「/config/bootstrap.php」に記載していましたが、「CakePHP4」では「/src/Application.php」に変更になっています。
 
 

3.migrationsコマンドで Usersテーブルを構築

 
Usersプラグインで利用するテーブルを構築します。
 
テーブルを構築するために migrationsコマンドを実行します。
 

 
 
この 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)を登録します。
 

 
コマンドを実行すると、下記の様に処理結果が画面に表示されます。
 

 
上記の「superadmin」は、ユーザ管理画面を利用するために必要な、完全な管理権限が与えられているスーパーユーザとなります。
また、ここで表示されるパスワードはここ以外では確認する方法がありませんので、しっかりと記録しておきましょう。
 
 

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

 - CakePHP 3.x 4.x

GoogleAdwords

GoogleAdwords

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

Message

メールアドレスが公開されることはありません。

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

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

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

  関連記事

CakePHP3のデバッグキット(DebugKit)を強制的に有効、無効に変更する方法
CakePHP3のデバッグキット(DebugKit)を強制的に有効、無効に変更する方法

CakePHP3に付属しているデバッグのためのツール、デバッグキットを強制的に有効化、無効化する方法を解説。初期設定では開発環境としてありそうなドメインの場合のみ有効になるように設定されている。

CakePHP3のタイムゾーンを協定世界時UTCから日本標準時間JSTにずれを変更する方法
CakePHP3のタイムゾーンを協定世界時UTCから日本標準時間JSTにずれを変更する方法

CakePHP3の標準設定のタイムゾーンは「UTC(協定世界時)」に設定されている。これを日本標準時に変更する方法(app.php、bootstrap.phpの変更方法)の解説。

CakePHP3で環境変数を設定して本番環境と開発環境を分けて処理をする場合
CakePHP3で環境変数を設定して本番環境と開発環境を分けて処理をする場合

CakePHP3で開発環境と本番環境とで違う設定ファイルを読み込ませて環境ごとに定数を切り替える方法を解説。Apacheのhttpd.confに環境変数を設定し、それを読み込み判別する。

CakePHP3でkeywords、DescriptionをHTMLヘルパーを使って設定する
CakePHP3でkeywords、DescriptionをHTMLヘルパーを使って設定する

CakePHP3のkeywordsとdescriptionを設定する方法の解説。CakePHP3にはmetaタグを編集するHTMLヘルパーが用意されているためそれを利用すればOK!ポイントはブロック化を有効にすること。

MySQL、CakePHP 2.3で「tinyint(1)」の Boolean型の動作を再確認

MySQL+CakePHPの環境で「tinyint(1)」を利用する際の動作を検証。「tinyint(1)」の Boolean型について CakePHPでは自動処理が実施されていることを確認しました。

CakePHP 2.3 Search Pluginで検索処理 その1設置方法

CakePHPの検索プラグイン Search Pluginの設置方法と基本的な検索処理の解説です。

CakePHP3でテーブルにカラムを追加したときに変更するポイントのまとめ
CakePHP3でテーブルにカラム(項目)を追加したときに変更するポイントのまとめ

CakePHP3でシステム開発をする際、途中でカラムを追加した場合に何を変更すればいいかを確認。カラムを追加する前後で Bakeした結果を比較し、変更になった点をリストアップした。

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

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

CakePHP3のルーティング(routes.php)の変更が反映されない時はキャッシュのクリアを
CakePHP3のルーティング(routes.php)の変更が反映されない時はキャッシュのクリアを

CakePHP3でルーティングの設定変更をしたけど反映されない!そんなときは慌てず騒がずキャッシュをクリアしよう!ルーティングの設定もキャッシュされることがあるらしい。

CakePHP3のfriendsofcake/searchでツリーカテゴリーの子階層も含めて検索する方法
CakePHP3のfriendsofcake/searchでツリーカテゴリーの子階層も含めて検索する方法

CakePHP3のツリービヘイビアを使ったツリーカテゴリーの子階層も含めての検索を検索プラグイン「friendsofcake/search」を使って実現する方法を解説しました。