CakePHP 認証機能(CakeDC/Users)
目次
インストール
composer require cakedc/users
設定
Security.salt設定
「CakePHP インストール・設定/Security.salt設定」参照
ライブラリ読み込み
※~/config/bootstrap.php
Plugin::load('CakeDC/Users', ['routes' => true, 'bootstrap' => true]);
テーブル作成
cd bin
cake migrations migrate -p CakeDC/Users
管理者ユーザ作成
cake users add_superuser
※パスワードをメモ
cake users add_superuser -u (ログインID) -p (パスワード)
リダイレクト設定
外部ファイル指定
※~/config/bootstrap.php
Configure::write('Users.config', ['users']);
外部ファイル
※~/config/users.php
<?php
use Cake\Core\Configure;
use Cake\Routing\Router;
$config = [
  'Auth' => [
    ~
    ログイン後の遷移先
    URLを指定したが未ログインの為、ログイン画面へ飛ばされ、
    その後ログインに成功した場合はこの遷移先には飛ばずに最初の指定URLへ遷移する
    'loginRedirect' => [
      'plugin' => null,
      'controller' => 'Tests',
      'action' => 'index',
    ],
    CakeDCのユーザー一覧画面へ遷移させる場合
    'loginRedirect' => [
      'plugin' => 'CakeDC/Users',
      'controller' => 'Users',
      'action' => 'index',
    ],
    'logoutRedirect' => [
      'plugin' => null,
      'controller' => 'Tests',
      'action' => 'display', 'home',
    ]
  ],
];
return $config;
アクセス権限設定
※~/config/permissions.php
<?php
return [
  'Users.SimpleRbac.permissions' => [
    [
      ユーザーはユーザ用のコントローラ、アクションにアクセス可能
      'role' => 'user',
      'controller' => 'Test',
      'action' => '*',
    ],
    [
      スーパーユーザーは全てのコントローラ、アクションにアクセス可能
      'role' => 'superuser',
      'controller' => '*',
      'action' => '*',
    ],
  ]
];
※~Contoroller.php
public function initialize()
{
  ~
  ログイン無しでアクセス可能なアクションの設定
  $this->Auth->allow([
   'index',
   'search',
   'searchResult',
  ]);
}
メール設定
設定ファイル
テンプレート
メールメッセージ
vendor\cakedc\users\src\Template\Email\html\~
vendor\cakedc\users\src\Template\Email\text\~
からコピーして配置する
src
└Template
 └Plugin
  └CakeDC
   └Users
    └Email
     └html
      └reset_password.ctp
      └social_account_validation.ctp
      └validation.ctp
     └text
      └reset_password.ctp
      └social_account_validation.ctp
      └validation.ctp
日本語化
日本語ファイル作成
※\vendor\cakedc\users\src\Locale\ja_JP\Users.po
msgid "Please enter your username and password"
msgstr "ユーザー名 / パスワードを入力して下さい"
日本語ファイルを読み込み
※config\bootstrap.php
ini_set('intl.default_locale', Configure::read('App.defaultLocale'));
↓ を追加
ini_set('intl.default_locale', 'ja_JP');
reCAPTCHA
 
reCAPTCHAライブラリインストール
composer require google/recaptcha "~1.1"
キー取得
「reCAPTCHA認証」参照
users.php
※~\config\users.php
$config = [
  'Users' => [
    ~
    'reCaptcha' => [
      // reCaptcha key goes here
      'key' => null,
      // reCaptcha secret
      'secret' => null,
      // use reCaptcha in registration
      'registration' => false,
      // use reCaptcha in login, valid values are false, true
      'login' => false,
↓
    'reCaptcha' => [
      // reCaptcha key goes here
      'key' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
      // reCaptcha secret
      'secret' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
      // use reCaptcha in registration
      'registration' => true,
      // use reCaptcha in login, valid values are false, true
      'login' => true,
コントローラ
コンポーネントロード
※~Contoroller.php
public function initialize()
{
  parent::initialize();
  ~
  $this->loadComponent('CakeDC/Users.UsersAuth');
}
ビュー
ヘルパー読込
※~\src\View\AppView.php
public function initialize()
{
 $this->loadHelper('CakeDC/Users.User');
}
ログアウト
$this->User->logout();
ログアウト画面へのHTMLリンクが生成される
組込画面
ログイン画面
http://~/login
ログアウト画面
http://~/logout
ユーザー:プロフィール画面
http://~/profile
管理者:ユーザー一覧
http://~/users/users/
管理者:ユーザー登録
http://~/users/users/add
ユーザー:登録画面
http://~/users/users/register
ユーザー:パスワードリセット画面
http://~/users/users/request-reset-password

