diff --git a/tps/sem6/README.md b/tps/sem6/README.md
index 614fda0..1fa80dd 100644
--- a/tps/sem6/README.md
+++ b/tps/sem6/README.md
@@ -20,31 +20,150 @@ On va maintenant construire un leaderboard des combats qui ont été réalisés
* Pour cela vous allez devoir coller le template suivant en tant que layout (`app/views/layouts/application.html.erb`) :
```erb
-
+
+
+
+ Les joyeux de la couronne WEB
+
+
+ <%= csrf_meta_tags %>
+ <%= csp_meta_tag %>
+
+
+ <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
+ <%= javascript_importmap_tags %>
+
+
+ <%= yield %>
+
+
+
```
Voici la vue de la page, prenez le temps de lire le code et comprendre quels attributs devra posséder le contrôleur :
```erb
+
+
+
+
+
+
+
Date
+
Nom
+
Combatant 1
+
Combatant 2
+
Résultat
+
Gagnant
+
+
+
+ <% @combats.order(created_at: :desc).each do |combat| %>
+
+
<%= l(combat.created_at, format: :short) %>
+
<%= combat.name %>
+
<%= combat.left_fighter.name %>
+
<%= combat.right_fighter.name %>
+
<%= combat.result.capitalize %>
+
<%= combat.winner&.name %>
+
+ <% end %>
+
+
+
```
+* Créez ou générez un contrôleur `Leaderboard` avec une action index et la route correspondante.
+
+* Copiez le template du layout comme indiqué ci-dessus
+
+* Copiez le code fourni ci-dessus dans la vue correspondant à l'action index (`app/views/leaderboard/index.html.erb`)
+
+* Modifiez le code de l'action index du contrôleur pour fournir à la vue ce dont elle a besoin pour afficher les combats.
+
+* Faites fonctionner la recherche présente dans la top bar pour filter les combats en fonction de leur nom (comme on l'a déjà fait dans l'API)
+
+* Améliorez cette recherche pour chercher également dans le nom des créatures combatantes.
+
+## Gestion des utilisateurs
+
+Nous allons ajouter à notre application des utilisateurs possédant un nom d'utilisateur et un mot de passe.
+
+Nous devons stocker ce mot de passe de manière sécurisée dans la base de donnée.
+
+Pour cela on va utiliser la méthode `has_secure_password` du module `ActiveModel::SecurePassword`.
+
+* Créez ou générez un modèle `User`possédant un `username` de type `string`
+
+* Faites en sorte qu'il ne puisse pas y avoir deux utilisateur créatures avec le même `username`. (Rappelez vous commment on a fait pour les créatures)
+
+* Lisez attentivement la documentation https://api.rubyonrails.org/v7.0.4/classes/ActiveModel/SecurePassword/ClassMethods.html, et adaptez votre code :
+ * Vous devez ajouter une gem spécifique à votre bundle (`bundle add xxx`)
+ * Vous devez ajouter un attribut à User (`bin/rails g migration addSecurePasswordToUsers xxx`)
+ * Vous pouvez maintenant appeler `has_secure_password` dans `user.rb`
+
+* Modifiez les seeds pour créer un utilisateur `root` ayant comme mot de passe `admin123`
+
+## Connexion
+
+On va permettre aux utilisateurs de s'authentifier dans notre application.
+
+Pour ça, on vous fourni la vue de l'écran de connexion :
+
+```erb
+
+ <% if @error_message.present? %>
+
+
+ Oups! <%= @error_message %>
+
+
+ <% end %>
+
+ <%= form_with url: {action: :create}, class: "text-center" do |form| %>
+
+ <%= form.submit "Connexion", class: "w-100 btn btn-lg btn-primary mt-2", data: { turbo: "false" }%>
+ <% end %>
+
+```
+* Créez ou générez un controlleur `UserSessions` avec deux actions : `new` et `create`, et les routes correspondantes.
-leaderboard
-fonction recherche avec joins
+* L'action `new` affichera le formulaire, c'est pour cette action que vous utiliserez la vue fournie ci-dessus.
-ajout d'un modèle user avec has_secure_password
-1 seul utilisateur par name
-password present
+* Configurez la route pour brancher cet écran de connexion à l'url `http://localhost:3000/login`
-creer un utilisateur admin dans les seeds
-root
-password: admin123
+* Coder l'action `create` qui :
-ajouter un controleur de login
-supporter les sessions
+ * Cherche l'utilisateur (`User`) correspondant à l'username reçu en param.
+ * Vérifie que le mot de passe est correcte.
+ * Si oui :
+ * Met l'utilisateur en sesion
+ * Redirige vers le leaderboard : `redirect_to controller: :leaderboard, action: :index`
+ * Si non, rend la vue `new` pour afficher de nouveau le formulaire : `render :new`
+ * La vue peut mème afficher un message d'erreur si vous définnissez le bon attribut dans l'action
-brider la leaderboard aux utilisateurs connectés
+### Protégez l'application
-brider les controleurs d'API à basic auth
+* Modifier le leaderboard pour brider son accès aux utilisateurs connectés
+* Modifier les controleurs d'API pour brider leurs accès aux utilisateur présents en base de donnée, en forçant l'envoi de l'username et mot de passe en basic auth