From 06b7ab660899a5b9f49649492e1207e890a83a81 Mon Sep 17 00:00:00 2001 From: Terebov_Maksim Date: Wed, 19 Feb 2025 10:39:48 +0300 Subject: [PATCH] day2_commit_2_UI_added_password_cheak_and_basic_auth_(test) --- app/src/main/java/ru/myitschool/work/api/ApiService.kt | 6 +++++- .../main/java/ru/myitschool/work/ui/login/LoginFragment.kt | 7 ++++--- .../java/ru/myitschool/work/ui/login/LoginViewModel.kt | 6 ++++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/ru/myitschool/work/api/ApiService.kt b/app/src/main/java/ru/myitschool/work/api/ApiService.kt index c199218..f8b780a 100644 --- a/app/src/main/java/ru/myitschool/work/api/ApiService.kt +++ b/app/src/main/java/ru/myitschool/work/api/ApiService.kt @@ -3,12 +3,16 @@ package ru.myitschool.work.api import retrofit2.Response import retrofit2.http.Body import retrofit2.http.GET +import retrofit2.http.Header import retrofit2.http.PATCH import retrofit2.http.Path interface ApiService { @GET("api/{login}/auth") - suspend fun authenticate(@Path("login") login: String): Response + suspend fun authenticate( + @Path("login") login: String, + @Header("Authorization") authorization: String // Добавляем заголовок Authorization + ): Response @GET("api/{login}/info") suspend fun getUserInfo(@Path("login") login: String): Response> // Возвращаем Map вместо UserInfo diff --git a/app/src/main/java/ru/myitschool/work/ui/login/LoginFragment.kt b/app/src/main/java/ru/myitschool/work/ui/login/LoginFragment.kt index b5478a5..7475f45 100644 --- a/app/src/main/java/ru/myitschool/work/ui/login/LoginFragment.kt +++ b/app/src/main/java/ru/myitschool/work/ui/login/LoginFragment.kt @@ -52,7 +52,8 @@ class LoginFragment : Fragment(R.layout.fragment_login) { binding.login.setOnClickListener { val username = binding.username.text.toString() - performLogin(username) // Вызываем метод performLogin + val password = binding.password.text.toString() // Получаем пароль + performLogin(username, password) // Передаем пароль в метод performLogin } binding.loading.visibleOrGone(false) @@ -72,9 +73,9 @@ class LoginFragment : Fragment(R.layout.fragment_login) { }) } - private fun performLogin(username: String) { + private fun performLogin(username: String, password: String) { lifecycleScope.launch { - viewModel.authenticate(username) // Вызываем метод authenticate из ViewModel + viewModel.authenticate(username, password) // Передаем пароль в метод authenticate } } diff --git a/app/src/main/java/ru/myitschool/work/ui/login/LoginViewModel.kt b/app/src/main/java/ru/myitschool/work/ui/login/LoginViewModel.kt index faa5fd7..6252195 100644 --- a/app/src/main/java/ru/myitschool/work/ui/login/LoginViewModel.kt +++ b/app/src/main/java/ru/myitschool/work/ui/login/LoginViewModel.kt @@ -8,6 +8,7 @@ import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch +import okhttp3.Credentials import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory import ru.myitschool.work.SessionManager @@ -30,10 +31,11 @@ class LoginViewModel @Inject constructor( .create(ApiService::class.java) } - fun authenticate(username: String) { + fun authenticate(username: String, password: String) { if (isValidUsername(username)) { viewModelScope.launch { - val response = apiService.authenticate(username) + val credentials = Credentials.basic(username, password) // Создаем Basic Auth заголовок + val response = apiService.authenticate(username, credentials) // Передаем заголовок в запрос if (response.isSuccessful) { SessionManager.userLogin = username _state.value = LoginState(success = true)