ACL Extension  0.3
 All Data Structures Namespaces Files Functions Variables
ExtAccessControlFilter.php
Go to the documentation of this file.
1 <?php
2 
3 //Import/Create the classes
4 Yii::app()->getModule('acl');
5 
6 class ExtAccessControlFilter extends CAccessControlFilter{
7 
11  public function setRules($rules) {
12  foreach ($rules as $rule) {
13  if (is_array($rule) && isset($rule[0])) {
14  $r = new ExtAccessRule;
15  $r->allow = $rule[0] === 'allow';
16  foreach (array_slice($rule, 1) as $name => $value) {
17  if ($name === 'expression' || $name === 'roles' || $name === 'message')
18  $r->$name = $value;
19  else
20  $r->$name = array_map('strtolower', $value);
21  }
22  $this->_rules[] = $r;
23  }
24  }
25  }
26 }
27 
28 class ExtAccessRule extends CAccessRule{
33  protected function isRoleMatched($user) {
34  if (empty($this->roles))
35  return true;
36 
37  //retrieve Collection
38  $aro = RGroup::model()->find('foreign_key = :id AND model = :model',
39  array(':id' => $user->id, ':model' => RequestingActiveRecord::$model)
40  );
41 
42  if(!$aro)
43  return false;
44 
45  foreach ($this->roles as $role) {
46  if($aro->is($role))
47  return true;
48  }
49  return false;
50  }
51 }
52 ?>