/** * Builds up the permissions for a user by looping through, * taking on the highest precedence of each tier. * * @param UserRepresentation $user ID of the user to build for * @return void * @throws Exception\User */ protected function buildPermissionsForUser(UserRepresentation $user) { // Make use of Collection to do some clever sorting: $all_packages = $this->packagesForUser($user); $sorted_packages = new Collection($all_packages); $sorted_packages->sortByMember('precedence'); $permissions = array(); foreach ($sorted_packages as $package) { /* @var $package Package */ foreach ($package->definedPermissions() as $name => $rule) { $permissions[$name] = $rule; } } // And now process any overrides that this user has: $overrides = $this->storage->authFetchOverridesForUser($this->name(), $user); foreach ($overrides as $permission => $new_value) { if (array_key_exists($permission, $permissions)) { $permissions[$permission] = $new_value; } } $this->permissions_cache[$user->id()] = $permissions; }
/** * Testing unknown object property sorting * * @expectedException \Solution10\Collection\Exception\Index */ public function testBadObjectMemberSort() { $obj1 = new Person(); $obj1->name = 'Kelly'; $obj1->job = 'Manager'; $obj2 = new Person(); $obj2->name = 'Alex'; $obj2->job = 'Developer'; $obj3 = new Person(); $obj3->name = 'Jimmy'; $obj3->job = 'Tester'; $collection = new Collection(array($obj1, $obj2, $obj3)); $collection->sortByMember('unknown'); }