/** * Resolves a ResolvableAuthorizationInterface * * @param ResolvableAuthorizationInterface|string $resolvable Resolvable to resolve * @param array $params Params for resolution * @return null */ public function resolve($resolvable, $params = []) { if (ResolvableAuthorizationRegistry::isRegistered($resolvable)) { $resolvable = ResolvableAuthorizationRegistry::get($resolvable); } $resolvable->resolve($params); $resolvable->afterResolve(); EventManager::instance()->dispatch(new Event('AuthorizationInternalEvent.AuthorizationResolved', $this, [$resolvable, $params])); return $resolvable->value(); }
/** * Test that register function register an authorization */ public function testRegister() { $callback = function () { }; $this->manager->registerResolvable('name', $this->manager->context($callback)); $this->assertTrue(ResolvableAuthorizationRegistry::isRegistered('name')); $resolvable = ResolvableAuthorizationRegistry::get('name'); $this->assertInstanceOf("ResolveAuth\\Authorization\\Resolvable\\ContextAuthorization", $resolvable); }
/** * Creates instances from an array. * * Example : * $array = [ * ['type', 'param'], * ['Group', 'user'], * 'ignoredAlreadyRegisteredResolvableAuthorization', * $ignoredAlreadyRegisteredResolvableAuthorization * ] * * @param $authorizationArray * @return array * @throws Exception * @throws InvalidArgumentException */ public function createFromArray($authorizationArray) { $resolvables = []; foreach ($authorizationArray as $resolvable) { if (!is_array($resolvable)) { $resolvables[] = ResolvableAuthorizationRegistry::get($resolvable); continue; } $resolvables[] = ResolvableAuthorizationInstance::getInstance()->create($resolvable[0], $resolvable[1]); } return $resolvables; }