baserCMSでは、URLにおける特定のプレフィックスに対して、設定ファイルで簡単に認証設定を行う事ができます。
独自開発のプラグインの場合、次の設定ファイルに設定を記述します。
/plugins/PluginName/config/setting.php
name
: 認証設定名type
: 認証タイプ( Session | Jwt )alias
: URLにおけるエイリアスloginRedirect
: 認証後のリダイレクト先のURLloginAction
: ログインページURLlogoutAction
: ログアウトページURLusername
: ユーザー識別用テーブルにおけるユーザー名。配列での複数指定が可能password
: ユーザー識別用テーブルにおけるパスワードuserModel
: ユーザー識別用のテーブル(プラグイン記法)sessionKey
: セッションを利用する場合のセッションキーpermissionType
: アクセスルール設定
disabled
: 設定を無効にする場合は true に設定(キーがない場合は有効とみなす)return [
'BcPrefixAuth' => [
// マイページの設定例
'Mypage' => [
'name' => __d('baser', 'マイページ'),
'type' => 'Session',
'alias' => '/mypage',
'loginRedirect' => [
'plugin' => 'PluginName',
'prefix' => 'mypage',
'controller' => 'Dashboard',
'action' => 'index'
],
'loginAction' => [
'plugin' => 'PluginName',
'prefix' => 'mypage',
'controller' => 'Users',
'action' => 'login'
],
'logoutAction' => [
'plugin' => 'PluginName',
'prefix' => 'mypage',
'controller' => 'Users',
'action' => 'logout'
],
'username' => ['email', 'name'],
'password' => 'password',
'userModel' => 'BaserCore.Users',
'sessionKey' => 'AuthAdmin',
'permissionType' => 1,
],
// マイページのAPIの設定例
'MypageApi' => [
'name' => __d('baser', 'マイページ'),
'type' => 'Jwt',
'alias' => '/mypage-api',
'username' => ['email', 'name'],
'password' => 'password',
'userModel' => 'BaserCore.Users',
'permissionType' => 1,
],
]
上記の設定ファイルを記述すると、ユーザーグループの編集画面より、各ユーザーグループごとにどのプレフィックスにアクセスができるようにするか設定を行う事ができます。
また、それぞれのプレックスについて、フルアクセスか、限定アクセスかを選択でき、限定アクセスの場合、アクセスルール設定より、詳細な設定が行えます。
ただし、システム管理グループについては、「管理システム」の設定を変更する事はできません。
上記のマイページの例では、次のようにプレフィックス用のフォルダを配置し、そこにコントローラーを配置します。
/plugins/PluginName/src/Controler/Mypage/UsersController.php
login メソッドにアクセスする場合は、次のようなURLでアクセスする事となります。
https://localhost/mypage/plugin-name/users/login
プレフィックス認証の設定において、type
を Jwt
に設定すると、RESTful なルーティングと拡張子 .json のルーティングを自動で行います。
https://localhost/mypage/plugin-name/users/login.json
(GET) https://localhost/mypage/plugin-name/users.json → index アクションにルーティング
(GET) https://localhost/mypage/plugin-name/users/1.json → view アクションにルーティング
(POST) https://localhost/mypage/plugin-name/users/1.json → add アクションにルーティング
(PUT) https://localhost/mypage/plugin-name/users/1.json → edit アクションにルーティング
(DELETE) https://localhost/mypage/plugin-name/users/1.json → edit アクションにルーティング
認証におけるユーザーの確認は UsersTable::findAvailable()
にて実装されています。
認証条件は次のとおりです。
ただし、プレフィックス Api
へのアクセスの場合は、Admin
への権限があれば有効とみなします。
BcAuthPrefix
から BcPrefixAuth
に変更admin
→ Admin