コード例 #1
0
 /**
  * Initialise la requete.
  */
 public function __construct(ServerCallGroupRequest $httpRequest, ServerCallGroupResponse $httpResponse)
 {
     parent::__construct();
     //On appelle le constructeur parent
     //On initialise la requete et la reponse HTTP
     $this->httpRequest = $httpRequest;
     $this->httpResponse = $httpResponse;
     foreach ($this->httpRequest->getRequests() as $index => $request) {
         try {
             $this->serverCalls[$index] = new ServerCall($request, $this->httpResponse->getServerCallResponse($index));
         } catch (Exception $e) {
             //En cas d'erreur
             Error::catchException($e);
         }
     }
 }
コード例 #2
0
 /**
  * Initialise la requete.
  */
 public function __construct(ServerCallRequest $httpRequest, ServerCallResponse $httpResponse)
 {
     parent::__construct();
     //On appelle le constructeur parent
     //On initialise la requete et la reponse HTTP
     $this->httpRequest = $httpRequest;
     $this->httpResponse = $httpResponse;
     //Classe demandee dans la requete
     $class = $this->getHTTPRequest()->getClass();
     if (!class_exists('\\lib\\controllers\\' . $class)) {
         //On verifie que la classe existe
         throw new \InvalidArgumentException('La classe "' . $class . '" spécifiée dans la requête HTTP n\'existe pas');
     }
     //Et qu'elle herite bien de ServerCallComponent
     if (!in_array('lib\\ServerCallComponent', class_parents('\\lib\\controllers\\' . $class))) {
         throw new \InvalidArgumentException('La classe "' . $class . '" spécifiée dans la requête HTTP ne peut pas être appellée comme action d\'administration');
     }
     //Si un mot de passe et un nom d'utilisateur sont specifies dans la requete
     //On tente d'executer l'action demandee avec l'utilisateur specifie
     if ($this->getHTTPRequest()->getPassword() != null && $this->getHTTPRequest()->getUsername() != null) {
         $this->user = new User($this->getHTTPRequest()->getUsername(), $this->getHTTPRequest()->getPassword());
     }
     if ($this->getHTTPRequest()->getPid() != null && $this->getHTTPRequest()->getKey() != null) {
         $process = Process::get($this->getHTTPRequest()->getPid());
         if ($process->getKey() == $this->getHTTPRequest()->getKey()) {
             throw new RuntimeException('Clef du processus #' . $this->getHTTPRequest()->getPid() . ' invalide');
         }
         if (!$process->getAuthorization()->check($this->getHTTPRequest())) {
             throw new RuntimeException('Vous n\'avez pas les droits requis pour effectuer cette action (module : "' . $class . '"; action : "' . $this->getHTTPRequest()->getMethod() . '"; arguments: "' . implode('", "', $this->getHTTPRequest()->getArguments()) . '")');
         }
         $this->process = $process;
     } else {
         //On cree l'autorisation d'executer l'action
         $authorization = new Authorization($this, $this->user);
         //Si on n'a pas les droits suffisants pour executer la requete demandee
         if (!$authorization->check($this->getHTTPRequest())) {
             throw new RuntimeException('Vous n\'avez pas les droits requis pour effectuer cette action (module : "' . $class . '"; action : "' . $this->getHTTPRequest()->getMethod() . '"; arguments: "' . implode('", "', $this->getHTTPRequest()->getArguments()) . '")');
         }
         //On cree le processus de l'action
         $this->process = new models\ServerCallProcess($this, $authorization, $this->getHTTPRequest()->getClass(), $this->getHTTPRequest()->getMethod());
     }
 }