Example #1
0
 public function execute($bus)
 {
     $config = new Acl_Config();
     $configs = $config->configure();
     $request = $bus->get("request");
     $response = $bus->get("response");
     $this->user = $user = new Acl_User($bus->get("session"));
     if (isset($user->login_uri) && $user->login_uri !== $request->getUri()) {
         $user->remove("login_uri");
         $user->remove("back_uri");
     }
     $controller = $bus->get("controller");
     $controller->setAttribute("aclUser", $user);
     if ($response->isFailure() || $response->isRedirected()) {
         return;
     }
     $destination = $bus->get("destination");
     list($modName, $ctrlName, $actName) = $destination->toArray();
     if (!isset($configs[$modName])) {
         return;
     }
     $modConfig = $configs[$modName];
     $ctrlConfig = $modConfig->getController($ctrlName);
     if ($ctrlConfig === null) {
         if ($this->isAllow($modConfig)) {
             return;
         }
         $authUri = $modConfig->authUri();
     } else {
         if ($this->isAllow($ctrlConfig)) {
             return;
         }
         $authUri = $ctrlConfig->authUri();
         if ($authUri === null) {
             $authUri = $modConfig->authUri();
         }
     }
     l("ACL: access denied.", SBL_LOG_DEBUG);
     if ($controller->hasMethod("aclForbidden")) {
         $result = $controller->aclForbidden($actName);
         if ($result === false) {
             return;
         }
         if ($result !== null) {
             $user->back_uri = $result;
         }
     }
     if ($authUri === null) {
         $response->getStatus()->setCode(Sabel_Response::FORBIDDEN);
     } else {
         $user->login_uri = ltrim($response->getRedirector()->to($authUri), "/");
     }
 }
 public function test_init()
 {
     // check instance type
     $this->assertInstanceOf('Acl_Config', $this->acl_config);
     // check singleton
     $this->assertSame(Acl_Config::instance(), $this->acl_config);
 }
Example #3
0
 /**
  * Method to add ignored controllers from outside the class
  * @param mixed (string/array) 
  */
 public static function ignore_controllers($ignore)
 {
     if (is_array($ignore)) {
         self::$ignoredControllers = array_merge(self::$ignoredControllers, $ignore);
     } else {
         if (is_string($ignore)) {
             self::$ignoredControllers[] = $ignore;
         }
     }
 }
Example #4
0
 /**
  * convert the permissions array stored in the database (unserialized) into
  * a config array with resource > level depth
  * @return Array $arr
  */
 public static function acl_array($permissions)
 {
     $config_acl = Acl_Config::instance()->acl();
     $arr = array();
     foreach ($config_acl as $resource => $levels) {
         $arr[$resource] = array();
         foreach ($levels as $level) {
             $key = self::repr_key($resource, $level);
             $arr[$resource][$level] = array_key_exists($key, $permissions);
         }
     }
     return $arr;
 }