php-rt:tp4

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

php-rt:tp4 [2018/06/07 16:44] – [2.3-Authentification] jcheronphp-rt:tp4 [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1
Ligne 18: Ligne 18:
 </sxh> </sxh>
  
-===== -- Authentification =====+===== - Authentification =====
 L'authentification permet : L'authentification permet :
   * La connexion d'utilisateurs, dont le profil sera mémorisé en session   * La connexion d'utilisateurs, dont le profil sera mémorisé en session
Ligne 24: Ligne 24:
   * La déconnexion et le contrôle de fin de session   * La déconnexion et le contrôle de fin de session
  
-==== -- Création d'un contrôleur pour l'authentification ====+==== - Création d'un contrôleur pour l'authentification ====
  
 A partir de l'interface d'administration, partie **controllers**, choisir **Create special controller/Auth controller** : A partir de l'interface d'administration, partie **controllers**, choisir **Create special controller/Auth controller** :
Ligne 31: Ligne 31:
  
  
-==== -- Implémentation du comportement ====+==== - Implémentation du comportement ====
 === La connexion === === La connexion ===
 L'utilisateur se connecte avec le couple email/passord, validé par un post de formulaire, et dont l'existence est vérifiée dans la base de données : L'utilisateur se connecte avec le couple email/passord, validé par un post de formulaire, et dont l'existence est vérifiée dans la base de données :
Ligne 43: Ligne 43:
  $email=URequest::post($this->_getLoginInputName());  $email=URequest::post($this->_getLoginInputName());
  $password=URequest::post($this->_getPasswordInputName());  $password=URequest::post($this->_getPasswordInputName());
- $user=DAO::getOne("models\\User", "email='{$email}'");+ $user=DAO::getOne(User::class, "email='{$email}'");
  if(isset($user) && $user->getPassword()==$password){  if(isset($user) && $user->getPassword()==$password){
  return $user;  return $user;
Ligne 67: Ligne 67:
  Startup::forward(implode("/",$urlParts));  Startup::forward(implode("/",$urlParts));
  }else{  }else{
- $this->forward("controllers\\Organizations","display",[$connected->getOrganization()->getId()],true,true);+ $this->forward(Organizations::class,"display",[$connected->getOrganization()->getId()],true,true);
  }  }
  }  }
Ligne 94: Ligne 94:
 </sxh> </sxh>
  
-==== -- Utilisation de l'authentification ====+==== - Utilisation de l'authentification ====
  
 Pour utiliser le contrôleur d'authentification créé sur le contrôleur **Organizations**, ajouter le trait **WithAuthTrait** dans la classe **Organizations** Pour utiliser le contrôleur d'authentification créé sur le contrôleur **Organizations**, ajouter le trait **WithAuthTrait** dans la classe **Organizations**
Ligne 141: Ligne 141:
 {{:php-rt:tp4:invalid-creditentials.png?900|invalid creditentials}} {{:php-rt:tp4:invalid-creditentials.png?900|invalid creditentials}}
  
-==== -- Affichage de l'utilisateur connecté ====+==== - Affichage de l'utilisateur connecté ====
  
 Modifier le template de base pour y intégrer la variable **_userInfo** : Modifier le template de base pour y intégrer la variable **_userInfo** :
Ligne 159: Ligne 159:
 <h1>Messagerie Administration</h1> <h1>Messagerie Administration</h1>
 {% endblock %} {% endblock %}
-{% block auth %}+{% block _auth %}
     {{ _userInfo | raw }}     {{ _userInfo | raw }}
 {% endblock %} {% endblock %}
Ligne 187: Ligne 187:
 {{:php-rt:tp4:logout.png?900|Logout}} {{:php-rt:tp4:logout.png?900|Logout}}
  
-==== -- Personnalisation de l'affichage ====+==== - Personnalisation de l'affichage ====
  
 A partir de l'interface d'administration, créer un nouveau controller de type **AuthController** héritant du contrôleur **BaseAuth** : A partir de l'interface d'administration, créer un nouveau controller de type **AuthController** héritant du contrôleur **BaseAuth** :
Ligne 290: Ligne 290:
  
  
-==== -- Personnalisation des messages ====+==== - Personnalisation des messages ====
  
 A partir d'Eclipse, dans la classe **AuthExt**, choisir le menu **source/override-implement methods...** : A partir d'Eclipse, dans la classe **AuthExt**, choisir le menu **source/override-implement methods...** :
