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',
  ]);
}

メール設定

設定ファイル

CakePHP インストール・設定/メール設定」参照

テンプレート

メールメッセージ
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