エス技研

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


CakePHP3のユーザ管理・認証プラグインCakeDC/Usersのインストール解説・3.6以降対応

      2019/04/27

CakePHP3のユーザ認証管理プラグイン CakeDC/Usersとは

 

CakeDCとは?

 
CakeDCは、CakePHPを開発した Larry Masters氏が設立した Cake Development Corporationという団体で、CakePHPなどを利用してシステム開発などを請け負う団体です。
 
また、今回紹介するようなユーザ管理、認証管理などを行うプラグイン Usersなどの開発、提供も行っています。
 
 
CakePHPというフレームワークは無償で利用できますので、ユーザが増えても CakePHPを作った方々の収益にはならないため、収益を上げるための事業を行っているのが CakeDCということになるのでしょうか。
 
CakeDCについては下記に案内があります。英語ですが...
 https://www.cakedc.com/about
 
 

CakeDC/Usersプラグインとは?

 
今回は、そんな CakePHPを作った方々が提供している CakeDC謹製の Usersというプラグインの紹介です。
 
この Usersプラグインは、会員管理システムを提供するもので、会員の新規登録、ログイン認証、および、管理側で管理する会員管理の仕組みなどをプラグインとして提供するものです。
 
具体的な機能に関しては以下のようなものがあります。
 

  • ユーザ登録
  • メールで送信されたトークンによるアカウント確認
  • ユーザログイン(メールアドレス/パスワード)
  • ソーシャルログイン(Twitter、Facebook)
  • メールでトークンを要求し、新しいパスワードを入力することによってパスワードをリセット
  • ユーザ管理(登録/更新/削除)
  • シンプルな権限管理
  • シンプルな Rbacとスーパーユーザの承認
  • Cookie機能を使用した RememberMe(ログイン状態を保存する)
  • ユーザ登録時に reCAPTCHA使用

 
※「Rbac」とは?
Rbacとは、ロールベースアクセス制御(Role-based access control)のことで、ユーザはロール(権限)が割り当てられ、そのロールによってアクセス制御をする仕組みのことです。
 
詳細は下記を参照してください。
https://github.com/CakeDC/users/blob/3.1.5/Docs/Documentation/Overview.md
 
 
ちなみに、CakeDC/Usersプラグインをインストールして認証されたページの確認をする際は、あらかじめ何かしらの情報を管理するページがあると検証が分かりやすくなるでしょう。
CakeDC/Usersプラグインを導入するとユーザの管理画面は構築されますが、そのほかの管理画面を、例えば「CakePHP3でファイルのアップロード処理を自作・解説付き・その1」で紹介したような、Newsの CMSなどを Bakeで構築しておくと、ユーザ管理画面と Newsの管理画面など複数の画面で認証ができているかの確認ができますので、あらかじめ作成しておくことをおススメします。
 
 

CakePHP3のユーザ認証管理プラグイン CakeDC/Usersの導入解説

 

CakeDC/Usersのインストール、設定方法

 
CakeDC/Usersのインストール、設定方法に関する目次
 

 
 
インストールしたのち、設定情報を標準設定から変更する場合や、テンプレートファイルを更新する場合の対応方法は下記の別記事として書いていますので、あわせて参考にしてください。
 
CakePHP3のCakeDC/Usersの画面、メール本文テンプレートのカスタマイズ方法解説
CakePHP3のCakeDC/Usersのログイン後のリダイレクトとユーザ権限管理の設定解説
CakePHP3のCakeDC/UsersのUserHelperでログアウトやreCAPTCHAをカスタマイズ
Google reCAPTCHAのSite key、Secret keyの取得方法・20170408バージョン
CakePHP3のCakeDC/Usersのバリデーションのカスタマイズ方法解説
 
 


 
 

1.コンポーザーを使って CakeDC/Usersプラグインをインストール

 
コンポーザーを使って CakeDC/Usersプラグインをインストールします。
 
下記コマンドを実行します。

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

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

 
インストールした Usersプラグインをロードする処理を記述します。
具体的には、/config/bootstrap.phpの 215行目辺りにプラグインをロードする処理を記述します。
 

 
Plugin::loadAll();」の設定をしている場合は、すべてのプラグインがロードされますので、個別の設定は必要ありません。
 
 
CakePHP 3.6.0 以降では、プラグインを読み込むための記述方法が変更になっています。
そのため、CakePHP 3.6.0 以降では下記のように記述します。
 

 
※下記の「Cookbook・プラグイン」のページでは、プラグインの読み込みを「/src/Application.php」に記述する方法が記載されていますが、「/config/bootstrap.php」に記述する場合は、上記のような書き方になります。
https://book.cakephp.org/3.0/ja/plugins.html#id4
 

