Example #1
0
 /**
  * Get this user's permissions, optionally within the context of a Page
  *
  * Does not currently include page-add or page-create permissions. 
  *
  * @param Page $page Optional page to check against
  * @return bool
  *
  */
 public function getPermissions(Page $page = null)
 {
     if ($this->isSuperuser()) {
         return $this->fuel('permissions');
     }
     $permissions = new PageArray();
     $roles = $this->get('roles');
     if (empty($roles)) {
         return $permissions;
     }
     foreach ($roles as $key => $role) {
         if ($page && !$page->hasAccessRole($role)) {
             continue;
         }
         foreach ($role->permissions as $permission) {
             if ($page && $permission->name == 'page-edit' && !in_array($role->id, $page->getAccessTemplate()->editRoles)) {
                 continue;
             }
             $permissions->add($permission);
         }
     }
     return $permissions;
 }