From d7468fc363b5d028db84373d4abfa6d7d19bacb9 Mon Sep 17 00:00:00 2001 From: polo Date: Mon, 11 Aug 2025 06:25:39 +0200 Subject: =?UTF-8?q?nouveau=20routeur!=20et=20contr=C3=B4leurs=20et=20vues?= =?UTF-8?q?=20pour=20la=20connexion=20et=20la=20gestion=20du=20compte,=20d?= =?UTF-8?q?=C3=A9but=20d'utilisation=20de=20Request=20et=20Response?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/view/FooterBuilder.php | 8 +- src/view/LoginBuilder.php | 41 +++++++++- src/view/MainBuilder.php | 2 +- src/view/UserEditBuilder.php | 58 ++++++++++++++ src/view/ViewBuilder.php | 18 ----- src/view/password.php | 155 ------------------------------------- src/view/templates/login.php | 28 +++++++ src/view/templates/user_create.php | 52 +++++++++++++ src/view/templates/user_edit.php | 62 +++++++++++++++ 9 files changed, 243 insertions(+), 181 deletions(-) create mode 100644 src/view/UserEditBuilder.php delete mode 100644 src/view/ViewBuilder.php delete mode 100644 src/view/password.php create mode 100644 src/view/templates/login.php create mode 100644 src/view/templates/user_create.php create mode 100644 src/view/templates/user_edit.php (limited to 'src/view') diff --git a/src/view/FooterBuilder.php b/src/view/FooterBuilder.php index 14f9cd7..8a519f8 100644 --- a/src/view/FooterBuilder.php +++ b/src/view/FooterBuilder.php @@ -28,7 +28,7 @@ class FooterBuilder extends AbstractBuilder if($_SESSION['admin']) { $empty_admin_zone = 'empty_admin_zone'; - $link_edit_page = new URL(['page' => CURRENT_PAGE]); + $link_edit_page = CURRENT_PAGE === 'article' ? new URL(['page' => 'accueil']) : new URL(['page' => CURRENT_PAGE]); if(MainBuilder::$modif_mode){ $mode = 'modification de page'; $div_admin = 'logged_in modif_mode'; @@ -43,10 +43,10 @@ class FooterBuilder extends AbstractBuilder $link_new_page = new URL(['page' => 'nouvelle_page']); $link_change_paths = new URL(['page' => 'menu_chemins']); - $link_change_password = new URL(['from' => CURRENT_PAGE, 'action' => 'modif_mdp']); + $link_change_password = new URL(['page' => 'user_edit', 'from' => CURRENT_PAGE]); isset($_GET['id']) ? $link_change_password->addParams(['id' => $_GET['id']]) : ''; - $link_logout = new URL(['page' => CURRENT_PAGE, 'action' => 'deconnexion']); + $link_logout = new URL(['action' => 'deconnection', 'from' => CURRENT_PAGE]); isset($_GET['id']) ? $link_logout->addParams(['id' => $_GET['id']]) : ''; $zone_admin = '
@@ -54,7 +54,7 @@ class FooterBuilder extends AbstractBuilder '
' . "\n" . '
' . "\n" . '
' . "\n" . - '
' . "\n" . + '
' . "\n" . '
' . "\n" . '
' . "\n"; } diff --git a/src/view/LoginBuilder.php b/src/view/LoginBuilder.php index 532f054..567c93d 100644 --- a/src/view/LoginBuilder.php +++ b/src/view/LoginBuilder.php @@ -9,9 +9,44 @@ class LoginBuilder extends AbstractBuilder { public function __construct(Node $node) { - global $entityManager; + // déjà connecté? + if($_SESSION['admin']) + { + header('Location: ' . new URL); + die; + } - // une classe Password ce serait pas mal!! - connect($this, $entityManager); + $viewFile = self::VIEWS_PATH . $node->getName() . '.php'; + + $captcha = new Captcha; + $_SESSION['captcha'] = $captcha->getSolution(); // enregistrement de la réponse du captcha pour vérification + + //$this->html .= $header; + + $error_messages = [ + 'error_non_valid_captcha' => 'Erreur au test anti-robot, veuillez saisir un nombre entier.', + 'captcha_server_error' => 'captcha_server_error', + 'bad_solution_captcha' => 'Erreur au test anti-robot, veuillez réessayer.', + 'bad_login_or_password' => 'Mauvais identifiant ou mot de passe, veuillez réessayer.', // ne pas indiquer où est l'erreur + 'forbidden_characters' => 'Caractères interdits: espaces, tabulations, sauts CR/LF.' + ]; + + $link_form = new URL(['action' => 'connection']); + isset($_GET['from']) ? $link_form->addParams(['from' => $_GET['from']]) : ''; + isset($_GET['id']) ? $link_form->addParams(['id' => $_GET['id']]) : ''; + + $link_exit = new URL; + isset($_GET['from']) ? $link_exit->addParams(['page' => $_GET['from'] ]) : ''; + isset($_GET['id']) ? $link_exit->addParams(['id' => $_GET['id']]) : ''; + + $error = isset($_GET['error']) ? $error_messages[$_GET['error']] : ''; + + ob_start(); + require $viewFile; + $this->html = ob_get_clean(); // nouveau contenu + + //$this->html .=

