[ Index ] |
PHP Cross Reference of ACL Module |
[Summary view] [Print] [Text view]
1 <?php 2 3 //Import/Create the classes 4 Yii::app()->getModule('acl'); 5 6 class ExtAccessControlFilter extends CAccessControlFilter{ 7 8 /** 9 * @param array $rules list of access rules. 10 */ 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{ 29 /** 30 * @param IWebUser $user the user object 31 * @return boolean whether the rule applies to the role 32 */ 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 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Jul 1 19:24:45 2012 | Cross-referenced by PHPXref 0.7.1 |