Ce travail est à produire individuellement, vous devrez pour cela créer un dépôt git privé.
Le code de base est présent sur ce dépôt GitLab.
Commencez par faire un Fork du dépôt, et partagez le avec moi (en tant que "Reporter")
Vous devez impérativement renseigner votre dépôt à l'aide d'une remise sur le Moodle du cours dans l'espace de remise
La date limite de remise est le 3 Mai 2021 inclu, ce qui signifie que vos dépôts seront clonés et ne seront plus mis à jour
Information: nous exécutons des scripts automatiques pour détecter le plagiat de code, si vous nous rendez des devoirs similaires, nous reviendrons à la fois vers le plagieur et le plagié.
La base de code est une application Symfony dont le but est de gérer la participation des étudiants au forum des stages.
Installez les dépendances à l'aide de composer :
composer install
Modifiez alors le fichier .env
pour qu'il contienne les paramètres de connexion valide à un serveur MySQL
et créez les tables:
php bin/console doctrine:schema:create
Nous allons maintenant insérer des données dans la base, pour cela:
php bin/console doctrine:fixtures:load
Lancez alors le serveur web et testez:
symfony serve
Vous aurez besoin d'un compte admin, et d'un compte non-admin. Pour cela, vous devrez modifier manuellement
valeur de la colonne admin
dans la base de données!
Vous devriez voir quelque chose qui ressemble à ceci:
Modifiez le code afin que les objets apparaissent dans l'ordre alphabétiques, et les instances dans l'ordre de leur numéro de série (croissant).
Remarquez que lorsque vous éditez l'instance d'un objet, une erreur apparaît:
Essayez de comprendre d'où vient cette erreur et corrigez là.
Il existe actuellement trois niveaux d'utilisateurs (non connecté, connecté, connecté et admin), mais aucune règle de sécurité.
Faites en sorte que le site soit sécurisé, notamment:
Attention: il ne s'agit pas uniquement de cacher les liens, mais bien de protéger les pages!
La page "objets" est dotée d'un formulaire permettant de filtrer les objets par catégories, qui n'est pour l'instant pas fonctionnel (le formulaire est créé et affiché mais pas exploité).
Modifier le code afin qu'il effectue le filtrage.
Un utilisateur peut réserver un objet, le code de base cherche alors la première instance disponible et la réserve pour lui.
??
.Voici comment l'application peut être utilisée actuellement:
Cette procédure est fonctionnelle, mais l'étape 2 est très pénible car l'administrateur doit éditer l'instance, enlever le "Réservé par" et le déplacer dans "Emprunté par".
Sur la page "instances", lorsqu'un objet est réservé, ajouter deux boutons:
Modifiez la page d'accueil afin qu'elle se comporte différemment pour les utilisateurs:
Constatez que le nombre de requêtes de l'application n'est pas réellement optimisé (il est possible de voir cette information dans la barre de développement). Essayez de minimiser le nombre de requêtes envoyées à la base de données.