Ce site utilise un cookie « obligatoire » lorsque vous êtes connecté ainsi que sur cette page.
Il sera supprimé à votre déconnexion ou dès que vous aurez quitté le site.

; + + //$this->html .= $footer; } } diff --git a/src/view/MainBuilder.php b/src/view/MainBuilder.php index 7f3a0f0..889df37 100644 --- a/src/view/MainBuilder.php +++ b/src/view/MainBuilder.php @@ -86,7 +86,7 @@ class MainBuilder extends AbstractBuilder //$page_id = Director::$page_path->getLast()->getId(); $head_node = null; - foreach(ViewBuilder::$root_node->getChildren() as $first_level_node){ + foreach(ViewController::$root_node->getChildren() as $first_level_node){ if($first_level_node->getName() === 'head'){ $head_node = $first_level_node; // normallement c'est le 1er enfant break; diff --git a/src/view/UserEditBuilder.php b/src/view/UserEditBuilder.php new file mode 100644 index 0000000..63bbfad --- /dev/null +++ b/src/view/UserEditBuilder.php @@ -0,0 +1,58 @@ +getName() . '.php'; + + $error_messages = [ + 'error_non_valid_captcha' => 'Erreur au test anti-robot, veuillez saisir un nombre entier.', + 'captcha_server_error' => 'captcha_server_error', + + 'bad_login_or_password' => 'Mauvais identifiant ou mot de passe, veuillez réessayer.', // ne pas indiquer où est l'erreur + 'bad_solution_captcha' => 'Erreur au test anti-robot, veuillez réessayer.', + 'forbidden_characters' => 'Caractères interdits: espaces, tabulations, sauts CR/LF.', + 'same_username_as_before' => 'Nouveau nom identique au précédent.', + 'same_password_as_before' => 'Nouveau mot de passe identique au précédent.' + ]; + + $error_username = isset($_GET['error_login']) ? $error_messages[$_GET['error_login']] : ''; + $success_username = (isset($_GET['success_login']) && $_GET['success_login']) ? 'Identifiant modifié avec succès.' : ''; + $error_password = isset($_GET['error_password']) ? $error_messages[$_GET['error_password']] : ''; + $success_password = (isset($_GET['success_password']) && $_GET['success_password']) ? 'Mot de passe modifié avec succès.' : ''; + + $captcha = new Captcha; + $_SESSION['captcha'] = $captcha->getSolution(); // enregistrement de la réponse du captcha pour vérification + + $link_user_form = new URL(['action' => 'update_username']); + isset($_GET['from']) ? $link_user_form->addParams(['from' => $_GET['from']]) : ''; + isset($_GET['id']) ? $link_user_form->addParams(['id' => $_GET['id']]) : ''; + + $link_password_form = new URL(['action' => 'update_password']); + isset($_GET['from']) ? $link_password_form->addParams(['from' => $_GET['from']]) : ''; + isset($_GET['id']) ? $link_password_form->addParams(['id' => $_GET['id']]) : ''; + + $link_exit = new URL; + isset($_GET['from']) ? $link_exit->addParams(['page' => $_GET['from'] ]) : ''; + isset($_GET['id']) ? $link_exit->addParams(['id' => $_GET['id']]) : ''; + + ob_start(); + require $viewFile; + $this->html = ob_get_clean(); // nouveau contenu + } +} \ No newline at end of file diff --git a/src/view/ViewBuilder.php b/src/view/ViewBuilder.php deleted file mode 100644 index 2e2fea6..0000000 --- a/src/view/ViewBuilder.php +++ /dev/null @@ -1,18 +0,0 @@ -useChildrenBuilder($root_node); - } -} diff --git a/src/view/password.php b/src/view/password.php deleted file mode 100644 index 77f8736..0000000 --- a/src/view/password.php +++ /dev/null @@ -1,155 +0,0 @@ - -