CakePHP 3.6以降ではプラグインのロードの手続きが変わる

 

また、プラグインをロードする記述の方法として、上記のように記述する方法もあります。
 
この記述方法は、基本的には「Plugin::load('CakeDC/Users')」と同じです。
 
この記述方法では、CakePHP 3.6以降になると下記のエラー(Deprecated)が表示されるようになります。
「『Plugin::load()』は非推奨になりますので、『Application::addPlugin()』を使ってください」という内容です。
 
Deprecated (16384): Plugin::load() is deprecated. Use Application::addPlugin() instead. This method will be removed in 4.0.0. - C:\xampp\htdocs\config\bootstrap.php, line: 205
You can disable deprecation warnings by setting Error.errorLevel to E_ALL & ~E_USER_DEPRECATED in your config/app.php. [CORE\src\Core\functions.php, line 311]

 
 
 

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

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

 
この migrationsコマンドを実行することで、データベースに 3つのテーブルが作成されます。
ユーザーと資格情報が格納される「Users」と、ソーシャル・ログイン機能のトークンが格納され管理される「social_accounts」です。加えて、CakeDC/Usersがバージョンアップして作られるようになった「cake_d_c_users_phinxlog」です。
 
 
上記コマンドは、基本的には開発中のアプリのルートフォルダで実行しますが、もし、cakeコマンドにパスが通っていないときは、「bin」フォルダの中に入って「cake migrations migrate -p CakeDC/Users」を実行してみてください。
 
 

4.管理権限ユーザを作成

 
構築するユーザ管理システムの管理者権限のユーザを作成します。
 
下記コマンドを実行し、新しいユーザ(superadmin)を登録します。

 
このコマンドを実行すると、ユーザ管理画面を利用するために必要な、完全な管理権限が与えられているスーパーユーザが作成されます。
(管理権限の詳細な設定については、/vendor/cakedc/users/src/Auth/SuperuserAuthorize クラスを参照してください。)
 
コマンドを実行すると、下記の様に処理が実行され、画面が表示されます。
 

 
パスワードは、ここにしか表示されませんので、しっかり保存しておきましょう。
 
 

5.AppController.phpにコンポーネントをロードする処理を記述

 
AppController.phpに「CakeDC/Users.UsersAuth」のコンポーネントをロードする処理を記載します。
 
対象ファイルは「src/Controller/AppController.php」で、「initialize()」にコンポーネントのロード処理を記述します。
下記の 7行目のように追記します。
 

 
 

6.Usersプラグインの動作確認

 
前項までの手順で標準的な設定は完了です。
設定した内容が間違っていないか、ログインの確認を行います。
 
ログイン画面の URLは以下になります。
 http://example.com/login
 
上記でアクセスできない場合は、下記を入力してみてください。
 http://example.com/users/users/login
 
ログインに使う ID、PASSは、「4.管理権限ユーザを作成」で作成した「superadmin」とそのパスワードになります。
 
ログアウトする場合の URLは以下になります。
下記のログアウト URLを入力すると、ログアウト処理が実行され、ログイン画面にリダイレクトします。
 http://example.com/logout
 
 
ちなみに、先に説明した Newsの管理画面を作っておいた場合、それらの管理画面もログイン認証を行わないと画面が表示されなくなっていることが確認できます。
 http://example.com/news
 
 
 

CakeDC/Usersのユーザ登録、ログイン、管理側の一覧画面などの URL

 
インストールした CakeDC/Usersで構築された各画面の URLを記載します。
 
ログイン画面
 http://example.com/login
 
ログアウト URL
 http://example.com/logout
 
管理側のユーザ一覧画面
 http://example.com/users/users/
 
管理側のユーザ登録・更新・削除・詳細画面
 http://example.com/users/users/add
 http://example.com/users/users/edit/:id
 http://example.com/users/users/delete/:id
 http://example.com/users/users/view/:id
 ※add以外は、アクセス時にパラメータとして IDが必要です
 
ユーザ側の新規登録画面
 http://example.com/users/users/register
 
ユーザ側のユーザ登録時のメール認証のメール再送信画面
 http://example.com/users/users/resend-token-validation
 
ユーザ側のユーザプロフィール画面(ログイン時)
 http://example.com//users/users/profile
 
ユーザ側のパスワード変更画面(ログイン時)
 http://example.com/users/users/change-password
 
ユーザ側のパスワードリセット画面(メールアドレス入力画面)
 http://example.com/users/users/request-reset-password
 
 
 

CakeDC/Usersがインストールされる場所

 
コンポーザーを使って CakeDC/Usersプラグインをインストールすると、下記の場所にプラグイン関連ファイル一式が設置されます。
 /vendor/cakedc/users
 
