Vous êtes connecté en tant que anonymous Se Deconnecter
Browse code

mise en place des requètes HTTP1.1 dans le core du MVC afin qu'elles soient utilisable simplement

TODO: tester les requètes HTTP1.1 , sécuriser les accès par un fichier config similaire a l'applet Discourse faite pour Tinternet

TODO: ajouter un plug-in symfony permettant de charger un utilisateur dans les apps a partir de l'authentification multiple

TODO: lire les documentation officielles provenant des 4 plate-formes tranquillement afin de comprendre commet doit on tester ces type d'auth quitte a créé un sous domaine particulier directement hebergé sur gittea
-->Sécuriser le serveur de dev

Emmanuel ROY authored on 02/12/2019 19:01:38
Showing 8 changed files
... ...
@@ -9,13 +9,50 @@ class Controlleur{
9 9
 	
10 10
 	public function __construct($application){
11 11
 
12
-	    if($application->url->page['control']){
13
-            $url_params = $application->url->page['params'];
14
-	        require TRAITEMENT_PATH . DIRECTORY_SEPARATOR . $application->url->page['name'] . '.php';
15
-        } else {
16
-            $this->modele = new Modele($application->url->page);
17
-            $this->vue = new Vue($this);
12
+
13
+        $requete = new MVC\Classe\Request();
14
+
15
+        switch ($requete->method) {
16
+            //cas des requètes PUT et DELETE
17
+            case 'PUT':
18
+            case 'DELETE':
19
+                require CONTROLLER_PATH . DIRECTORY_SEPARATOR . $application->url->page['name'] . 'HttpReponse.php';
20
+                $reponseHttp = lcfirst($application->url->page['name']) . 'HttpReponse';
21
+                $response = new $reponseHttp($application->url, $requete->getData());
22
+                if ($requete->method == 'DELETE') {
23
+                    $reponseHttp->delete();
24
+                } else {
25
+                    $reponseHttp->put();
26
+                }
27
+                break;
28
+            //cas des requètes POST et GET
29
+            case 'POST':
30
+            case 'GET':
31
+                if (!file_exists(CONTROLLER_PATH . DIRECTORY_SEPARATOR . $application->url->page['name'] . '')) {
32
+                    require CONTROLLER_PATH . DIRECTORY_SEPARATOR . $application->url->page['name'] . 'HttpReponse.php';
33
+                    $reponseHttp = lcfirst($application->url->page['name']) . 'HttpReponse';
34
+                    $response = new $reponseHttp($application->url, $requete->getData());
35
+                    if ($requete->method == 'POST') {
36
+                        $reponseHttp->post();
37
+                    } else {
38
+                        $reponseHttp->get();
39
+                    }
40
+                    break;
41
+                }
42
+
43
+
44
+            default:
45
+
46
+                if ($application->url->page['control']) {
47
+                    $url_params = $application->url->page['params'];
48
+                    require TRAITEMENT_PATH . DIRECTORY_SEPARATOR . $application->url->page['name'] . '.php';
49
+                } else {
50
+                    $this->modele = new Modele($application->url->page);
51
+                    $this->vue = new Vue($this);
52
+                }
18 53
         }
54
+
55
+
19 56
 	}
20 57
 	
21 58
 }
22 59
new file mode 100644
... ...
@@ -0,0 +1,10 @@
1
+<?php
2
+
3
+namespace MVC\Classe\Implement\Contrat;
4
+
5
+interface HttpReponseInterface
6
+{
7
+    public function put();
8
+
9
+    public function delete();
10
+}
0 11
\ No newline at end of file
1 12
new file mode 100644
... ...
@@ -0,0 +1,14 @@
1
+<?php
2
+
3
+namespace MVC\Classe\Implement\Contrat;
4
+
5
+interface RestReponseInterface
6
+{
7
+    public function get();
8
+
9
+    public function post();
10
+
11
+    public function put();
12
+
13
+    public function delete();
14
+}
0 15
\ No newline at end of file
1 16
new file mode 100644
... ...
@@ -0,0 +1,32 @@
1
+<?php
2
+
3
+
4
+namespace MVC\Classe\Implement;
5
+
6
+use MVC\Classe\Implement\Contrat\HttpReponseInterface;
7
+
8
+class HttpReponse implements HttpReponseInterface
9
+{
10
+
11
+    public $url;
12
+    public $params;
13
+    public $data;
14
+
15
+    public function __contruct($url, $requestData)
16
+    {
17
+        $this->url = $url;
18
+        $this->params = $url['params'];
19
+        $this->data = $requestData;
20
+    }
21
+
22
+    public function put()
23
+    {
24
+
25
+    }
26
+
27
+    public function delete()
28
+    {
29
+
30
+    }
31
+
32
+}
0 33
\ No newline at end of file
1 34
new file mode 100644
... ...
@@ -0,0 +1,41 @@
1
+<?php
2
+
3
+
4
+namespace MVC\Classe\Implement;
5
+
6
+use MVC\Classe\Implement\Contrat\RestReponseInterface;
7
+
8
+class HttpReponse implements RestReponseInterface
9
+{
10
+
11
+    public $url;
12
+    public $params;
13
+    public $data;
14
+
15
+    public function __contruct($url, $requestData)
16
+    {
17
+        $this->url = $url;
18
+        $this->params = $url['params'];
19
+        $this->data = $requestData;
20
+    }
21
+
22
+    public function get()
23
+    {
24
+
25
+    }
26
+
27
+    public function post()
28
+    {
29
+
30
+    }
31
+
32
+    public function put()
33
+    {
34
+
35
+    }
36
+
37
+    public function delete()
38
+    {
39
+
40
+    }
41
+}
0 42
\ No newline at end of file
... ...
@@ -24,8 +24,13 @@ class Request
24 24
             case 'POST':
25 25
                 break;
26 26
             case 'PUT':
27
-                $this->data = json_decode(file_get_contents("php://input"), true);
27
+                //$this->data['GET'] = ...
28
+                //POST DATA except enctype="multipart/form-data"
29
+                $this->data['POST'] = json_decode(file_get_contents("php://input"), true);
28 30
             case 'DELETE':
31
+                //$this->data['GET'] = ...
32
+                //POST DATA except enctype="multipart/form-data"
33
+                $this->data['POST'] = json_decode(file_get_contents("php://input"), true);
29 34
                 break;
30 35
             default:
31 36
                 // Requête invalide
... ...
@@ -34,4 +39,9 @@ class Request
34 39
         }
35 40
     }
36 41
 
42
+    public function getData()
43
+    {
44
+        return $this->data;
45
+    }
46
+
37 47
 }
38 48
\ No newline at end of file
... ...
@@ -104,7 +104,7 @@ class Response
104 104
 
105 105
     public function setGetParamsUrl($url, $params = array())
106 106
     {
107
-        $this->url = $url . (strpos($this->url, '?') ? '' : '?') . http_build_query($params);
107
+        $this->url = $url . (strpos($url, '?') ? '&' : '?') . http_build_query($params);
108 108
         return $this;
109 109
     }
110 110
 
111 111
new file mode 100644
... ...
@@ -0,0 +1,16 @@
1
+<?php
2
+
3
+use MVC\Classe\Implement\HttpReponse;
4
+
5
+class AcceuilHttpReponse extends HttpReponse
6
+{
7
+    public function put()
8
+    {
9
+        echo $this->params . "<br/>" . $this->data;
10
+    }
11
+
12
+    public function delete()
13
+    {
14
+
15
+    }
16
+}
0 17
\ No newline at end of file