Ligne 328: Ligne 328:
  
  
-==== -- Personnalisation du contrôle ====+==== - Personnalisation du contrôle ====
  
 On souhaite affiner le contrôle d'accès des utilisateurs, et faire en sorte qu'un utilisateur ne puisse accéder qu'à l'organisation à laquelle il appartient. On souhaite affiner le contrôle d'accès des utilisateurs, et faire en sorte qu'un utilisateur ne puisse accéder qu'à l'organisation à laquelle il appartient.
Ligne 359: Ligne 359:
  
  
-==== -- Auto-vérification connexion ====+==== - Auto-vérification connexion ====
  
 Surdéfinir la méthode **_checkConnectionTimeout** de la classe **AuthExt** : cette méthode déconnecte toutes les pages du site ouvertes sur le navigateur si la session a été fermée. Dans le cas présent, elle lance un script de vérification de la connexion toutes les 10 secondes. Surdéfinir la méthode **_checkConnectionTimeout** de la classe **AuthExt** : cette méthode déconnecte toutes les pages du site ouvertes sur le navigateur si la session a été fermée. Dans le cas présent, elle lance un script de vérification de la connexion toutes les 10 secondes.
Ligne 387: Ligne 387:
 {{:php-rt:tp4:sessionended.png?900|Déconnexion auto}} {{:php-rt:tp4:sessionended.png?900|Déconnexion auto}}
  
-==== -- Limitation des tentatives de connexion ====+==== - Limitation des tentatives de connexion ====
 Limiter le nombre de connexions consécutives aboutissant à un échec peut permettre d'éviter les botnets et attaques de force brute. Limiter le nombre de connexions consécutives aboutissant à un échec peut permettre d'éviter les botnets et attaques de force brute.
  
Ligne 413: Ligne 413:
 {{:php-rt:tp4:limitco.png?900|}} {{:php-rt:tp4:limitco.png?900|}}
  
-===== -- CRUD controllers =====+===== - CRUD controllers =====
  
 Les CRUD controllers permettent d'implémenter rapidement les fonctionnalités CRUD sur un model (scaffolding) : Les CRUD controllers permettent d'implémenter rapidement les fonctionnalités CRUD sur un model (scaffolding) :
Ligne 421: Ligne 421:
   * Delete -> Suppression d'objets/enregistrements   * Delete -> Suppression d'objets/enregistrements
  
-==== -- Création ====+==== - Création ====
  
 A partir de l'interface d'administration, partie **controllers**, choisir **Create special controller/CRUD controller** : A partir de l'interface d'administration, partie **controllers**, choisir **Create special controller/CRUD controller** :
Ligne 429: Ligne 429:
 Accéder à l'adresse **/Groupes** ou **/Groupes/index** et tester les opérations CRUD. Accéder à l'adresse **/Groupes** ou **/Groupes/index** et tester les opérations CRUD.
  
-==== -- Intégration ====+==== - Intégration ====
  
 Pour faire en sorte que le contrôleur **Groupes** créé s'intègre à l'application existante, surdéfinir la méthode **getBaseTemplate** de la classe **controllers/crud/files/GroupesFiles**, en choisissant la rubrique **override/implement method** du menu source d'Eclipse : Pour faire en sorte que le contrôleur **Groupes** créé s'intègre à l'application existante, surdéfinir la méthode **getBaseTemplate** de la classe **controllers/crud/files/GroupesFiles**, en choisissant la rubrique **override/implement method** du menu source d'Eclipse :
Ligne 463: Ligne 463:
 </sxh> </sxh>
  
-==== --Authentification ====+==== - Authentification ====
 Les contrôleurs CRUD peuvent utiliser l'authentification comme les autres contrôleurs : Les contrôleurs CRUD peuvent utiliser l'authentification comme les autres contrôleurs :
  
Ligne 536: Ligne 536:
 {{ script_foot | raw }} {{ script_foot | raw }}
 </sxh> </sxh>
-==== -- Personnalisation de l'affichage ====+==== - Personnalisation de l'affichage ====
  
 Modifier le template **app/views/Groupes/index.html** pour changer l'apparence du bouton Ajouter, et enlever le segment entourant l'affichage : Modifier le template **app/views/Groupes/index.html** pour changer l'apparence du bouton Ajouter, et enlever le segment entourant l'affichage :
