私は現在、しばらく前に構築された PHP のアクセス許可システムを作り直すことを検討しています。現在のバージョンには正確な権限があるため、管理者には次の権限があります。
acl.manage.self
acl.manage.others
つまり、ユーザーは自分の権限だけでなく、他の権限も管理できます。
ただし、いくつかの新しいアプリケーションに取り組んでいる間、次の方法でアプリケーション全体にアクセスできるようにすることで、現在の権限システムを利用しようとしました。
lst.*
そうすれば、自分にたくさんのものを与える必要はありません.view
.manage
。
既存のシステムは * ワイルドカードを理解していないようです。だから私はここに座って「has_permission」を書き直そうとしています
したがって、現在動作しているテスト環境では、次の権限を持つユーザーを作成しました。
array(3) { [0]=> string(1) "*" [1]=> string(15) "fake.permission" [2]=> string(27) "none.of.these.should.matter" }
技術的に重要な許可は [0] だけです。これは、私が望むすべてのことを行う許可が必要であることを示しています。
このフローをメソッドに実装する方法がわかりません。
function has_perm($perm){
//if I am checking if I have the perm 'acl.manage.all'
//This function should return true if I have any of the following:
// *, acl.*, acl.manage.*, acl.manage.all
//exact check
foreach($this->perms as $p){
if($p===$perm){ return true; }
}
}
正しい方向への微調整は素晴らしいでしょう。