エス技研

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


CakePHP3のCakeDC/Usersでログインユーザの所有レコードのみ更新、削除する権限管理の設定方法

   

CakePHP3 CakeDC/Usersで所有レコードのみ閲覧、更新、削除する権限設定方法

 

CakePHP3のユーザ管理プラグイン「CakeDC/Users」を使用して権限管理をする際の前提条件

 
この記事では、下記を実装するための解説です。

  • CakePHP3で、ユーザ管理プラグイン「CakeDC/Users」を使用してユーザ管理をするシステムを構築している。
  • その中で、ユーザAが登録した情報は、ユーザAが所有者として登録され、その登録情報はユーザAのみが見ることができ、更新、削除も所有者 Aのみが行える。

という機能を実装することを想定しています。
 
まず、CakePHP3にユーザ管理プラグイン「CakeDC/Users」を導入する方法については、下記の記事を参考にしてください。
CakePHP3のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説・3.6以降対応
 
また、「/config/users.php」「/config/permissions.php」ファイルを作成し、ログイン認証に関連する設定を記述していく方法については、下記の記事を参考にしてください。
CakePHP3のCakeDC/Usersのログイン後のリダイレクトとユーザ権限管理の設定解説
 
 
これを踏まえた上で、「/config/permissions.php」ファイルに、権限を設定していく方法を解説していきます。
 
 

「/config/permissions.php」ファイルのサンプル

 
「/config/permissions.php」ファイルに記述する権限設定のサンプルは以下のようになります。
 

 
上記の前半は、ユーザ権限が「user」の場合、プラグインが「CakeDC/Users」で、コントローラーが「Users」の処理のうち、アクションが「profile」もしくは「logout」である場合はアクセスを許可する、という設定になっています。
 
指定する処理が複数ある場合は、「'action' => ["profile","logout"],」の様に配列で指定します。
'role' => ['user'],」のように、指定するものが 1つしかない場合でも配列で指定することもできますので、全部配列で指定する、と覚えておいても問題はないでしょう。
 
 

ログアウトのアクションは必ず登録する

 
ちなみに、この権限設定をする場合は、何はともあれ下記のログアウトの処理だけは記述しておくようにしておきましょう。
これがないとログアウトできなくなります。
 

 
 

「*」を使ってすべての処理を許可対象にすることもできる

 
また、下記のように、具体的な処理を指定するのではなく、「*」を指定することで、すべての処理を許可する、という指定方法もあります。
 

 
上記は、会員用のコンテンツ「http://example.com/member/」をすべて利用を許可する、という指定になります。
 
 

「superuser」は設定しなくてもすべての機能にアクセスできる

 
下記の設定は、「『superuser』はすべての機能にアクセスできる」という設定ですが、これはわざわざ設定しなくても、『superuser』はすべての機能にアクセスできます。
 

 
 

所有権限があるレコードのみ更新、削除ができる設定

 
最初のサンプルの後半部分の下記は、コントローラー「Blogs」で管理されるブログ記事を、アクション「edit(更新)」や「delete(削除)」できるのは、ログインしているユーザの「user_id」が、テーブル「blogs」にある「user_id」の値と同じ時のみ処理を許可する、という設定になります。
 

 
ちなみに、この設定を行っても、「superuser」権限があるユーザは、他のユーザのレコードも更新、削除することができます。
(「superuser」のユーザが更新しても、テーブル「blogs」にある「user_id」の情報は更新されません。)
 
 

所有権限があるレコードのみ更新、削除ができる設定・別テーブルに IDを持っている場合

 
上記は、レコードの所有者の情報が保存されているカラム「user_id」が、更新するレコードと同じテーブル内にある場合の設定ですが、所有者情報を管理しているテーブルが別のテーブル「BlogsUsers」にある場合は、以下のように設定します。
 

 
 

CakePHP3の関連記事

CakePHP4のCSS、JavaScript、画像のブラウザへのキャッシュをコントロールする
CakePHP3でレコードを保存(追加、更新、Insert、Update)する複数の方法を紹介
CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説
CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングする方法
CakePHP3のInsert On Duplicate Key Update(upsert)構文を解説・バルク処理も
CakePHP3の1対多での連携を中間テーブルを使った多対多の連携に変更するときの手順
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
 
その他の「CakePHP3」に関する記事一覧
 
 

 - CakePHP 3.x 4.x

GoogleAdwords

GoogleAdwords

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

Message

メールアドレスが公開されることはありません。

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

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

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

  関連記事

CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説

CakePHP3でOGPを設定する方法を解説。fetch、assignを使用しレイアウトファイルに編集した変数にテンプレートファイルから値を指定する。これを利用してOGPを編集する。

CakePHP3のForm Helperの使い方のまとめ

CakePHP3になりフォームヘルパーの使い方も大きく変わりましたので、使い方をまとめました。基本的な使い方からプラスアルファの便利な使い方まで紹介。

CakePHP3でkeywords、DescriptionをHTMLヘルパーを使って設定する
CakePHP3でkeywords、DescriptionをHTMLヘルパーを使って設定する

CakePHP3のkeywordsとdescriptionを設定する方法の解説。CakePHP3にはmetaタグを編集するHTMLヘルパーが用意されているためそれを利用すればOK!ポイントはブロック化を有効にすること。

CakePHP3の検索プラグイン「friendsofcake/search」の設置方法・CakePHP3.6対応
CakePHP3の検索プラグイン「friendsofcake/search」の設置方法・CakePHP3.6対応

CakePHP3で検索を担うプラグイン「friendsofcake/search」の紹介。基本的な設置方法の紹介のほか、処理の記述方法のバリエーション、エラーの解説など。CakeDC/searchより導入は簡単!

CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。

CakePHP3でajaxを利用する処理の実装方法を解説。プルダウンを変更するとデータベースの値を取得し検索結果の内容を変更するというような処理を想定。CakePHP3.6以降の CSRF対策対応済。

CakePHP3のアソシエーションでJOINのタイプのLEFT、INNERを切り替えながら使う方法
CakePHP3のアソシエーションでJOINのタイプのLEFT、INNERを切り替えながら使う方法

CakePHP3でテーブルのアソシエーションしたデータの取得をコントローラー側でINNERかLEFTを指定する方法を解説。TableファイルにINNERで指定していてもController側で変更ができる。

CakePHP 2.3 Search Pluginで検索処理 その1設置方法

CakePHPの検索プラグイン Search Pluginの設置方法と基本的な検索処理の解説です。

CakePHP3の画像、ファイルアップロードプラグインUpload Plugin 3.0の設置解説・その1
CakePHP3の画像、ファイルアップロードプラグインUpload Plugin 3.0の設置解説・その1

CakePHP3でファイル、画像をアップロードするプラグイン、upload plugin 3を導入する手順を解説した記事。3部作のその1で基本的な導入方法の解説で読みながら簡単に導入が可能。

CakePHP3のデバッグキット(DebugKit)を強制的に有効、無効に変更する方法
CakePHP3のデバッグキット(DebugKit)を強制的に有効、無効に変更する方法

CakePHP3に付属しているデバッグのためのツール、デバッグキットを強制的に有効化、無効化する方法を解説。初期設定では開発環境としてありそうなドメインの場合のみ有効になるように設定されている。

CakePHP3で環境変数を設定して本番環境と開発環境を分けて処理をする場合
CakePHP3で環境変数を設定して本番環境と開発環境を分けて処理をする場合

CakePHP3で開発環境と本番環境とで違う設定ファイルを読み込ませて環境ごとに定数を切り替える方法を解説。Apacheのhttpd.confに環境変数を設定し、それを読み込み判別する。