下記の場所が CakeDC/Usersの設定ファイルが設置されています。
 /vendor/cakedc/users/config
 
下記の場所に、プラグインのコントローラーの実際の処理が記述してあるファイルが設置されています。
 /vendor/cakedc/users/src/Controller/Traits
 
下記の場所には CakeDC/Usersの入力画面、一覧画面などのテンプレートが設置されています。
 /vendor/cakedc/users/src/Template
 
ただし、「/vendor/cakedc/users」にあるファイル一式はコアファイルですので、これらのファイルは更新しません。
例えば、テンプレートファイルをカスタマイズする場合は、「/src/Template/Plugin/CakeDC/Users」に必要なファイルをコピーしてからカスタマイズを行います。
 
ユーザの新規登録画面の解説と、テンプレートのカスタマイズなどの解説は「CakePHP3のCakeDC/Usersの画面、メール本文テンプレートのカスタマイズ方法解説」に書いていますので、こちらを参照してください。
 
 
 

参考サイト

 
記事を書く際には、CakeDCのオフィシャルブログと GitHubにアップされているドキュメントを参考にさせていただいています。
https://www.cakedc.com/jorge_gonzalez/2016/02/21/cakedc_users_plugin_for_cakephp_3_-_update
https://github.com/CakeDC/users/blob/3.1.5/Docs/Home.md
 
 

CakePHP3の関連記事

CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定
CakePHP3でkeywords、DescriptionをHTMLヘルパーを使って設定する
CakePHP3で環境変数を設定して本番環境と開発環境を分けて処理をする場合
CakePHP3でCookieを保存、呼び出し、削除の操作・CakePHP3.7対応
CakePHP3でアソシエーション先のカラムでデータをソートして取得したい
CakePHP3のdatetime型カラムの日時の扱い。秒まで正しく表示する方法
 
その他の「CakePHP3」に関する記事一覧
 
 

 - CakePHP 2.x 3.x

GoogleAdwords

GoogleAdwords

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

Message

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

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

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

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

  関連記事

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

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

CakePHP3で保存前にバリデーション結果を取得する2つの方法
CakePHP3で保存前にバリデーション結果を取得する2つの方法

CakePHP3でデータベースに値を保存する前にバリデーションを行い、その結果によって処理を振り分ける方法について解説。「$topic->errors()」と「$topic->hasErrors()」の2つの方法がある。

CakePHP3のプラグイン「CakeDC/Users」を日本語化・翻訳ファイルもダウンロード可
CakePHP3のプラグイン「CakeDC/Users」を日本語化・翻訳ファイルもダウンロード可

CakePHP3のユーザ管理、ログイン認証プラグインである「CakeDC/Users」のメッセージを日本語にする手順の解説とともに、日本語の翻訳ファイルを提供。ファイルを設置すれば日本語になる!

cakephp3 カスタムバリデーションを簡易的に実装する方法
cakephp3 カスタムバリデーションを簡易的に実装する方法

CakePHP3の独自のバリデーションをテーブルクラス内に簡単に記述する方法を解説。他のテーブルクラスでは使えないが、記述する量は少なく実装できるため、他で使わない処理を書くのには便利。

CakePHP3の更新画面でUpload Plugin 3.0を使う方法、viewで使う方法解説・その3
CakePHP3の更新画面でUpload Plugin 3.0を使う方法、viewで使う方法解説・その3

CakePHP3でファイル、画像をアップロードするプラグイン、upload plugin 3を導入する手順を解説した記事。3部作のその3で記事を更新する際のファイルの取り回しなどについてを解説。

CakePHP3の検索プラグイン「friendsofcake/search」の様々な検索の仕方の実装方法
CakePHP3の検索プラグイン「friendsofcake/search」の様々な検索の仕方の実装方法

CakePHP3で検索をするプラグイン「friendsofcake/search」の検索条件のカスタマイズ方法の解説。検索項目を増やしたり、以上、以下での検索や、チェックボックスによる検索の方法などを解説。

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

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

CakePHP3でWarning Error: SplFileInfo::openFile()エラーが発生した場合の対処方法
CakePHP3でWarning Error: SplFileInfo::openFile()エラーが発生した場合の対処方法

CakePHP3のキャッシュファイルのパーミッションエラー Error: SplFileInfo::openFile()が発生した場合の対応方法解説。app.phpにキャッシュファイルのパーミッション設定を行い、既存のファイルは削除。

CakePHP3のCakeDC/Usersのバリデーションのカスタマイズ方法解説
CakePHP3のCakeDC/Usersのバリデーションのカスタマイズ方法解説

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

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

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