diff --git a/README.md b/README.md index 485a3bb..4f330c1 100644 --- a/README.md +++ b/README.md @@ -1 +1,3 @@ # Token-Authentication + +https://burakdev.medium.com/jwt-authentication-and-refresh-token-in-android-with-retrofit-interceptor-authenticator-da021f7f7534 \ No newline at end of file diff --git a/app/src/main/java/com/mrntlu/tokenauthentication/MainActivity.kt b/app/src/main/java/com/mrntlu/tokenauthentication/MainActivity.kt index 2dd4735..b2e826a 100644 --- a/app/src/main/java/com/mrntlu/tokenauthentication/MainActivity.kt +++ b/app/src/main/java/com/mrntlu/tokenauthentication/MainActivity.kt @@ -12,8 +12,5 @@ class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) - - val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment - val navController = navHostFragment.navController } } \ No newline at end of file diff --git a/app/src/main/java/com/mrntlu/tokenauthentication/models/Data.kt b/app/src/main/java/com/mrntlu/tokenauthentication/models/UserInfo.kt similarity index 81% rename from app/src/main/java/com/mrntlu/tokenauthentication/models/Data.kt rename to app/src/main/java/com/mrntlu/tokenauthentication/models/UserInfo.kt index 8ef15c5..57a596b 100644 --- a/app/src/main/java/com/mrntlu/tokenauthentication/models/Data.kt +++ b/app/src/main/java/com/mrntlu/tokenauthentication/models/UserInfo.kt @@ -1,6 +1,6 @@ package com.mrntlu.tokenauthentication.models -data class Data( +data class UserInfo( val _id: String, val email_address: String ) \ No newline at end of file diff --git a/app/src/main/java/com/mrntlu/tokenauthentication/models/UserInfoResponse.kt b/app/src/main/java/com/mrntlu/tokenauthentication/models/UserInfoResponse.kt index e362374..6eed100 100644 --- a/app/src/main/java/com/mrntlu/tokenauthentication/models/UserInfoResponse.kt +++ b/app/src/main/java/com/mrntlu/tokenauthentication/models/UserInfoResponse.kt @@ -1,6 +1,9 @@ package com.mrntlu.tokenauthentication.models +import com.google.gson.annotations.SerializedName + data class UserInfoResponse( - val `data`: Data, + @SerializedName("data") + val userInfo: UserInfo, val message: String ) \ No newline at end of file diff --git a/app/src/main/java/com/mrntlu/tokenauthentication/service/auth/AuthApiService.kt b/app/src/main/java/com/mrntlu/tokenauthentication/service/auth/AuthApiService.kt index cff837f..06e3d53 100644 --- a/app/src/main/java/com/mrntlu/tokenauthentication/service/auth/AuthApiService.kt +++ b/app/src/main/java/com/mrntlu/tokenauthentication/service/auth/AuthApiService.kt @@ -10,12 +10,6 @@ import retrofit2.http.Header import retrofit2.http.POST interface AuthApiService { - - @POST("auth/register") - suspend fun register( - @Body auth: Auth, - ) - @POST("auth/login") suspend fun login( @Body auth: Auth, diff --git a/app/src/main/java/com/mrntlu/tokenauthentication/service/main/MainApiService.kt b/app/src/main/java/com/mrntlu/tokenauthentication/service/main/MainApiService.kt index d922f66..c0c85f0 100644 --- a/app/src/main/java/com/mrntlu/tokenauthentication/service/main/MainApiService.kt +++ b/app/src/main/java/com/mrntlu/tokenauthentication/service/main/MainApiService.kt @@ -5,7 +5,6 @@ import retrofit2.Response import retrofit2.http.GET interface MainApiService { - @GET("user/info") suspend fun getUserInfo(): Response } \ No newline at end of file diff --git a/app/src/main/java/com/mrntlu/tokenauthentication/ui/auth/LoginFragment.kt b/app/src/main/java/com/mrntlu/tokenauthentication/ui/auth/LoginFragment.kt index b7f07a0..44fcc38 100644 --- a/app/src/main/java/com/mrntlu/tokenauthentication/ui/auth/LoginFragment.kt +++ b/app/src/main/java/com/mrntlu/tokenauthentication/ui/auth/LoginFragment.kt @@ -21,7 +21,6 @@ import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint class LoginFragment : Fragment() { - private val viewModel: AuthViewModel by viewModels() private val tokenViewModel: TokenViewModel by activityViewModels() @@ -37,13 +36,13 @@ class LoginFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) navController = Navigation.findNavController(view) + val loginTV = view.findViewById(R.id.loginTV) tokenViewModel.token.observe(viewLifecycleOwner) { token -> if (token != null) navController.navigate(R.id.action_loginFragment_to_main_nav_graph) } - val loginTV = view.findViewById(R.id.loginTV) viewModel.loginResponse.observe(viewLifecycleOwner) { when(it) { is ApiResponse.Failure -> loginTV.text = it.errorMessage diff --git a/app/src/main/java/com/mrntlu/tokenauthentication/ui/auth/RegisterFragment.kt b/app/src/main/java/com/mrntlu/tokenauthentication/ui/auth/RegisterFragment.kt index bba6da9..1226177 100644 --- a/app/src/main/java/com/mrntlu/tokenauthentication/ui/auth/RegisterFragment.kt +++ b/app/src/main/java/com/mrntlu/tokenauthentication/ui/auth/RegisterFragment.kt @@ -8,16 +8,10 @@ import android.view.ViewGroup import com.mrntlu.tokenauthentication.R class RegisterFragment : Fragment() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_register, container, false) } } \ No newline at end of file diff --git a/app/src/main/java/com/mrntlu/tokenauthentication/ui/main/MainFragment.kt b/app/src/main/java/com/mrntlu/tokenauthentication/ui/main/MainFragment.kt index a8a9530..5c1349e 100644 --- a/app/src/main/java/com/mrntlu/tokenauthentication/ui/main/MainFragment.kt +++ b/app/src/main/java/com/mrntlu/tokenauthentication/ui/main/MainFragment.kt @@ -20,7 +20,6 @@ import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint class MainFragment : Fragment() { - private val viewModel: MainViewModel by viewModels() private val tokenViewModel: TokenViewModel by activityViewModels() @@ -48,7 +47,7 @@ class MainFragment : Fragment() { mainTV.text = when(it) { is ApiResponse.Failure -> "Code: ${it.code}, ${it.errorMessage}" ApiResponse.Loading -> "Loading" - is ApiResponse.Success -> "ID: ${it.data.data._id}\nMail: ${it.data.data.email_address}\n\nToken: $token" + is ApiResponse.Success -> "ID: ${it.data.userInfo._id}\nMail: ${it.data.userInfo.email_address}\n\nToken: $token" } } diff --git a/app/src/main/java/com/mrntlu/tokenauthentication/viewmodels/BaseViewModel.kt b/app/src/main/java/com/mrntlu/tokenauthentication/viewmodels/BaseViewModel.kt index 6c20a72..77938bd 100644 --- a/app/src/main/java/com/mrntlu/tokenauthentication/viewmodels/BaseViewModel.kt +++ b/app/src/main/java/com/mrntlu/tokenauthentication/viewmodels/BaseViewModel.kt @@ -1,6 +1,5 @@ package com.mrntlu.tokenauthentication.viewmodels -import android.util.Log import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope @@ -13,12 +12,11 @@ open class BaseViewModel : ViewModel() { protected fun baseRequest(liveData: MutableLiveData, errorHandler: CoroutinesErrorHandler, request: () -> Flow) { mJob = viewModelScope.launch(Dispatchers.IO + CoroutineExceptionHandler { _, error -> - Log.d("BaseTest", "baseRequest: $error") viewModelScope.launch(Dispatchers.Main) { errorHandler.onError(error.localizedMessage ?: "Error occured! Please try again.") } }){ - request().cancellable().collect { + request().collect { withContext(Dispatchers.Main) { liveData.value = it } diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml index eb60b04..4c7dcb9 100644 --- a/app/src/main/res/layout/fragment_login.xml +++ b/app/src/main/res/layout/fragment_login.xml @@ -12,6 +12,9 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Login Fragment" + android:textSize="20sp" + android:textColor="@color/black" + android:textStyle="bold" app:layout_constraintBottom_toTopOf="@+id/loginButton" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index 0a2d24d..6b737e4 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -19,6 +19,10 @@