From 5116828ca325f854d448e04110dfe76eb7100026 Mon Sep 17 00:00:00 2001 From: Mieszko Date: Sun, 26 Aug 2018 13:09:43 +0200 Subject: [PATCH] Add JWT authorization --- app/build.gradle | 5 ++ .../findmytutor/activity/LoginActivity.java | 2 +- .../findmytutor/activity/MainActivity.java | 35 +++++++- .../network/RetrofitClientInstance.java | 90 ++++++++----------- .../wmi/findmytutor/service/Coordinates.java | 2 +- 5 files changed, 75 insertions(+), 59 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index d0b1d68..b82179e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,6 +2,10 @@ apply plugin: 'com.android.application' android { compileSdkVersion 27 + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } defaultConfig { applicationId "com.uam.wmi.findmytutor" minSdkVersion 19 @@ -31,5 +35,6 @@ dependencies { implementation 'com.squareup.retrofit2:converter-gson:2.3.0' implementation "io.swagger:swagger-annotations:1.5.15" implementation "org.threeten:threetenbp:1.3.5" + implementation "com.squareup.okhttp3:logging-interceptor:3.10.0" } diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/LoginActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/LoginActivity.java index d876bcd..50b3848 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/LoginActivity.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/LoginActivity.java @@ -319,7 +319,7 @@ public class LoginActivity extends AppCompatActivity implements LoaderCallbacks< @Override protected Boolean doInBackground(Void... params) { - LdapService service = RetrofitClientInstance.getRetrofitLoginInstance().create(LdapService.class); + LdapService service = RetrofitClientInstance.createService(LdapService.class); LdapUser user = new LdapUser("string",mPassword,"string","pracownik","string","string",mEmail); diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/MainActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/MainActivity.java index 2eac035..6c8011b 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/MainActivity.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/MainActivity.java @@ -5,7 +5,19 @@ import android.content.SharedPreferences; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; +import android.widget.Toast; + import com.uam.wmi.findmytutor.R; +import com.uam.wmi.findmytutor.model.Coordinate; +import com.uam.wmi.findmytutor.network.RetrofitClientInstance; +import com.uam.wmi.findmytutor.service.Coordinates; + +import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + public class MainActivity extends AppCompatActivity { @@ -14,8 +26,27 @@ public class MainActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SharedPreferences sharedPref = getSharedPreferences("fmtPrefs", Context.MODE_PRIVATE); - String text = sharedPref.getString("test",null); - Log.e("Mainactivity", text); + final String authToken = sharedPref.getString("authToken",null); + + Coordinates service = RetrofitClientInstance.createService(Coordinates.class,authToken); + + Call> call = service.getTopCoordinates(authToken); + + + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + Log.e("MainActivity", "rsp: " + response.body()); + } + + @Override + public void onFailure(Call> call, Throwable t) { + Toast.makeText(MainActivity.this, "Something went wrong...Error message: " + t.getMessage(), Toast.LENGTH_SHORT).show(); + } + }); + + + } } diff --git a/app/src/main/java/com/uam/wmi/findmytutor/network/RetrofitClientInstance.java b/app/src/main/java/com/uam/wmi/findmytutor/network/RetrofitClientInstance.java index d537f97..77db473 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/network/RetrofitClientInstance.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/network/RetrofitClientInstance.java @@ -1,71 +1,51 @@ package com.uam.wmi.findmytutor.network; -import java.util.concurrent.TimeUnit; - import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; public class RetrofitClientInstance { - private static Retrofit retrofit; + private static final String BASE_URL = "https://s416084.projektstudencki.pl/develop/"; + private static Retrofit.Builder builder + = new Retrofit.Builder() + .baseUrl(BASE_URL) + .addConverterFactory(GsonConverterFactory.create()); - public static Retrofit getRetrofitLoginInstance() { - if (retrofit == null) { - retrofit = new retrofit2.Retrofit.Builder() - .baseUrl(BASE_URL) - .addConverterFactory(GsonConverterFactory.create()) - .build(); + private static Retrofit retrofit = builder.build(); + + private static OkHttpClient.Builder httpClient + = new OkHttpClient.Builder(); + + private static HttpLoggingInterceptor logging + = new HttpLoggingInterceptor() + .setLevel(HttpLoggingInterceptor.Level.BASIC); + + public static S createService(Class serviceClass) { + if (!httpClient.interceptors().contains(logging)) { + httpClient.addInterceptor(logging); + builder.client(httpClient.build()); + retrofit = builder.build(); } - return retrofit; + return retrofit.create(serviceClass); } - public static Retrofit getRetrofitInstance() { - if (retrofit == null) { - retrofit = new retrofit2.Retrofit.Builder() - .baseUrl(BASE_URL) - .client(provideOkHttpClient()) - .addConverterFactory(GsonConverterFactory.create()) - .build(); + public static S createService(Class serviceClass, final String token) { + if (token != null) { + httpClient.interceptors().clear(); + httpClient.addInterceptor(chain -> { + Request original = chain.request(); + Request.Builder builder1 = original.newBuilder() + .header("Authorization", "Bearer " + token); + Request request = builder1.build(); + return chain.proceed(request); + }); + builder.client(httpClient.build()); + retrofit = builder.build(); } - return retrofit; + return retrofit.create(serviceClass); } - - private static OkHttpClient provideOkHttpClient() { - OkHttpClient.Builder okhttpClientBuilder = new OkHttpClient.Builder(); - okhttpClientBuilder.connectTimeout(30, TimeUnit.SECONDS); - okhttpClientBuilder.readTimeout(30, TimeUnit.SECONDS); - okhttpClientBuilder.writeTimeout(30, TimeUnit.SECONDS); - return okhttpClientBuilder.build(); - } - -// -// private OkHttpClient provideokHttpClient() { -// OkHttpClient.Builder okhttpClientBuilder = new OkHttpClient.Builder(); -// okhttpClientBuilder.connectTimeout(30, TimeUnit.SECONDS); -// okhttpClientBuilder.readTimeout(30, TimeUnit.SECONDS); -// okhttpClientBuilder.writeTimeout(30, TimeUnit.SECONDS); -// -// okhttpClientBuilder.addInterceptor(new NetworkConnectionInterceptor() { -// @Override -// public boolean isInternetAvailable() { -// return this.isInternetAvailable(); -// } -// -// @Override -// public void onInternetUnavailable() { -// if (mInternetConnectionListener != null) { -// mInternetConnectionListener.onInternetUnavailable(); -// } -// } -// -// @Override -// public void onCacheUnavailable() { -// if (mInternetConnectionListener != null) { -// mInternetConnectionListener.onCacheUnavailable(); -// } -// } -// }); -// } } diff --git a/app/src/main/java/com/uam/wmi/findmytutor/service/Coordinates.java b/app/src/main/java/com/uam/wmi/findmytutor/service/Coordinates.java index 46a4236..f4d6960 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/service/Coordinates.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/service/Coordinates.java @@ -30,7 +30,7 @@ public interface Coordinates { Call> getTopCoordinatesByUserId(@Path("userId") String userId , @Header("Authorization") JwtToken token); @GET("api/coordinates/top") - Call> getTopCoordinates(@Header("Authorization") JwtToken token); + Call> getTopCoordinates(@Header("Authorization") String auth); @GET("api/coordinates/top/online") Call> getOnlineCoordinates(@Header("Authorization") JwtToken token);