diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index 4bef4ba..0349eb7 100644
Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ
diff --git a/app/build.gradle b/app/build.gradle
index 04fb691..402e9f8 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -26,4 +26,7 @@ dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+ implementation 'com.google.code.gson:gson:2.8.2'
+ implementation 'com.squareup.retrofit2:retrofit:2.3.0'
+ implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2c01943..da59066 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -6,6 +6,7 @@
+
-
@@ -25,13 +26,13 @@
loginResponse = service.fakeValidate(user).execute();
+ if (loginResponse.isSuccessful()) {
+ String authToken = loginResponse.body().getToken();
+ Log.e("Login", "jwt token: " + authToken);
+
+ SharedPreferences sharedPref = getSharedPreferences("fmtPrefs", Context.MODE_PRIVATE);
+ sharedPref.edit().putString("authToken", authToken).putBoolean("loggedIn", true).apply();
+
+ return true;
+ }
+
+ } catch (IOException e) {
+ Log.e("Login error", "nie udalo sie kurde...");
return false;
}
- for (String credential : DUMMY_CREDENTIALS) {
- String[] pieces = credential.split(":");
- if (pieces[0].equals(mEmail)) {
- // Account exists, return true if the password matches.
- return pieces[1].equals(mPassword);
- }
- }
+ //To jest async i nie da sie zwrocic :(
+// Call call = service.fakeValidate(user);
+//
+// call.enqueue(new Callback() {
+// @Override
+// public void onResponse(Call call, Response response) {
+// Log.e("jwt", response.body().getToken());
+// }
+//
+// @Override
+// public void onFailure(Call call, Throwable t) {
+// Toast.makeText(LoginActivity.this, "Something went wrong...Please try later!", Toast.LENGTH_SHORT).show();
+// return false;
+// }
+// });
+
+
+
+ // TODO: attempt authentication against a network service.
+
+// try {
+// // Simulate network access.
+// Thread.sleep(2000);
+// } catch (InterruptedException e) {
+// return false;
+// }
+//
+// for (String credential : DUMMY_CREDENTIALS) {
+// String[] pieces = credential.split(":");
+// if (pieces[0].equals(mEmail)) {
+// // Account exists, return true if the password matches.
+// return pieces[1].equals(mPassword);
+// }
+// }
// TODO: register the new account here.
return false;
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/MainActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/MainActivity.java
similarity index 86%
rename from app/src/main/java/com/uam/wmi/findmytutor/MainActivity.java
rename to app/src/main/java/com/uam/wmi/findmytutor/activity/MainActivity.java
index fbb379a..3341ffc 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/MainActivity.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/MainActivity.java
@@ -1,4 +1,4 @@
-package com.uam.wmi.findmytutor;
+package com.uam.wmi.findmytutor.activity;
import android.content.Context;
import android.content.SharedPreferences;
@@ -10,6 +10,8 @@ import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
+import com.uam.wmi.findmytutor.R;
+
public class MainActivity extends AppCompatActivity {
@Override
@@ -18,7 +20,7 @@ public class MainActivity extends AppCompatActivity {
setContentView(R.layout.activity_main);
SharedPreferences sharedPref = getSharedPreferences("fmtPrefs", Context.MODE_PRIVATE);
String text = sharedPref.getString("test",null);
- Log.e("okurwaMainactivity", text);
+ Log.e("Mainactivity", text);
}
}
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/StartupActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/StartupActivity.java
similarity index 80%
rename from app/src/main/java/com/uam/wmi/findmytutor/StartupActivity.java
rename to app/src/main/java/com/uam/wmi/findmytutor/activity/StartupActivity.java
index e9c3e65..17ec17b 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/StartupActivity.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/StartupActivity.java
@@ -1,10 +1,21 @@
-package com.uam.wmi.findmytutor;
+package com.uam.wmi.findmytutor.activity;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
+import android.util.Log;
+import android.widget.Toast;
+
+import com.uam.wmi.findmytutor.model.JwtToken;
+import com.uam.wmi.findmytutor.model.LdapUser;
+import com.uam.wmi.findmytutor.network.RetrofitClientInstance;
+import com.uam.wmi.findmytutor.service.LdapService;
+
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
public class StartupActivity extends AppCompatActivity {
private static final int AUTHENTICATION_REQUEST_CODE = 666;
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/JwtToken.java b/app/src/main/java/com/uam/wmi/findmytutor/model/JwtToken.java
new file mode 100644
index 0000000..0d04fc8
--- /dev/null
+++ b/app/src/main/java/com/uam/wmi/findmytutor/model/JwtToken.java
@@ -0,0 +1,20 @@
+package com.uam.wmi.findmytutor.model;
+
+import com.google.gson.annotations.Expose;
+import com.google.gson.annotations.SerializedName;
+
+public class JwtToken {
+
+ @SerializedName("token")
+ @Expose
+ private String token;
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token;
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/LdapUser.java b/app/src/main/java/com/uam/wmi/findmytutor/model/LdapUser.java
new file mode 100644
index 0000000..5bf06eb
--- /dev/null
+++ b/app/src/main/java/com/uam/wmi/findmytutor/model/LdapUser.java
@@ -0,0 +1,96 @@
+package com.uam.wmi.findmytutor.model;
+
+import com.google.gson.annotations.Expose;
+import com.google.gson.annotations.SerializedName;
+
+public class LdapUser {
+
+ @SerializedName("login")
+ @Expose
+ private String login;
+ @SerializedName("password")
+ @Expose
+ private String password;
+ @SerializedName("department")
+ @Expose
+ private String department;
+ @SerializedName("title")
+ @Expose
+ private String title;
+ @SerializedName("firstName")
+ @Expose
+ private String firstName;
+ @SerializedName("lastName")
+ @Expose
+ private String lastName;
+ @SerializedName("email")
+ @Expose
+ private String email;
+
+ public LdapUser(String login, String password, String department, String title, String firstName, String lastName, String email) {
+ this.login = login;
+ this.password = password;
+ this.department = department;
+ this.title = title;
+ this.firstName = firstName;
+ this.lastName = lastName;
+ this.email = email;
+ }
+
+ public String getLogin() {
+ return login;
+ }
+
+ public void setLogin(String login) {
+ this.login = login;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getDepartment() {
+ return department;
+ }
+
+ public void setDepartment(String department) {
+ this.department = department;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/network/NetworkConnectionInterceptor.java b/app/src/main/java/com/uam/wmi/findmytutor/network/NetworkConnectionInterceptor.java
new file mode 100644
index 0000000..f5732e3
--- /dev/null
+++ b/app/src/main/java/com/uam/wmi/findmytutor/network/NetworkConnectionInterceptor.java
@@ -0,0 +1,32 @@
+package com.uam.wmi.findmytutor.network;
+
+import java.io.IOException;
+
+import okhttp3.Interceptor;
+import okhttp3.Request;
+import okhttp3.Response;
+
+public abstract class NetworkConnectionInterceptor implements Interceptor {
+
+ public abstract boolean isInternetAvailable();
+
+ public abstract void onInternetUnavailable();
+
+ public abstract void onCacheUnavailable();
+
+ @Override
+ public Response intercept(Chain chain) throws IOException {
+ Request request = chain.request();
+ if (!isInternetAvailable()) {
+ onInternetUnavailable();
+ request = request.newBuilder().header("Cache-Control",
+ "public, only-if-cached, max-stale=" + 60 * 60 * 24).build();
+ Response response = chain.proceed(request);
+ if (response.cacheResponse() == null) {
+ onCacheUnavailable();
+ }
+ return response;
+ }
+ return chain.proceed(request);
+ }
+}
\ No newline at end of file
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
new file mode 100644
index 0000000..d537f97
--- /dev/null
+++ b/app/src/main/java/com/uam/wmi/findmytutor/network/RetrofitClientInstance.java
@@ -0,0 +1,71 @@
+package com.uam.wmi.findmytutor.network;
+
+import java.util.concurrent.TimeUnit;
+
+import okhttp3.OkHttpClient;
+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/";
+
+
+ public static Retrofit getRetrofitLoginInstance() {
+ if (retrofit == null) {
+ retrofit = new retrofit2.Retrofit.Builder()
+ .baseUrl(BASE_URL)
+ .addConverterFactory(GsonConverterFactory.create())
+ .build();
+ }
+ return retrofit;
+ }
+
+ public static Retrofit getRetrofitInstance() {
+ if (retrofit == null) {
+ retrofit = new retrofit2.Retrofit.Builder()
+ .baseUrl(BASE_URL)
+ .client(provideOkHttpClient())
+ .addConverterFactory(GsonConverterFactory.create())
+ .build();
+ }
+ return retrofit;
+ }
+
+ 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/LdapService.java b/app/src/main/java/com/uam/wmi/findmytutor/service/LdapService.java
new file mode 100644
index 0000000..3583d2a
--- /dev/null
+++ b/app/src/main/java/com/uam/wmi/findmytutor/service/LdapService.java
@@ -0,0 +1,26 @@
+package com.uam.wmi.findmytutor.service;
+
+import com.uam.wmi.findmytutor.model.JwtToken;
+import com.uam.wmi.findmytutor.model.LdapUser;
+
+import retrofit2.Call;
+import retrofit2.http.Body;
+import retrofit2.http.GET;
+import retrofit2.http.POST;
+import retrofit2.http.Path;
+
+public interface LdapService {
+
+ @POST("api/ldap/fakeValidate")
+ Call fakeValidate(@Body LdapUser user);
+
+ @POST("api/ldap/validate")
+ Call validate(@Body LdapUser user);
+
+ @GET("api/ldap/getUserData/{login}")
+ Call getUserDataByLogin(@Path("login") String userLogin);
+
+ @GET("api/ldap/getUserData/email/{email}")
+ Call getUserDataByMail(@Path("email") String userMail);
+}
+
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/service/Session.java b/app/src/main/java/com/uam/wmi/findmytutor/service/Session.java
new file mode 100644
index 0000000..20a6a58
--- /dev/null
+++ b/app/src/main/java/com/uam/wmi/findmytutor/service/Session.java
@@ -0,0 +1,4 @@
+package com.uam.wmi.findmytutor.service;
+
+public interface Session {
+}
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index ff0a08b..6784ef7 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -9,7 +9,7 @@
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
- tools:context=".LoginActivity">
+ tools:context=".activity.LoginActivity">
+ tools:context=".activity.MainActivity">
+ tools:context=".activity.StartupActivity">
\ No newline at end of file
diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml
index c649451..0be3b43 100644
--- a/app/src/main/res/layout/content_main.xml
+++ b/app/src/main/res/layout/content_main.xml
@@ -5,7 +5,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
- tools:context=".MainActivity"
+ tools:context=".activity.MainActivity"
tools:showIn="@layout/activity_main">
\ No newline at end of file