diff --git a/app/build.gradle b/app/build.gradle index db17bcb5f0f00941f96ff4d512b3d481bfb9934f..1f9f58532a1bd0d265fca34b0b24fcd32aecd576 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -25,6 +25,8 @@ dependencies { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.3.1' + compile 'com.google.firebase:firebase-auth:10.2.1' + compile 'com.google.android.gms:play-services-auth:10.2.1' testCompile 'junit:junit:4.12' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e3ddc51d4798dbc81e30de43cc0de197c10efd02..ebed06e1a92f193e6a622076648daec4cf19c10c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,7 +15,7 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - <activity android:name=".Registration"></activity> + <activity android:name=".MainActivity"></activity> </application> </manifest> \ No newline at end of file diff --git a/app/src/main/java/com/darshanbshah/odsystem/Login.java b/app/src/main/java/com/darshanbshah/odsystem/Login.java index 98b14c9b6306c5e7af3a7826f9e0577431a56b29..d52c898348187d0c2abec71fd970de0fa25aa35a 100644 --- a/app/src/main/java/com/darshanbshah/odsystem/Login.java +++ b/app/src/main/java/com/darshanbshah/odsystem/Login.java @@ -1,13 +1,114 @@ package com.darshanbshah.odsystem; +import android.content.Intent; +import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.util.Log; +import android.view.View; -public class Login extends AppCompatActivity { +import com.google.android.gms.auth.api.Auth; +import com.google.android.gms.auth.api.signin.GoogleSignInAccount; +import com.google.android.gms.auth.api.signin.GoogleSignInOptions; +import com.google.android.gms.auth.api.signin.GoogleSignInResult; +import com.google.android.gms.common.ConnectionResult; +import com.google.android.gms.common.api.GoogleApiClient; +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.Task; +import com.google.firebase.auth.AuthCredential; +import com.google.firebase.auth.AuthResult; +import com.google.firebase.auth.FirebaseAuth; +import com.google.firebase.auth.FirebaseUser; +import com.google.firebase.auth.GoogleAuthProvider; +public class Login extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener, View.OnClickListener{ + + private GoogleApiClient mGoogleApiClient; + private FirebaseAuth mAuth; + private FirebaseAuth.AuthStateListener mAuthListener; + + private static int RC_SIGN_IN = 0; + private static String TAG = "MAIN_ACTIVITY"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); + mAuth = FirebaseAuth.getInstance(); + mAuthListener = new FirebaseAuth.AuthStateListener() { + @Override + public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { + FirebaseUser user = firebaseAuth.getCurrentUser(); + if (user != null) { + Log.d("AUTH", "User logged in: " + user.getEmail()); + } + else { + Log.d("AUTH", "User logged out."); + } + } + }; + GoogleSignInOptions options = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestIdToken(getString(R.string.default_web_client_id)).requestEmail().build(); + mGoogleApiClient = new GoogleApiClient.Builder(this).enableAutoManage(this, this).addApi(Auth.GOOGLE_SIGN_IN_API, options).build(); + + findViewById(R.id.sign_in_button).setOnClickListener(this); + } + + public void login() { + Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); + startActivityForResult(signInIntent, RC_SIGN_IN); + } + + + @Override + public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { + Log.d(TAG, "Connection failed"); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.sign_in_button: + login(); + break; + } + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == RC_SIGN_IN) { + GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); + if (result.isSuccess()) { + GoogleSignInAccount account = result.getSignInAccount(); + FirebaseAuthGoogle(account); + } + else { + Log.d(TAG, "Google login failed"); + } + } + } + + public void FirebaseAuthGoogle(GoogleSignInAccount account) { + AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null); + mAuth.signInWithCredential(credential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { + @Override + public void onComplete(@NonNull Task<AuthResult> task) { + Log.d("AUTH", "signInWithCredential: onComplete: " + task.isSuccessful()); + startActivity(new Intent(getApplicationContext(), MainActivity.class)); + } + }); + } + + @Override + protected void onStart() { + super.onStart(); + mAuth.addAuthStateListener(mAuthListener); + } + + @Override + protected void onStop() { + super.onStop(); + if (mAuthListener != null) { + mAuth.removeAuthStateListener(mAuthListener); + } } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/darshanbshah/odsystem/MainActivity.java b/app/src/main/java/com/darshanbshah/odsystem/MainActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..dff9f5e24b434c7ba1b0495036dda9f831e10c27 --- /dev/null +++ b/app/src/main/java/com/darshanbshah/odsystem/MainActivity.java @@ -0,0 +1,25 @@ +package com.darshanbshah.odsystem; + +import android.content.Intent; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.view.View; + +import com.google.firebase.auth.FirebaseAuth; + +public class MainActivity extends AppCompatActivity { + + private FirebaseAuth mAuth; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + mAuth = FirebaseAuth.getInstance(); + } + + public void signOut(View view) { + mAuth.signOut(); + startActivity(new Intent(this, Login.class)); + finish(); + } +} diff --git a/app/src/main/java/com/darshanbshah/odsystem/Registration.java b/app/src/main/java/com/darshanbshah/odsystem/Registration.java deleted file mode 100644 index e420b23da03c66cb2465536be787724717cbb04d..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/darshanbshah/odsystem/Registration.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.darshanbshah.odsystem; - -import android.support.v7.app.AppCompatActivity; -import android.os.Bundle; - -public class Registration extends AppCompatActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_registration); - } -} diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index fe10d90f1f4c1271ff542c71f6b8227c507d4900..88f539e53879a941f2598d27f33cb11c9d3ddd07 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -10,61 +10,24 @@ android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.darshanbshah.odsystem.Login"> - <EditText - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:inputType="textPersonName" - android:ems="10" - android:layout_marginTop="185dp" - android:id="@+id/emailField" - android:hint="Email" - android:layout_alignParentTop="true" - android:layout_centerHorizontal="true" - android:textAlignment="center" /> - - <EditText - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:inputType="textPassword" - android:ems="10" - android:id="@+id/passwordField" - android:hint="Password" - android:fontFamily="sans-serif" - android:layout_marginTop="43dp" - android:layout_below="@+id/emailField" - android:layout_alignStart="@+id/emailField" - android:textAlignment="center" /> - - <Button - android:text="Login" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="41dp" - android:id="@+id/loginButton" - android:layout_below="@+id/passwordField" - android:layout_centerHorizontal="true" - style="@style/Widget.AppCompat.Button.Colored" /> - <TextView android:text="OD SYSTEM" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="68dp" + android:layout_marginTop="12dp" android:id="@+id/textView3" android:typeface="sans" - android:layout_alignParentTop="true" - android:layout_alignParentStart="true" android:textAppearance="@style/TextAppearance.AppCompat" android:textSize="36sp" - android:textAlignment="center" /> + android:textAlignment="center" + android:layout_alignParentTop="true" + android:layout_alignParentStart="true" /> - <TextView - android:text="Register" + <com.google.android.gms.common.SignInButton android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="31dp" - android:id="@+id/regTextView" - android:textAlignment="center" - android:layout_below="@+id/loginButton" - android:layout_centerHorizontal="true" /> + android:layout_marginTop="186dp" + android:id="@+id/sign_in_button" + android:layout_centerHorizontal="true"></com.google.android.gms.common.SignInButton> + </RelativeLayout> diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000000000000000000000000000000000000..b091d10213ce5e56a653da9801ffac9328e9c3c3 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/activity_main" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context="com.darshanbshah.odsystem.MainActivity"> + + <Button + android:text="Sign Out" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/sign_out_button" + android:onClick="signOut" + style="@android:style/Widget.Material.Button.ButtonBar.AlertDialog" + android:layout_alignParentTop="true" + android:layout_alignParentEnd="true" /> +</RelativeLayout> diff --git a/app/src/main/res/layout/activity_registration.xml b/app/src/main/res/layout/activity_registration.xml deleted file mode 100644 index 9f5bf6f7d6fb8f9b0b89b28de7901a29bd6b01b4..0000000000000000000000000000000000000000 --- a/app/src/main/res/layout/activity_registration.xml +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:id="@+id/activity_registration" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:paddingBottom="@dimen/activity_vertical_margin" - android:paddingLeft="@dimen/activity_horizontal_margin" - android:paddingRight="@dimen/activity_horizontal_margin" - android:paddingTop="@dimen/activity_vertical_margin" - tools:context="com.darshanbshah.odsystem.Registration"> - -</RelativeLayout>