Actions
Bug(バグ) #3213
openopAccessControlRecordInterface は isAllowed() メソッドを実装していることを保証していない
Start date:
2012-09-27
Due date:
% Done:
0%
Estimated time:
3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)
Description
概要¶
opAccessControlRecordInterface は isAllowed() メソッドを実装していることを保証していない
具体的には下記コード部で opAccessControlRecordInterface のインスタンスかどうかで処理を分岐しているが,
opAccessControlRecordInterface が保証しているのは generateRoleId() メソッドであり, isAllowed() を呼び出せる保証がない.
lib/routing/opDynamicAclRoute.class.php
32 if ($result instanceof opAccessControlRecordInterface) 33 { 34 if (!$result->isAllowed($this->getCurrentMember(), $this->options['privilege']))
lib/util/opAccessControlRecordInterface.class.php
18 interface opAccessControlRecordInterface 19 { ... 27 public function generateRoleId(Member $member); 28 }
実際に isAllowed(Member $member, $privilege) が実装されているのは opDoctrineRecord クラスである.
lib/util/opDoctrineRecord.class.php 156: public function isAllowed(Member $member, $privilege)
修正案¶
- opAccessControlRecordInterface インタフェースに isAllowed() メソッドを追加する.
- opDynamicAclRoute クラス内での isAllowed() を利用する分岐で opDoctrineRecord クラスを継承したクラスであるかについてチェックする
Updated by Chiharu Nakajima about 10 years ago
- Priority changed from Normal(通常) to Low(低め)
Updated by Chiharu Nakajima about 10 years ago
このチケットの内容は下記の項目に該当する不具合であるため、一旦優先度を下げます。
・未対応でもユーザーに影響が少ない不具合(回避可能な不具合である等)
Actions