Montrez que vous n'êtes pas un robot.
- - -

- 'connexion']); -isset($_GET['from']) ? $link->addParams(['from' => $_GET['from']]) : ''; -isset($_GET['id']) ? $link->addParams(['id' => $_GET['id']]) : ''; -ob_start(); -?> -
-

-

-

-

- - - - -
- -
-

-

-

-

- - - - -
- 'modif_mdp']); -isset($_GET['from']) ? $link->addParams(['from' => $_GET['from']]) : ''; -isset($_GET['id']) ? $link->addParams(['id' => $_GET['id']]) : ''; -ob_start(); -?> -
- -

- -

- - - -

- -
- - - - - - - <?= $title ?> - - - - - - - - -
-

-

- '

Erreur au test anti-robot, veuillez saisir un nombre entier.

', - 'bad_solution_captcha' => '

Erreur au test anti-robot, veuillez réessayer.

', - 'bad_login_or_password' => '

Mauvais identifiant ou mot de passe, veuillez réessayer.

', // ne pas indiquer où est l'erreur - 'forbidden_characters' => '

Caractères interdits: espaces, tabulations, sauts CR/LF.

' -]; - -$warning_messages = [ - 'message_disconnect' => "

N'oubliez de cliquer sur 'déconnexion' quand vous aurez fini.

", - //'message_cookie' => "

Ce site utilise un cookie « obligatoire » lorsque vous êtes connecté ainsi que sur cette page.
Il sera supprimé à votre déconnexion ou dès que vous aurez quitté le site.

", - 'private_browsing' =>"

Au fait? Vous n'utilisez pas votre propre ordinateur ou téléphone?
- Utilisez la navigation privée.

" -]; - - -// confirmation modification du mot de passe -$page = isset($_GET['from']) ? $_GET['from'] : 'accueil'; -$id = isset($_GET['id']) ? ', \'' . $_GET['id'] . '\'' : ''; -$js = "newPassword('" . $page . "'" . $id . ");"; -ob_start(); -?> - - -addParams(['page' => $_GET['from'] ]) : ''; -isset($_GET['id']) ? $link->addParams(['id' => $_GET['id']]) : ''; -ob_start(); -if(isset($_GET['from'])) // exclue la "création du mot de passe" -{ -?> -

- - - -

- +
+

Connexion à l'espace d'administration

+ +
\ No newline at end of file diff --git a/src/view/templates/user_create.php b/src/view/templates/user_create.php new file mode 100644 index 0000000..dd17547 --- /dev/null +++ b/src/view/templates/user_create.php @@ -0,0 +1,52 @@ + 'Erreur au test anti-robot, veuillez saisir un nombre entier.', + 'captcha_server_error' => 'captcha_server_error', + 'bad_solution_captcha' => 'Erreur au test anti-robot, veuillez réessayer.', + 'different_passwords' => 'Les deux mots de passe saisis sont différents', + 'forbidden_characters' => 'Caractères interdits: espaces, tabulations, sauts CR/LF.' +]; +$error = isset($_GET['error']) ? $error_messages[$_GET['error']] : ''; + +$captcha = new Captcha; +$_SESSION['captcha'] = $captcha->getSolution(); // enregistrement de la réponse du captcha pour vérification +?> + + + + + Bienvenue + + + + + +
+
+

Bienvenue.

+

Veuillez choisir les codes que vous utiliserez pour gérer le site.

+ +
+
+ + \ No newline at end of file diff --git a/src/view/templates/user_edit.php b/src/view/templates/user_edit.php new file mode 100644 index 0000000..b4b35ed --- /dev/null +++ b/src/view/templates/user_edit.php @@ -0,0 +1,62 @@ + +
+
+
+

Mon compte

+
+ +
+
+
+
+ + +
+ +
\ No newline at end of file -- cgit v1.2.3