On va retourner sur l’écran du compte, cette fois pour mettre en place la fonctionnalité de connexion de l’utilisateur à son compte.

Nous n’allons plus utiliser l’API Token pour nous authentifier
jwt scopé à l’utilisateurDataStore pour stocker les informations de l’utilisateurVoilà diagramme de séquence de ce que nous allons faire pour l’étape 1 :

🛟 Aide
Pour l’instant nous ne stockons pas les informations de l’utilisateur, nous allons juste les afficher dans la console.
jwt scopé à l’utilisateurUser pour stocker les informations de l’utilisateur connectéAccountViewModel créé précédemment, ajoutez une fonction login qui prend en paramètre un username et un passwordorders de votre AccountViewModel pour qu’elle utilise le jwt récupéré ainsi que les informations de l’utilisateur connectéquery parameters dans vos requêtes réseau Strapi Rest API
id de l’utilisateur)response.code() pour gérer les erreurs de connexionwhen pour gérer les différents codes d’erreurswhen(response.code()) {
401 -> // Mauvais identifiants
403 -> // Accès refusé
404 -> // Ressource non trouvée
else -> // Autre erreur
}
Pour remonter à l’utilisateur les erreurs vous pouvez par exemple utiliser une sealed class LoginError :
sealed class LoginError {
object Unauthorized : LoginError()
object Forbidden : LoginError()
object NotFound : LoginError()
object Other : LoginError()
}
Que vous passerez à votre UIState plus tard
jwt qui est le token d’authentification{
"jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNzM0MDM2NDgzLCJleHAiOjE3MzY2Mjg0ODN9.nF_BLxs2hblQ_9l1geZ4bPlYmV90ZqFk8Hdl4ANrDhA",
"user": {
"id": 1,
"documentId": "vpfsc4adv76ynm2pqu5sm6i9",
"username": "campus",
"email": "[email protected]",
"provider": "local",
"confirmed": true,
"blocked": false,
"createdAt": "2024-11-10T17:04:20.222Z",
"updatedAt": "2024-12-11T08:09:57.358Z",
"publishedAt": "2024-12-11T08:09:56.657Z"
}
}
Vous devrez donc créer une data class pour stocker ces informations.
@JsonClass(generateAdapter = true)
data class DwitchAuthResponse(...)
Nous allons ajouter un DataStore pour stocker les informations de l’utilisateur connecté entre les redémarrages de l’application.
Voici l’évolution de notre diagramme de séquence :

DwitchDataStore pour stocker les informations de l’utilisateur qui est un DataStore de Jetpacklogout() dans le viewModel)orders de votre AccountViewModel doit maintenant récupérer les informations de l’utilisateur connecté depuis le DataStore🛟 Aide
Allez consulter la fiche ressource sur le DataStore pour vous aider à le mettre en place.
🛑 Attention
DataStore et comment il va être passé à votre ViewModelcontext pour être instancié, il faudra donc le récuperer pour l’instancier.ViewModelNous allons mettre en place la connexion de l’utilisateur à son compte. Comme sur la maquette vu au début de l’itération.
| Process | Gestion des erreurs |
|---|---|
![]() | ![]() |
UIState doit être mis à jour en conséquence des étapes précédentes🛟 Aide
Pour réaliser ces tâches vous avez tout les outils nécessaires, vous avez déjà fait des requêtes réseau, un ViewModel, un UIState et vous avez accès à Material Design pour les composants. Si besoin posez moi des questions ;)
Pour ceux qui sont chauds
interceptor OkHttp