Ligne 572: Ligne 572:
 <html><div class="todo">Effectuer un commit+push vers gitHub</div></html> <html><div class="todo">Effectuer un commit+push vers gitHub</div></html>
  
-==== -- Personnalisation du contenu et du comportement de la table ====+==== - Personnalisation du contenu et du comportement de la table ====
  
 === Sélection des champs === === Sélection des champs ===
Ligne 660: Ligne 660:
  
  
-==== -- Filtrage des données en fonction de l'authentification ====+==== - Filtrage des données en fonction de l'authentification ====
  
 On souhaite afficher les groupes de l'organisation dont fait partie l'utilisateur connecté. On souhaite afficher les groupes de l'organisation dont fait partie l'utilisateur connecté.
Ligne 721: Ligne 721:
  
  
-===== -- Création de table, CRUD et Auth =====+===== - Création de table, CRUD et Auth =====
  
 Importer et exécuter le script {{:php-rt:tp4:connection.sql|}} depuis phpMyAdmin. Importer et exécuter le script {{:php-rt:tp4:connection.sql|}} depuis phpMyAdmin.
Ligne 727: Ligne 727:
 La table **connexion** va permettre d'historiser les connexions à l'application. La table **connexion** va permettre d'historiser les connexions à l'application.
  
-==== -- Génération du model ====+==== - Génération du model ====
  
 Depuis l'interface d'administration d'Ubiquity, générer le model correspondant dans la partie **models**. Depuis l'interface d'administration d'Ubiquity, générer le model correspondant dans la partie **models**.
Ligne 736: Ligne 736:
  
  
-==== -- Enregistrement de chaque connexion ====+==== - Enregistrement de chaque connexion ====
  
 A chaque connexion d'un utilisateur, on ajoute une instance de connexion, stockée dans la base de données : A chaque connexion d'un utilisateur, on ajoute une instance de connexion, stockée dans la base de données :
Ligne 767: Ligne 767:
 <html><div class="todo">Tester en vous connectant plusieurs fois à l'application, et en changeant d'utilisateur.<br>Vérifier ensuite les enregistrements présents dans la table <b>connection</b></div></html> <html><div class="todo">Tester en vous connectant plusieurs fois à l'application, et en changeant d'utilisateur.<br>Vérifier ensuite les enregistrements présents dans la table <b>connection</b></div></html>
  
-==== -- Crud controller pour les connexions ====+==== - Crud controller pour les connexions ====
 Créer un CRUD controller pour gérer les connexions : Créer un CRUD controller pour gérer les connexions :
  
 {{:php-rt:tp4:crudconnections.png?900|}} {{:php-rt:tp4:crudconnections.png?900|}}
  
-==== -- Classement des données ====+==== - Classement des données ====
  
 Surdéfinir la méthode **_getInstancesFilter** de la classe **Connections** pour classer les enregistrements par utilisateur et par date : Surdéfinir la méthode **_getInstancesFilter** de la classe **Connections** pour classer les enregistrements par utilisateur et par date :
Ligne 885: Ligne 885:
 <html><div class="todo">Effectuer un commit+push vers gitHub</div></html> <html><div class="todo">Effectuer un commit+push vers gitHub</div></html>
  
-==== -- Améliorations de l'affichage ====+==== - Améliorations de l'affichage ====
  
 === Template index === === Template index ===
Ligne 934: Ligne 934:
  
  
-==== -- Suppression des enregistrements ====+==== - Suppression des enregistrements ====
  
 La suppression sur le click d'un bouton d'utilisateur se fait en utilisant le helper **_deleteMultiple** présent dans la classe de base **CRUDController** : La suppression sur le click d'un bouton d'utilisateur se fait en utilisant le helper **_deleteMultiple** présent dans la classe de base **CRUDController** :
Ligne 969: Ligne 969:
  
  
-==== -- Améliorations de l'affichage ====+==== - Améliorations de l'affichage ====
 === Messages de suppression === === Messages de suppression ===
  
Ligne 1055: Ligne 1055:
  
  
-==== -- Ajout de l'authentification ====+==== - Ajout de l'authentification ====
 Ajouter l'authentification via **AuthExt** au controller **Connexions** : Ajouter l'authentification via **AuthExt** au controller **Connexions** :
  
  • php-rt/tp4.1528382679.txt.gz
  • Dernière modification : il y a 5 ans
  • (modification externe)