From 0c2435cc89f537e0cb4619b4d5b92301c44cde92 Mon Sep 17 00:00:00 2001 From: rudij7 Date: Tue, 1 Oct 2019 18:08:25 +0530 Subject: [PATCH] APP: Add login and registration integration with Firebase --- .idea/codeStyles/Project.xml | 116 ++++++++++++++++++ app/build.gradle | 2 +- app/google-services.json | 20 +-- .../java/com/example/tablayout/Login.java | 99 +++++++++++++-- .../java/com/example/tablayout/Register.java | 87 ++++++++++++- build.gradle | 4 +- gradle/wrapper/gradle-wrapper.properties | 4 +- 7 files changed, 307 insertions(+), 25 deletions(-) create mode 100644 .idea/codeStyles/Project.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..681f41a --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,116 @@ + + + + + + + +
+ + + + xmlns:android + + ^$ + + + +
+
+ + + + xmlns:.* + + ^$ + + + BY_NAME + +
+
+ + + + .*:id + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:name + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + name + + ^$ + + + +
+
+ + + + style + + ^$ + + + +
+
+ + + + .* + + ^$ + + + BY_NAME + +
+
+ + + + .* + + http://schemas.android.com/apk/res/android + + + ANDROID_ATTRIBUTE_ORDER + +
+
+ + + + .* + + .* + + + BY_NAME + +
+
+
+
+
+
\ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 740563c..6a8aa7d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -25,7 +25,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'com.google.firebase:firebase-auth:17.0.0' + implementation 'com.google.firebase:firebase-auth:19.1.0' implementation 'com.firebaseui:firebase-ui-auth:4.3.1' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.2.0' diff --git a/app/google-services.json b/app/google-services.json index 2ce1f71..ccc4edd 100644 --- a/app/google-services.json +++ b/app/google-services.json @@ -1,42 +1,42 @@ { "project_info": { - "project_number": "441201864216", - "firebase_url": "https://invenapp-f8264.firebaseio.com", - "project_id": "invenapp-f8264", - "storage_bucket": "invenapp-f8264.appspot.com" + "project_number": "457897063191", + "firebase_url": "https://inventory-f3c06.firebaseio.com", + "project_id": "inventory-f3c06", + "storage_bucket": "inventory-f3c06.appspot.com" }, "client": [ { "client_info": { - "mobilesdk_app_id": "1:441201864216:android:b76b311dc543976733dd6d", + "mobilesdk_app_id": "1:457897063191:android:91e121ab61b37fdf9c3d52", "android_client_info": { "package_name": "com.example.tablayout" } }, "oauth_client": [ { - "client_id": "441201864216-k672vcv14riolc2vl622etkce613tdqp.apps.googleusercontent.com", + "client_id": "457897063191-alejo8f0psmm8r3f4l55fr7hfmd8ibd5.apps.googleusercontent.com", "client_type": 1, "android_info": { "package_name": "com.example.tablayout", - "certificate_hash": "6d0edd4fb84cd8516074053e7f73361a13385a81" + "certificate_hash": "bdf6c94e9b3565c0417d70d717426a46effdab03" } }, { - "client_id": "441201864216-ttgujha0qg7u1tm35qqhd96cl3du0jnr.apps.googleusercontent.com", + "client_id": "457897063191-fhd3j1gl3me9o2fkj47o9hqu5imsmvel.apps.googleusercontent.com", "client_type": 3 } ], "api_key": [ { - "current_key": "AIzaSyCeZws5AxIAyuvR2oVoQ82usRbz4zC8RJ4" + "current_key": "AIzaSyDb5lp3Z_VaGjo5BBXjrAsLk8DP4j-oni8" } ], "services": { "appinvite_service": { "other_platform_oauth_client": [ { - "client_id": "441201864216-ttgujha0qg7u1tm35qqhd96cl3du0jnr.apps.googleusercontent.com", + "client_id": "457897063191-fhd3j1gl3me9o2fkj47o9hqu5imsmvel.apps.googleusercontent.com", "client_type": 3 } ] diff --git a/app/src/main/java/com/example/tablayout/Login.java b/app/src/main/java/com/example/tablayout/Login.java index 2e311d3..25eb889 100644 --- a/app/src/main/java/com/example/tablayout/Login.java +++ b/app/src/main/java/com/example/tablayout/Login.java @@ -1,29 +1,48 @@ package com.example.tablayout; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.text.TextUtils; +import android.util.Log; import android.view.View; import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.Task; +import com.google.firebase.auth.AuthResult; +import com.google.firebase.auth.FirebaseAuth; +import com.google.firebase.auth.FirebaseUser; public class Login extends AppCompatActivity { + + private FirebaseAuth mAuth; + + private EditText EmailField; + private EditText PasswordField; + Button b,r; - Context context; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); - - b=findViewById(R.id.logbtn); - r=findViewById(R.id.regbtn); + mAuth = FirebaseAuth.getInstance(); + onStart(); + EmailField = findViewById(R.id.email); + PasswordField = findViewById(R.id.pass); + b = findViewById(R.id.logbtn); + r = findViewById(R.id.regbtn); r.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - Intent i = new Intent(getApplicationContext() ,Register.class); + Intent i = new Intent(getApplicationContext(), Register.class); startActivity(i); } }); @@ -31,9 +50,73 @@ public void onClick(View view) { b.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - Intent i = new Intent(getApplicationContext() ,MainActivity.class); - startActivity(i); + signIn(EmailField.getText().toString(), PasswordField.getText().toString()); + } }); } -} + + @Override + public void onStart() { + super.onStart(); + // Check if user is signed in (non-null) and update UI accordingly. + FirebaseUser currentUser = mAuth.getCurrentUser(); + if(currentUser!=null) { + Intent i = new Intent(getApplicationContext(), MainActivity.class); + startActivity(i); + } + } + + private void signIn(String email, String password) { + if (!validateForm()) { + return; + } + + + // [START sign_in_with_email] + mAuth.signInWithEmailAndPassword(email, password) + .addOnCompleteListener(this, new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if (task.isSuccessful()) { + // Sign in success, update UI with the signed-in user's information + Intent i = new Intent(getApplicationContext(), MainActivity.class); + startActivity(i); + } else { + // If sign in fails, display a message to the user. + + Toast.makeText(Login.this, "Authentication failed.", + Toast.LENGTH_SHORT).show(); + + + } + + // [START_EXCLUDE] + + } + }); + // [END sign_in_with_email] + } + private boolean validateForm() { + boolean valid = true; + + String email = EmailField.getText().toString(); + if (TextUtils.isEmpty(email)) { + EmailField.setError("Required."); + valid = false; + } else { + EmailField.setError(null); + } + + String password = PasswordField.getText().toString(); + if (TextUtils.isEmpty(password)) { + PasswordField.setError("Required."); + valid = false; + } else { + PasswordField.setError(null); + } + + return valid; + } + } + diff --git a/app/src/main/java/com/example/tablayout/Register.java b/app/src/main/java/com/example/tablayout/Register.java index 3617956..ddc568b 100644 --- a/app/src/main/java/com/example/tablayout/Register.java +++ b/app/src/main/java/com/example/tablayout/Register.java @@ -1,21 +1,42 @@ package com.example.tablayout; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; +import android.text.TextUtils; import android.view.View; import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.Task; +import com.google.firebase.auth.AuthResult; +import com.google.firebase.auth.FirebaseAuth; public class Register extends AppCompatActivity { + private FirebaseAuth mAuth; + + private EditText EmailField; + private EditText PasswordField; + Button reg; + + + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); + mAuth = FirebaseAuth.getInstance(); + + EmailField = findViewById(R.id.email); + PasswordField = findViewById(R.id.pass); reg = findViewById(R.id.regbtn); @@ -23,11 +44,73 @@ protected void onCreate(Bundle savedInstanceState) { reg.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - Intent i = new Intent(getApplicationContext() ,Login.class); - startActivity(i); + createAccount(EmailField.getText().toString(), PasswordField.getText().toString()); + } }); } + private void createAccount(String email, String password) { + + if (!validateForm()) { + + Toast.makeText(Register.this, "email and password is required..", + Toast.LENGTH_SHORT).show(); + return; + } + + + // [START create_user_with_email] + mAuth.createUserWithEmailAndPassword(email, password) + .addOnCompleteListener(this, new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if (task.isSuccessful()) { + // Sign in success, update UI with the signed-in user's information + Toast.makeText(Register.this, "Authentication successful.", + Toast.LENGTH_SHORT).show(); + Intent i = new Intent(getApplicationContext() ,Login.class); + startActivity(i); + + } else { + // If sign in fails, display a message to the user. + Toast.makeText(Register.this, "Authentication failed.", + Toast.LENGTH_SHORT).show(); + Intent i = new Intent(getApplicationContext() ,Register.class); + startActivity(i); + + } + + // [START_EXCLUDE] + + // [END_EXCLUDE] + } + }); + // [END create_user_with_email] + } + + private boolean validateForm() { + boolean valid = true; + + String email = EmailField.getText().toString(); + if (TextUtils.isEmpty(email)) { + EmailField.setError("Required."); + valid = false; + } else { + EmailField.setError(null); + } + + String password = PasswordField.getText().toString(); + if (TextUtils.isEmpty(password)) { + PasswordField.setError("Required."); + valid = false; + } else { + PasswordField.setError(null); + } + + return valid; + } + + } diff --git a/build.gradle b/build.gradle index 1028821..d6e3744 100644 --- a/build.gradle +++ b/build.gradle @@ -7,8 +7,8 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.4.2' - classpath 'com.google.gms:google-services:4.2.0' + classpath 'com.android.tools.build:gradle:3.5.0' + classpath 'com.google.gms:google-services:4.3.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3167a62..0cac032 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sat Sep 21 13:48:51 IST 2019 +#Tue Oct 01 16:38:06 IST 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip