/** * 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; }