ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Opened 11 years ago

Closed 11 years ago

Last modified 11 years ago

#4296 closed enhancement (fixed)

モデルに Zend_Acl によるアクセスコントロールの機能を追加する

Reported by: ebihara Owned by: ebihara
Priority: major Milestone: OpenPNE3.1.2
Component: core Version: 3.1.x
Keywords: Cc:

Description

モデルに Zend_Acl によるアクセスコントロールの機能を追加する。

Change History (4)

comment:1 Changed 11 years ago by ebihara

Owner: changed from nobody to ebihara
Status: newassigned

comment:2 Changed 11 years ago by ebihara

r12747, r12751, r12753, r12754, r12758, r12759

で対応しました。

アクセスコントロールに対応したモデルを作る

  1. レコードクラスに opAccessControlRecordInterface を実装します。 opAccessControlRecordInterface を実装することにより、 generateRoleId() メソッドの定義が強制されます。 generateRoleId() は Member のインスタンスを引数にとって、現在のレコードから見てメンバーがどのロールに当たるかを返すメソッドです。 返り値は string か Zend_Acl_Role である必要があります。
  1. テーブルクラスを opAccessControlDoctrineTable の派生クラスになるようにし、必要なメソッドを定義します。 opAccessControlDoctrineTable を継承することにより、 appendRoles() と appendRules() の二つのメソッドの定義が強制されます。 appendRoles() メソッドでは、このモデルで使う可能性があるロールを ACL に登録していきます。 appendRules() メソッドでは、このモデルにおける各ロールの権限を登録していきます。

アクセスコントロールに対応したモデルを使う

レコードクラスのインスタンスに定義される isAllowed() メソッドを使用します。

isAllowed() メソッドの第一引数は Member クラスのインスタンスを、第二引数はチェックする権限 (view や add など) を文字列で指定します。

レコードに対してそのメンバーが指定された権限を有している場合は、このメソッドは true を返します。権限を有していない場合は false を返します。

comment:3 Changed 11 years ago by ebihara

Resolution: fixed
Status: assignedclosed

comment:4 Changed 11 years ago by ebihara

Component: 指定しないcore
Note: See TracTickets for help on using tickets.