ajout modif besnik du 4 mars
Some checks are pending
Deploy production (servyass) / deploy (push) Waiting to run
Some checks are pending
Deploy production (servyass) / deploy (push) Waiting to run
This commit is contained in:
parent
0f70b82e4b
commit
2cb4def949
5 changed files with 220 additions and 157 deletions
|
|
@ -90,45 +90,14 @@ class UserCtrl extends MotherCtrl {
|
|||
$objUser = new User();
|
||||
$strPwdConfirm = $_POST['pwd_confirm'] ?? "";
|
||||
|
||||
$objUser->hydrate($_POST);
|
||||
|
||||
$arrError = [];
|
||||
|
||||
if (!empty($_POST)) {
|
||||
$objUser->setName($_POST['user_name'] ?? "");
|
||||
$objUser->setFirstname($_POST['user_firstname'] ?? "");
|
||||
$objUser->setMail($_POST['user_mail'] ?? "");
|
||||
$objUser->setPseudo($_POST['user_pseudo'] ?? "");
|
||||
$objUser->setPwd($_POST['user_password'] ?? "");
|
||||
$objUser->setPhone($_POST['user_phone'] ?? "");
|
||||
$objUser->setWork($_POST['user_work'] ?? "");
|
||||
$objUser->setLocation($_POST['user_location'] ?? "");
|
||||
$objUser->setDescription($_POST['user_description'] ?? "");
|
||||
|
||||
if (trim($objUser->getName()) === "") {
|
||||
$arrError['user_name'] = "Le nom est obligatoire";
|
||||
}
|
||||
|
||||
if (trim($objUser->getFirstname()) === "") {
|
||||
$arrError['user_firstname'] = "Le prénom est obligatoire";
|
||||
}
|
||||
|
||||
if (trim($objUser->getMail()) === "") {
|
||||
$arrError['user_mail'] = "L'adresse e-mail est obligatoire";
|
||||
} elseif (!filter_var($objUser->getMail(), FILTER_VALIDATE_EMAIL)) {
|
||||
$arrError['user_mail'] = "Le format de l'adresse e-mail est invalide";
|
||||
}
|
||||
|
||||
if (trim($objUser->getPseudo()) === "") {
|
||||
$arrError['user_pseudo'] = "Le pseudo est obligatoire";
|
||||
}
|
||||
|
||||
$strRegex = "/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{15,}$/";
|
||||
if ($objUser->getPwd() == ""){
|
||||
$arrError['user_password'] = "Le mot de passe est obligatoire";
|
||||
}else if (!preg_match($strRegex, $objUser->getPwd())){
|
||||
$arrError['user_password'] = "Le mot de passe ne respecte pas les critères";
|
||||
}else if($objUser->getPwd() != $strPwdConfirm){
|
||||
$arrError['pwd_confirm'] = "La confirmation du mot de passe ne correspond pas";
|
||||
}
|
||||
|
||||
$arrError = array_merge($this->_verifInfos($objUser),
|
||||
$this->_verifPwd($objUser, $strPwdConfirm));
|
||||
|
||||
if (count($arrError) === 0) {
|
||||
$objUserModel = new UserModel();
|
||||
|
|
@ -156,6 +125,55 @@ class UserCtrl extends MotherCtrl {
|
|||
$this->_arrData['arrError'] = $arrError;
|
||||
$this->_display("signup");
|
||||
}
|
||||
|
||||
|
||||
protected function _verifInfos(User $objUser): array {
|
||||
|
||||
$arrError = [];
|
||||
|
||||
if (trim($objUser->getName()) === "") {
|
||||
$arrError['user_name'] = "Le nom est obligatoire";
|
||||
}
|
||||
|
||||
if (trim($objUser->getFirstname()) === "") {
|
||||
$arrError['user_firstname'] = "Le prénom est obligatoire";
|
||||
}
|
||||
|
||||
if (trim($objUser->getMail()) === "") {
|
||||
$arrError['user_mail'] = "L'adresse e-mail est obligatoire";
|
||||
} elseif (!filter_var($objUser->getMail(), FILTER_VALIDATE_EMAIL)) {
|
||||
$arrError['user_mail'] = "Le format de l'adresse e-mail est invalide";
|
||||
}
|
||||
|
||||
if (trim($objUser->getPseudo()) === "") {
|
||||
$arrError['user_pseudo'] = "Le pseudo est obligatoire";
|
||||
}
|
||||
|
||||
return $arrError;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Vérification du mot de passe
|
||||
*/
|
||||
protected function _verifPwd(User $objUser, string $strPwdConfirm): array {
|
||||
|
||||
$arrError = [];
|
||||
|
||||
$strRegex = "/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{15,}$/";
|
||||
|
||||
if ($objUser->getPwd() == ""){
|
||||
$arrError['user_password'] = "Le mot de passe est obligatoire";
|
||||
}
|
||||
else if (!preg_match($strRegex, $objUser->getPwd())){
|
||||
$arrError['user_password'] = "Le mot de passe ne respecte pas les critères";
|
||||
}
|
||||
else if ($objUser->getPwd() != $strPwdConfirm){
|
||||
$arrError['pwd_confirm'] = "La confirmation du mot de passe ne correspond pas";
|
||||
}
|
||||
|
||||
return $arrError;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -46,12 +46,19 @@
|
|||
|
||||
|
||||
$arrUser = $rqPrep->fetch();
|
||||
if (password_verify($strPwd, $arrUser['user_password'])){
|
||||
unset($arrUser['user_password']);
|
||||
return $arrUser;
|
||||
}else{
|
||||
if ($arrUser === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (empty($arrUser['user_password'])) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!password_verify($strPwd, $arrUser['user_password'])) {
|
||||
return false;
|
||||
}
|
||||
unset($arrUser['user_password']);
|
||||
return $arrUser;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
205
views/about.tpl
205
views/about.tpl
|
|
@ -8,151 +8,190 @@
|
|||
{block name="content"}
|
||||
|
||||
<section aria-label="À propos de FOLLIOW">
|
||||
|
||||
<div class="row g-5">
|
||||
|
||||
<!-- CONTENU PRINCIPAL -->
|
||||
<div class="col-lg-8">
|
||||
|
||||
<section aria-labelledby="presentation">
|
||||
<h3 id="presentation" class="h4 mb-3">
|
||||
<i class="fas fa-lightbulb me-2 text-primary"></i>
|
||||
<!-- INTRO -->
|
||||
<div class="mb-5">
|
||||
<h3 class="h4 mb-3">
|
||||
<i class="bi bi-lightbulb me-2 text-primary"></i>
|
||||
Présentation du projet
|
||||
</h3>
|
||||
|
||||
<p>
|
||||
<strong>FOLLIOW</strong> est une plateforme web développée dans le cadre d’un projet pédagogique.
|
||||
Elle permet aux utilisateurs de publier, consulter et partager des projets numériques
|
||||
à travers une interface simple et structurée.
|
||||
<p class="lead fs-4">
|
||||
<strong>FOLLIOW</strong> est un réseau social dédié aux portfolios numériques.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Ce projet a été conçu afin de mettre en pratique les compétences acquises en
|
||||
développement web, notamment l’architecture MVC, la gestion des bases de données
|
||||
et la sécurisation des échanges.
|
||||
<p class="fs-5">
|
||||
La plateforme permet à chacun de créer un profil personnalisé, de mettre en avant ses projets
|
||||
et de valoriser ses compétences à travers une présentation claire et professionnelle.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section aria-labelledby="fonctionnalites" class="mt-4">
|
||||
<h3 id="fonctionnalites" class="h4 mb-3">
|
||||
<i class="fas fa-cogs me-2 text-primary"></i>
|
||||
<p class="fs-5">
|
||||
Les recruteurs et visiteurs peuvent rechercher des profils, consulter les réalisations
|
||||
et prendre contact avec les utilisateurs qui les intéressent.
|
||||
</p>
|
||||
|
||||
<p class="fs-5">
|
||||
Ce projet a été développé dans un cadre pédagogique afin de concevoir une application web
|
||||
complète simulant un environnement professionnel réel.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- FONCTIONNALITÉS -->
|
||||
<div class="mb-5">
|
||||
<h3 class="h4 mb-3">
|
||||
<i class="bi bi-gear me-2 text-primary"></i>
|
||||
Fonctionnalités principales
|
||||
</h3>
|
||||
|
||||
<ul>
|
||||
<li>Création et gestion de projets</li>
|
||||
<li>Affichage dynamique des contenus</li>
|
||||
<li>Gestion des utilisateurs</li>
|
||||
<li>Partage d’un projet par email</li>
|
||||
<li>Interface responsive et accessible</li>
|
||||
</ul>
|
||||
</section>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<ul class="list-unstyled fs-5">
|
||||
<li class="mb-2">
|
||||
<i class="bi bi-check-circle text-success me-2"></i>
|
||||
Création et gestion de projets
|
||||
</li>
|
||||
<li class="mb-2">
|
||||
<i class="bi bi-check-circle text-success me-2"></i>
|
||||
Affichage dynamique des contenus
|
||||
</li>
|
||||
<li class="mb-2">
|
||||
<i class="bi bi-check-circle text-success me-2"></i>
|
||||
Gestion des utilisateurs
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<section aria-labelledby="objectifs" class="mt-4">
|
||||
<h3 id="objectifs" class="h4 mb-3">
|
||||
<i class="fas fa-bullseye me-2 text-primary"></i>
|
||||
<div class="col-md-6">
|
||||
<ul class="list-unstyled fs-5">
|
||||
<li class="mb-2">
|
||||
<i class="bi bi-check-circle text-success me-2"></i>
|
||||
Partage d’un projet par email
|
||||
</li>
|
||||
<li class="mb-2">
|
||||
<i class="bi bi-check-circle text-success me-2"></i>
|
||||
Interface responsive et accessible
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- OBJECTIFS -->
|
||||
<div class="mb-5">
|
||||
<h3 class="h4 mb-3">
|
||||
<i class="bi bi-bullseye me-2 text-primary"></i>
|
||||
Objectifs pédagogiques
|
||||
</h3>
|
||||
|
||||
<p>
|
||||
<p class="fs-5">
|
||||
L’objectif principal de FOLLIOW est de démontrer la capacité à concevoir
|
||||
une application web complète, structurée et sécurisée.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<ul class="fs-5">
|
||||
<li>Structuration d’un projet en architecture MVC</li>
|
||||
<li>Manipulation de bases de données relationnelles</li>
|
||||
<li>Validation et sécurisation des données</li>
|
||||
<li>Implémentation d’un système d’envoi d’emails</li>
|
||||
<li>Respect des bonnes pratiques (RGPD, accessibilité, organisation du code)</li>
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<section aria-labelledby="technologies" class="mt-4">
|
||||
<h3 id="technologies" class="h4 mb-3">
|
||||
<i class="fas fa-code me-2 text-primary"></i>
|
||||
<!-- TECHNOLOGIES -->
|
||||
<div>
|
||||
<h3 class="h4 mb-4">
|
||||
<i class="bi bi-code-slash me-2 text-primary"></i>
|
||||
Technologies utilisées
|
||||
</h3>
|
||||
|
||||
<div class="row g-3">
|
||||
<div class="row g-4">
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100 border-0 shadow-sm">
|
||||
<div class="card-body">
|
||||
<strong>Backend</strong>
|
||||
<p class="small mb-0">
|
||||
PHP orienté objet – Architecture MVC – MySQL
|
||||
</p>
|
||||
</div>
|
||||
<div class="border rounded p-3 h-100">
|
||||
<strong class="fs-5">Backend</strong>
|
||||
<p class="small text-muted mb-0">
|
||||
PHP orienté objet – Architecture MVC – MySQL
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100 border-0 shadow-sm">
|
||||
<div class="card-body">
|
||||
<strong>Frontend</strong>
|
||||
<p class="small mb-0">
|
||||
HTML5 – CSS3 – Bootstrap – Smarty
|
||||
</p>
|
||||
</div>
|
||||
<div class="border rounded p-3 h-100">
|
||||
<strong class="fs-5">Frontend</strong>
|
||||
<p class="small text-muted mb-0">
|
||||
HTML5 – CSS3 – Bootstrap – Smarty
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100 border-0 shadow-sm">
|
||||
<div class="card-body">
|
||||
<strong>Emails</strong>
|
||||
<p class="small mb-0">
|
||||
PHPMailer – SMTP – Brevo
|
||||
</p>
|
||||
</div>
|
||||
<div class="border rounded p-3 h-100">
|
||||
<strong class="fs-5">Emails</strong>
|
||||
<p class="small text-muted mb-0">
|
||||
PHPMailer – SMTP – Brevo
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100 border-0 shadow-sm">
|
||||
<div class="card-body">
|
||||
<strong>Sécurité</strong>
|
||||
<p class="small mb-0">
|
||||
Validation des données – Protection des formulaires – Gestion des sessions
|
||||
</p>
|
||||
</div>
|
||||
<div class="border rounded p-3 h-100">
|
||||
<strong class="fs-5">Sécurité</strong>
|
||||
<p class="small text-muted mb-0">
|
||||
Validation des données – Protection des formulaires – Gestion des sessions
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Sidebar -->
|
||||
<!-- SIDEBAR -->
|
||||
<div class="col-lg-4">
|
||||
<div class="card shadow-sm p-4">
|
||||
|
||||
<h4 class="h5 mb-3">
|
||||
<i class="fas fa-graduation-cap me-2 text-primary"></i>
|
||||
Projet pédagogique
|
||||
</h4>
|
||||
<div class="sticky-top" style="top: 90px;">
|
||||
|
||||
<p class="small">
|
||||
FOLLIOW a été réalisé dans le cadre d’une formation en développement web.
|
||||
Il s’agit d’un projet démonstratif à visée éducative.
|
||||
</p>
|
||||
<div class="border rounded p-4 mb-4">
|
||||
<h4 class="h5 mb-3">
|
||||
<i class="bi bi-mortarboard me-2 text-primary"></i>
|
||||
Projet pédagogique
|
||||
</h4>
|
||||
|
||||
<hr>
|
||||
<p class="fs-5 mb-0">
|
||||
FOLLIOW a été développé dans le cadre du module PROJET WEB 2,
|
||||
consacré à la conception d’une application web dynamique en PHP orienté objet (architecture MVC),
|
||||
au sein d’une formation en Développement Web et Web Mobile à CCI Campus Colmar.
|
||||
Il s’agit d’une plateforme démonstrative réalisée à des fins pédagogiques.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<h4 class="h5 mb-3">
|
||||
<i class="fas fa-envelope me-2 text-primary"></i>
|
||||
Contact
|
||||
</h4>
|
||||
<div class="border rounded p-4">
|
||||
<h4 class="h5 mb-3">
|
||||
<i class="bi bi-envelope me-2 text-primary"></i>
|
||||
Contact
|
||||
</h4>
|
||||
|
||||
<p class="small mb-1">
|
||||
Pour toute question :
|
||||
</p>
|
||||
<p class="fs-5 mb-2">
|
||||
Pour toute question :
|
||||
</p>
|
||||
|
||||
<a href="mailto:projet.folliow@hotmail.com" class="small">
|
||||
projet.folliow@hotmail.com
|
||||
</a>
|
||||
<a href="mailto:projet.folliow@hotmail.com" class="fs-5 text-decoration-none">
|
||||
projet.folliow@hotmail.com
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
{/block}
|
||||
|
|
@ -7,8 +7,8 @@
|
|||
|
||||
{block name="date_maj"}
|
||||
<p class="text-muted small mb-0">
|
||||
<i class="fas fa-calendar-alt me-2" aria-hidden="true"></i>
|
||||
Dernière mise à jour : <time datetime="2026-02-20">20 février 2026</time>
|
||||
<i class="bi bi-calendar-event me-2" aria-hidden="true"></i>
|
||||
Dernière mise à jour : <time datetime="2026-03-05">5 mars 2026</time>
|
||||
</p>
|
||||
{/block}
|
||||
|
||||
|
|
@ -40,9 +40,9 @@
|
|||
<div class="col-md-12">
|
||||
|
||||
<!-- Table des matières -->
|
||||
<nav class="table-of-contents" aria-labelledby="toc-heading">
|
||||
<nav class="table-of-contents bg-light rounded shadow-sm p-4 mb-4" aria-labelledby="toc-heading">
|
||||
<h3 id="toc-heading" class="h5 mb-3">
|
||||
<i class="fas fa-list me-2" aria-hidden="true"></i>
|
||||
<i class="bi bi-list-ul me-2" aria-hidden="true"></i>
|
||||
Sommaire
|
||||
</h3>
|
||||
<ul class="list-unstyled ms-3">
|
||||
|
|
@ -58,9 +58,9 @@
|
|||
</nav>
|
||||
|
||||
<!-- Section 1 : Éditeur -->
|
||||
<section id="editeur" class="legal-section" aria-labelledby="editeur-heading">
|
||||
<section id="editeur" class="legal-section bg-light rounded shadow-sm p-4 mb-4" aria-labelledby="editeur-heading">
|
||||
<h3 id="editeur-heading" class="h4">
|
||||
<i class="fas fa-building me-2 text-primary" aria-hidden="true"></i>
|
||||
<i class="bi bi-building me-2 text-primary" aria-hidden="true"></i>
|
||||
1. Éditeur du site
|
||||
</h3>
|
||||
|
||||
|
|
@ -104,9 +104,9 @@
|
|||
</section>
|
||||
|
||||
<!-- Section 2 : Hébergeur -->
|
||||
<section id="hebergeur" class="legal-section" aria-labelledby="hebergeur-heading">
|
||||
<section id="hebergeur" class="legal-section bg-light rounded shadow-sm p-4 mb-4" aria-labelledby="hebergeur-heading">
|
||||
<h3 id="hebergeur-heading" class="h4">
|
||||
<i class="fas fa-server me-2 text-primary" aria-hidden="true"></i>
|
||||
<i class="bi bi-hdd-network me-2 text-primary" aria-hidden="true"></i>
|
||||
2. Hébergement
|
||||
</h3>
|
||||
|
||||
|
|
@ -128,9 +128,9 @@
|
|||
</section>
|
||||
|
||||
<!-- Section 3 : Propriété intellectuelle -->
|
||||
<section id="propriete" class="legal-section" aria-labelledby="propriete-heading">
|
||||
<section id="propriete" class="legal-section bg-light rounded shadow-sm p-4 mb-4" aria-labelledby="propriete-heading">
|
||||
<h3 id="propriete-heading" class="h4">
|
||||
<i class="fas fa-copyright me-2 text-primary" aria-hidden="true"></i>
|
||||
<i class="bi bi-c-circle me-2 text-primary" aria-hidden="true"></i>
|
||||
3. Propriété intellectuelle
|
||||
</h3>
|
||||
<p>
|
||||
|
|
@ -146,9 +146,9 @@
|
|||
</section>
|
||||
|
||||
<!-- Section 4 : RGPD -->
|
||||
<section id="rgpd" class="legal-section" aria-labelledby="rgpd-heading">
|
||||
<section id="rgpd" class="legal-section bg-light rounded shadow-sm p-4 mb-4" aria-labelledby="rgpd-heading">
|
||||
<h3 id="rgpd-heading" class="h4">
|
||||
<i class="fas fa-shield-alt me-2 text-primary" aria-hidden="true"></i>
|
||||
<i class="bi bi-shield-lock me-2 text-primary" aria-hidden="true"></i>
|
||||
4. Protection des données personnelles (RGPD)
|
||||
</h3>
|
||||
|
||||
|
|
@ -160,11 +160,10 @@
|
|||
<h4 class="h5 mt-4">4.2 Données collectées</h4>
|
||||
<p>Selon l’utilisation du site, les données pouvant être collectées sont :</p>
|
||||
<ul>
|
||||
<li>Nom / Prenom <li>
|
||||
<li>Nom / Prenom </li>
|
||||
<li>Pseudo </li>
|
||||
<li>Adresse email (inscription, connexion, partage de projet par email)</li>
|
||||
<li>Contenus déposés par l’utilisateur (projets, descriptions, images)</li>
|
||||
<li>Données techniques minimales (logs de sécurité, adresse IP) à des fins de protection et de diagnostic</li>
|
||||
</ul>
|
||||
|
||||
<h4 class="h5 mt-4">4.3 Finalités du traitement</h4>
|
||||
|
|
@ -194,9 +193,9 @@
|
|||
</section>
|
||||
|
||||
<!-- Section 5 : Cookies -->
|
||||
<section id="cookies" class="legal-section" aria-labelledby="cookies-heading">
|
||||
<section id="cookies" class="legal-section bg-light rounded shadow-sm p-4 mb-4" aria-labelledby="cookies-heading">
|
||||
<h3 id="cookies-heading" class="h4">
|
||||
<i class="fas fa-cookie-bite me-2 text-primary" aria-hidden="true"></i>
|
||||
<i class="bi bi-cookie me-2 text-primary" aria-hidden="true"></i>
|
||||
5. Cookies
|
||||
</h3>
|
||||
|
||||
|
|
@ -225,9 +224,9 @@
|
|||
</section>
|
||||
|
||||
<!-- Section 6 : Limitation de responsabilité -->
|
||||
<section id="responsabilite" class="legal-section" aria-labelledby="responsabilite-heading">
|
||||
<section id="responsabilite" class="legal-section bg-light rounded shadow-sm p-4 mb-4" aria-labelledby="responsabilite-heading">
|
||||
<h3 id="responsabilite-heading" class="h4">
|
||||
<i class="fas fa-exclamation-triangle me-2 text-primary" aria-hidden="true"></i>
|
||||
<i class="bi bi-exclamation-triangle me-2 text-primary" aria-hidden="true"></i>
|
||||
6. Limitation de responsabilité
|
||||
</h3>
|
||||
<p>
|
||||
|
|
@ -241,9 +240,9 @@
|
|||
</section>
|
||||
|
||||
<!-- Section 7 : Liens hypertextes -->
|
||||
<section id="liens" class="legal-section" aria-labelledby="liens-heading">
|
||||
<section id="liens" class="legal-section bg-light rounded shadow-sm p-4 mb-4" aria-labelledby="liens-heading">
|
||||
<h3 id="liens-heading" class="h4">
|
||||
<i class="fas fa-link me-2 text-primary" aria-hidden="true"></i>
|
||||
<i class="bi bi-link-45deg me-2 text-primary" aria-hidden="true"></i>
|
||||
7. Liens hypertextes
|
||||
</h3>
|
||||
<p>
|
||||
|
|
@ -253,9 +252,9 @@
|
|||
</section>
|
||||
|
||||
<!-- Section 8 : Droit applicable -->
|
||||
<section id="droit" class="legal-section" aria-labelledby="droit-heading">
|
||||
<section id="droit" class="legal-section bg-light rounded shadow-sm p-4 mb-4" aria-labelledby="droit-heading">
|
||||
<h3 id="droit-heading" class="h4">
|
||||
<i class="fas fa-gavel me-2 text-primary" aria-hidden="true"></i>
|
||||
<i class="bi bi-hammer me-2 text-primary" aria-hidden="true"></i>
|
||||
8. Droit applicable et juridiction compétente
|
||||
</h3>
|
||||
<p>
|
||||
|
|
@ -265,9 +264,9 @@
|
|||
</section>
|
||||
|
||||
<!-- Contact -->
|
||||
<section class="mt-5 p-4 bg-light rounded" aria-labelledby="contact-legal">
|
||||
<section class="mt-5 p-4 bg-light rounded shadow-sm" aria-labelledby="contact-legal">
|
||||
<h3 id="contact-legal" class="h4 mb-3">
|
||||
<i class="fas fa-envelope me-2 text-primary" aria-hidden="true"></i>
|
||||
<i class="bi bi-envelope me-2 text-primary" aria-hidden="true"></i>
|
||||
Questions ou réclamations
|
||||
</h3>
|
||||
<p>
|
||||
|
|
@ -275,7 +274,7 @@
|
|||
</p>
|
||||
<ul class="list-unstyled">
|
||||
<li class="mb-2">
|
||||
<i class="fas fa-envelope me-2" aria-hidden="true"></i>
|
||||
<i class="bi bi-envelope me-2" aria-hidden="true"></i>
|
||||
Par email : <a href="mailto:projet.folliow@hotmail.com">projet.folliow@hotmail.com</a>
|
||||
</li>
|
||||
|
||||
|
|
@ -285,4 +284,4 @@
|
|||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{/block}
|
||||
{/block}
|
||||
|
|
@ -98,17 +98,17 @@
|
|||
<input
|
||||
class="form-control pe-5"
|
||||
type="password"
|
||||
id="user_password"
|
||||
name="user_password"
|
||||
id="user_pwd"
|
||||
name="user_pwd"
|
||||
required
|
||||
>
|
||||
<button
|
||||
class="btn position-absolute top-50 end-0 translate-middle-y me-2 p-0 border-0 bg-transparent text-muted"
|
||||
type="button"
|
||||
onclick="togglePassword('user_password', this)"
|
||||
onclick="togglePassword('user_pwd', this)"
|
||||
style="z-index: 10;"
|
||||
>
|
||||
<i class="fa-solid fa-eye"></i>
|
||||
<i class="fa-solid fa-eye-slash"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="mt-2 small text-muted">
|
||||
|
|
@ -141,7 +141,7 @@
|
|||
onclick="togglePassword('pwd_confirm', this)"
|
||||
style="z-index: 10;"
|
||||
>
|
||||
<i class="fa-solid fa-eye"></i>
|
||||
<i class="fa-solid fa-eye-slash"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -238,7 +238,7 @@
|
|||
|
||||
</div>
|
||||
<script>
|
||||
const pwd = document.getElementById('user_password');
|
||||
const pwd = document.getElementById('user_pwd');
|
||||
|
||||
const rules = {
|
||||
length: { el: null, test: v => v.length >= 15 },
|
||||
|
|
@ -267,10 +267,10 @@
|
|||
const icon = btn.querySelector('svg');
|
||||
if (input.type === 'password') {
|
||||
input.type = 'text';
|
||||
icon.classList.replace('fa-eye', 'fa-eye-slash');
|
||||
icon.classList.replace('fa-eye-slash', 'fa-eye');
|
||||
} else {
|
||||
input.type = 'password';
|
||||
icon.classList.replace('fa-eye-slash', 'fa-eye');
|
||||
icon.classList.replace('fa-eye', 'fa-eye-slash');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue