* 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 :
* 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