|
1 | | -# Laboratoire 17½ 💩 |
2 | | - |
3 | | -Ce laboratoire couvre les notions des cours 17 et 18. |
4 | | - |
5 | | -<center></center> |
6 | | - |
7 | | -Téléchargez les [projets de départ](../../static/files/labo16.zip). N'oubliez pas de mettre à jour la base de données avec `dotnet ef database update`. |
8 | | - |
9 | | -**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. |
10 | | - |
11 | | -## 🔍 Qui êtes-vous ? |
12 | | - |
13 | | -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**. |
14 | | - |
15 | | -Vous aurez à faire toute l'implémentation **côté serveur** en faisant le **TP3** très bientôt et ce sera déjà assez. |
16 | | - |
17 | | -<center></center> |
18 | | - |
19 | | -### 1 - Inscription |
20 | | - |
21 | | -[💡](/cours/rencontre8.2#-inscription) Complétez le code **côté Angular** pour que l'inscription soit fonctionnelle. |
22 | | - |
23 | | -Testez si cela fonctionne en créant un utilisateur. |
24 | | - |
25 | | -### 2 - Connexion |
26 | | - |
27 | | -[💡](/cours/rencontre8.2#-connexion) Complétez le code **côté Angular** pour que la connexion soit fonctionnelle. |
28 | | - |
29 | | -Testez si cela fonctionne en vous connectant. |
30 | | - |
31 | | -## 💼 Et que voulez-vous ? |
32 | | - |
33 | | -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. |
34 | | - |
35 | | -<center></center> |
36 | | - |
37 | | -### 3 - PostReview |
38 | | - |
39 | | -:::note |
40 | | - |
41 | | -Oui il y a beaucoup d'ampoules... Vous n'avez pas forcément besoin de toutes les consulter. C'est seulement si vous ne vous souvenez plus comment procéder. |
42 | | - |
43 | | -::: |
44 | | - |
45 | | -[💡](/cours/rencontre9.1#-post) Complétez l'action `Post` qui permettra d'ajouter un `Review` dans la base de données. |
46 | | - |
47 | | -[💡](/cours/rencontre8.2#-action-réservée-aux-utilisateurs) Cette action devra seulement être utilisable par les utilisateurs authentifiés. |
48 | | - |
49 | | -[💡](/cours/rencontre8.2#-exemple-de-requête-utilisant-le-token) Assurez-vous de joindre le token à la requête puisqu'elle nécessitera l'authentification. |
50 | | - |
51 | | -[💡](/cours/rencontre8.1#-data-transfer-objects) Il faudra un DTO pour envoyer le **nom du jeu** et le **texte de la critique**. |
52 | | - |
53 | | -[💡](/cours/rencontre8.2#%EF%B8%8F%EF%B8%8F-déterminer-qui-envoie-la-requête) Il faudra vérifier qui envoie la requête pour l'associer à la nouvelle `Review`. |
54 | | - |
55 | | -[💡](/cours/rencontre9.1#-data-transfer-objects) 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** ! |
56 | | - |
57 | | -### 4 - GetReview |
58 | | - |
59 | | -:::note |
60 | | - |
61 | | -Gardez à l'esprit que cette requête est déjà automatiquement appelée lorsque la page Web est réactualisée. |
62 | | - |
63 | | -::: |
64 | | - |
65 | | -[💡](/cours/rencontre9.1#-data-transfer-objects) Il faudra simplement retourner la liste de tous les `Review` convertis avec le même **DTO** que créé plus haut pour `Post`. |
66 | | - |
67 | | -[💡](/cours/rencontre8.2#-action-réservée-aux-utilisateurs) Cette action doit être disponible pour tous, même si nous ne sommes pas authentifiés. |
68 | | - |
69 | | -### 5 - DeleteReview |
70 | | - |
71 | | -[💡](/cours/rencontre9.1#-delete) Seul l'auteur d'une critique doit être capable de la supprimer. |
72 | | - |
73 | | -### 6 - EditReview |
74 | | - |
75 | | -<center></center> |
76 | | - |
77 | | -[💡](/cours/rencontre9.1#-put) Seul l'auteur d'une critique doit être capable de la modifier. |
78 | | - |
79 | | -[💡](/cours/rencontre9.1#-put) 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 !) |
80 | | - |
81 | | -### 7 - UpvoteReview |
82 | | - |
83 | | -[💡](/cours/rencontre9.1#-put) Seul un utilisateur authentifié **qui N'est PAS** l'auteur d'une critique doit être capable de la _posivoter_. |
84 | | - |
85 | | -Notez que si on _posivote_ une critique qu'on a **déjà _posivoté_**, ça doit annuler / retirer notre upvote. |
86 | | - |
87 | | -## 🔑 Qualité > Quantité |
88 | | - |
89 | | -### 8 - Interceptor |
90 | | - |
91 | | -[💡](/cours/rencontre8.2#-intercepteurs) Normalement, vous avez joint un token pour plusieurs requêtes dans le **projet Angular**. Remplacez ce code répétitif par un **intercepteur**. |
| 1 | +# Laboratoire 17 💩 |
0 commit comments