/**
  * Init AuthorizationManager variables
  */
 public function init()
 {
     if (!ResolvableAuthorizationInstance::getInstance()) {
         return false;
     }
     $this->_initialized = true;
     return true;
 }
 /**
  * tearDown method
  *
  * @return void
  */
 public function tearDown()
 {
     unset($this->Posts);
     unset($this->Behavior);
     ResolvableAuthorizationInstance::reset();
     TableRegistry::clear();
     parent::tearDown();
 }
 /**
  * TearDown Function
  */
 public function tearDown()
 {
     unset($this->context);
     unset($this->manager);
     unset($this->AuthorizationMock);
     ResolvableAuthorizationInstance::reset();
     ResolvableAuthorizationRegistry::reset();
     parent::tearDown();
 }
 /**
  * Test initialization
  */
 public function testInitilization()
 {
     $this->component->startup(new Event("Controller.startup", $this->controller));
     $this->assertNotNull(ResolvableAuthorizationInstance::getInstance());
     $context = ResolvableAuthorizationInstance::getInstance()->context;
     $this->assertSame($this->controller->getUser(), $context->user);
     $this->assertSame($this->controller, $context->controller);
     $this->assertSame($this->request->params['action'], $context->action);
     $this->assertSame($this->component, $context->manager);
     $this->assertSame($this->request, $context->request);
 }
 /**
  * Main authorization method.
  *
  * - Initializes ResolvableAuthorizationInstance
  * - Calls buildAuthorization method to add authorization rules
  * - Resolves unregistered ResolvableAuthorizationInterface,
  *   registered authorizations will be resolved later and manually
  * - Checks authorization rules
  *
  * @param Event $event
  * @return null
  */
 public function startup(Event $event)
 {
     $this->_controller = $this->_registry->getController();
     $this->_action = $this->_controller->request->params['action'];
     $this->_user = call_user_func([$this->_controller, $this->config('getUser')]);
     $context = new AuthorizationContext($this->_controller, $this->_user, $this);
     ResolvableAuthorizationInstance::init($context, $this->config('resolvableAuthorizations'));
     EventManager::instance()->on('AuthorizationInternalEvent.AuthorizationResolved', function () {
         $this->_checkAllRules();
     });
     $method = $this->config('buildAuthorization');
     if (method_exists($this->_controller, $method)) {
         $this->_controller->{$method}($this);
         $this->resolveUnregistered($this->_action);
     }
 }
 public function tearDown()
 {
     unset($this->manager);
     ResolvableAuthorizationRegistry::reset();
     ResolvableAuthorizationInstance::reset();
 }
 /**
  * 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;
 }
 /**
  * @param string $type
  * @param $params
  * @return ResolvableAuthorizationInterface
  */
 public function getResolvable($type, $params)
 {
     return ResolvableAuthorizationInstance::getInstance()->create(ucwords(strtolower($type)), $params);
 }
 /**
  * @expectedException InvalidArgumentException
  */
 public function testCreateFromArrayWithUnregistered()
 {
     $result = ResolvableAuthorizationInstance::getInstance()->createFromArray(['unregistered']);
 }