Laboratoire 16½
Ce laboratoire couvre les notions des cours 16 et 17.

Téléchargez les projets de départ. N'oubliez pas de mettre à jour la base de données avec dotnet ef database update
.
Ce labo peut sembler intimidant, mais au final c'est principalement (presque) copier-coller 5 actions à partir des exemples dans la section Access Control du cours 17.
🔍 Qui êtes-vous ?
La gestion des utilisateurs (inscription et connexion) est déjà largement implémentée côté serveur. Il restera juste à compléter l'implémentation côté client.
Vous aurez à faire toute l'implémentation côté serveur en faisant le TP3 très bientôt et ce sera déjà assez.

1 - Inscription
💡 Complétez le code côté Angular pour que l'inscription soit fonctionnelle.
Testez si cela fonctionne en créant un utilisateur.
2 - Connexion
💡 Complétez le code côté Angular pour que la connexion soit fonctionnelle.
Testez si cela fonctionne en vous connectant.
💼 Et que voulez-vous ?
Dans cette section, vous aurez à compléter toutes les actions de ReviewsController
. Pas besoin d'utiliser un service (À part UserManager) dans ce laboratoire. Codez tout directement dans les actions du contrôleur.

3 - PostReview
💡 Complétez l'action Post
qui permettra d'ajouter un Review
dans la base de données.
💡 Cette action devra seulement être utilisable par les utilisateurs authentifiés.
💡 Assurez-vous de joindre le token à la requête puisqu'elle nécessitera l'authentification.
💡 Il faudra un DTO pour envoyer le nom du jeu et le texte de la critique.
💡 Il faudra vérifier qui envoie la requête pour l'associer à la nouvelle Review
.
💡 Il faudra retourner, avec Ok(...)
, un objet un peu différent du modèle Review
. Vérifiez le modèle Review
côté Angular pour créer et utiliser le parfait DTO !
4 - GetReview
Gardez à l'esprit que cette requête est déjà automatiquement appelée lorsque la page Web est réactualisée.
💡 Il faudra simplement retourner la liste de tous les Review
convertis avec le même DTO que créé plus haut pour Post
.
💡 Cette action doit être disponible pour tous, même si nous ne sommes pas authentifiés.
5 - DeleteReview
💡 Seul l'auteur d'une critique doit être capable de la supprimer.
6 - EditReview

💡 Seul l'auteur d'une critique doit être capable de la modifier.
💡 Seul le texte de la critique doit pouvoir être modifié. (Utilisez le même DTO que pour Post
et ignorez le nom du jeu, par exemple !)
7 - UpvoteReview
💡 Seul un utilisateur authentifié qui N'est PAS l'auteur d'une critique doit être capable de la posivoter.
Notez que si on posivote une critique qu'on a déjà posivité, ça doit annuler / retirer notre upvote.
🔑 Qualité > Quantité
8 - Interceptor
💡 Normalement, vous avez joint un token pour plusieurs requêtes dans le projet Angular. Remplacez ce code répétitif par un intercepteur.