エス技研

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


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

 
 
バージョンに関するエラーが表示されてインストール出来ない場合は、下記のように最新バージョン以外のバージョンを指定してインストールを試してみてください。
前者は「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」は、ユーザ管理画面を利用するために必要な、完全な管理権限が与えられているスーパーユーザとなります。
また、ここで表示されるパスワードはここ以外では確認する方法がありませんので、しっかりと記録しておきましょう。
 
 
また、「スーパーユーザ権限」のユーザの ID、パスワードを指定して追加する場合は、下記のコマンドで ID、パスワードを指定します。
 

 
ちなみに、「スーパーユーザ権限」は「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系でJSONレスポンスの処理ではwithStringBodyを使う。3との違い解説
CakePHP4、CakePHP5の「warning: DebugKit is disabling...」の対処方法
MySQL+CakePHPのdate型、datetime型項目は「2999-12-31」までしか扱えない
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でロギングスコープやログレベルを使用してログを出し分ける方法を解説
 
その他の「CakePHP4」に関する記事一覧
 
 

 - CakePHP 3.x 4.x 5.x

GoogleAdwords

GoogleAdwords

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

Message

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

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

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

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

  関連記事

CakePHP 2.3 Search Pluginで検索処理 その6ORDER、sortソートの機能

CakePHPの検索プラグイン Search Pluginの検索処理の中で order、ソートについての解説です。

CakePHP 2.3 Search Pluginで検索処理 その7queryを使って 日付の範囲検索

CakePHPの検索プラグイン Search Pluginの検索処理の中で queryを使って日付の範囲検索の方法です。

CakePHP3でCookieを保存、呼び出し、削除の操作・CakePHP3.7対応
CakePHP3でCookieを保存、呼び出し、削除の操作・CakePHP3.7対応

CakePHP3.7でCookieを保存、取り出し、削除する方法を解説。CakePHP3でのCookieの取り扱いはバージョンごとに変更されるため、環境に合わせた方法を探す必要がある。

CakePHP5系で認証機能のAuthenticationプラグインをインストール・エラー発生注意
CakePHP5系で認証機能のAuthenticationプラグインをインストール・エラー発生注意

CakePHPのユーザ認証に使用するオフィシャルなプラグインAuthenticationだが、CakePHP5系では Authentication Ver.3系を使う必要があるが、公式ChiffonBookが間違えている。

CakePHP3でシェルを作成しコマンドラインから実行・CakePHP2との違い
CakePHP3でシェルを作成しコマンドラインから実行・CakePHP2との違い

CakePHP3のシェルスクリプトを作成し、コマンドラインから実行する方法を解説。複数単語をつなげる場合の対応方法がCakePHP2より制限が厳しくなったのでCakePHP3の命名規則の確認が必要だ。

CakePHP 2.3で PDFを作成する方法を調査「mpdf」「TCPDF」「FPDF」

CakePHPで PDFを編集、出力するには「mpdf」「TCPDF」「FPDF」といったプラグインがあり、使い勝手を比較検討しました。TCPDFが一番良さそうでした。

CakePHP3でデータを保存する save()で発生するエラーを確認する方法を解説
CakePHP3でデータを保存する save()で発生するエラーを確認する方法を解説

CakePHP3でデータ保存処理のログを取得する方法。save()では true、falseの戻り値しか取得できないが、saveOrFail()と try…catch文を使いエラーログ、エンティティを取得し、不具合の解析を行う。

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

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

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

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

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

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