2017-07-21 15 views
-1

私は以下のテーブル構造を持っています役割階層... Kinda

ここにテーブルがあります。

Users: 
    + userid 
    + roleid /* Associate a Role to a User */ 

Roles: 
    + roleid 
    + rolename 

Permissions: 
    + permissionid 
    + permissionname 

RolePermissions: 
    + roleid 
    + permissionid /* Associate a Permission to a Role */ 

構造が欲しい。

ユーザーのパスワードを変更できるようにするには、change_passwordの権限を持つユーザーが必要です。彼らの役割にパーミッションを割り当てるだけです。

特定の役割では、特定の種類のユーザーのパスワードのみを変更できるという問題があります。たとえば、管理人はジュニア管理者のパスワードを変更できますが、教師のパスワードは変更できません。だからちょうど$user->can('edit_password')チェックを行うことはできません。また、if_this_role_is_editing_this_roleチェックの束をしたくない。皆さんがこれにアプローチする本当にいい方法はありますか?ありがとう。

+0

[私には何の話がありますか?](0120)を参照してください。[よくある質問と回答](http://stackoverflow.com/help/how (質問に答える) と[完璧な質問](http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/) と[最小限の完全かつ検証可能な例](http://stackoverflow.com/help/mcve) また、[ツアーに参加](http://stackoverflow.com/tour) ** SOは**無料のコーディングサービスではありません___修正しようとしていますあなたのコード、私たちはあなたのコードを書いていません___ – RiggsFolly

+0

こんにちは@RiggsFollyこれはあまりコードの質問ではなく、より多くのアーキテクチャの質問です。したがって、コードの欠如。ありがとう。 –

+0

それからそのさらに多くのオフトピックその後 – RiggsFolly

答えて

0

ユーザーテーブルに「パワー」列を追加できます。こうすることで、ユーザが自分の権限以上の権限を持つユーザに対してアクションを実行している場合にアクションをブロックすることができます。