Tuesday, October 5, 2021

Login and Registration in Firebase in FirebaseAuth(Session Management)

 

 Login and Registration in Firebase in FirebaseAuth(Session Management)

Give Internet Permission and and Firebase to Project(all term true)

Login XML:-

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:app="http://schemas.android.com/apk/res-auto"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
tools:context=".Register">

    <
androidx.cardview.widget.CardView
       
android:layout_width="0dp"
       
android:layout_height="wrap_content"
       
android:layout_marginStart="8dp"
       
android:layout_marginTop="8dp"
       
android:layout_marginEnd="8dp"
       
app:cardCornerRadius="5dp"
       
app:layout_constraintEnd_toEndOf="parent"
       
app:layout_constraintStart_toStartOf="parent"
       
app:layout_constraintTop_toTopOf="parent">

        <
androidx.constraintlayout.widget.ConstraintLayout
           
android:layout_width="match_parent"
           
android:layout_height="match_parent">

            <
EditText
               
android:id="@+id/registerName"
               
android:layout_width="0dp"
               
android:layout_height="wrap_content"
                
android:layout_marginStart="16dp"
               
android:layout_marginTop="16dp"
               
android:layout_marginEnd="16dp"
               
android:ems="10"
               
android:hint="Full Name"
               
android:inputType="textPersonName"
               
app:layout_constraintEnd_toEndOf="parent"
               
app:layout_constraintStart_toStartOf="parent"
               
app:layout_constraintTop_toTopOf="parent" />

            <
EditText
               
android:id="@+id/registerEmail"
               
android:layout_width="0dp"
               
android:layout_height="wrap_content"
               
android:layout_marginStart="16dp"
               
android:layout_marginTop="8dp"
               
android:layout_marginEnd="16dp"
               
android:ems="10"
               
android:hint="Email Address"
               
android:inputType="textEmailAddress"
               
app:layout_constraintEnd_toEndOf="parent"
               
app:layout_constraintStart_toStartOf="parent"
                
app:layout_constraintTop_toBottomOf="@+id/registerName" />

            <
EditText
               
android:id="@+id/registerPassword"
               
android:layout_width="0dp"
               
android:layout_height="wrap_content"
               
android:layout_marginStart="16dp"
               
android:layout_marginTop="8dp"
               
android:layout_marginEnd="16dp"
               
android:ems="10"
               
android:hint="Password"
               
android:inputType="textPassword"
                
app:layout_constraintEnd_toEndOf="parent"
               
app:layout_constraintStart_toStartOf="parent"
               
app:layout_constraintTop_toBottomOf="@+id/registerEmail" />

            <
EditText
               
android:id="@+id/registerPhone"
               
android:layout_width="0dp"
               
android:layout_height="wrap_content"
               
android:layout_marginStart="16dp"
               
android:layout_marginTop="8dp"
               
android:layout_marginEnd="16dp"
                
android:ems="10"
               
android:hint="Phone Number"
               
android:inputType="phone"
               
app:layout_constraintEnd_toEndOf="parent"
               
app:layout_constraintStart_toStartOf="parent"
               
app:layout_constraintTop_toBottomOf="@+id/registerPassword" />

            <
CheckBox
               
android:visibility="gone"
               
android:id="@+id/isTeacher"
               
android:layout_width="wrap_content"
               
android:layout_height="wrap_content"
               
android:layout_marginStart="16dp"
               
android:layout_marginTop="8dp"
               
android:text="Register As Teacher"
               
app:layout_constraintStart_toStartOf="parent"
               
app:layout_constraintTop_toBottomOf="@+id/registerPhone" />

            <
CheckBox
               
android:visibility="gone"
               
android:id="@+id/isStudent"
               
android:layout_width="wrap_content"
               
android:layout_height="wrap_content"
               
android:layout_marginTop="8dp"
               
android:layout_marginEnd="16dp"
               
android:text="Register as Student"
               
app:layout_constraintEnd_toEndOf="parent"
               
app:layout_constraintStart_toEndOf="@+id/isTeacher"
               
app:layout_constraintTop_toBottomOf="@+id/registerPhone" />

            <
Button
               
android:id="@+id/registerBtn"
               
android:layout_width="0dp"
               
android:layout_height="wrap_content"
               
android:layout_marginStart="16dp"
               
android:layout_marginTop="32dp"
               
android:layout_marginEnd="16dp"
               
android:text="Create Account"
               
app:layout_constraintEnd_toEndOf="parent"
               
app:layout_constraintStart_toStartOf="parent"
               
app:layout_constraintTop_toBottomOf="@+id/isStudent" />

            <
Button
               
android:id="@+id/gotoLogin"
               
android:layout_width="0dp"
               
android:layout_height="wrap_content"
               
android:layout_marginStart="16dp"
               
android:layout_marginTop="8dp"
               
android:layout_marginEnd="16dp"
               
android:layout_marginBottom="16dp"
               
android:text="Login"
               
app:layout_constraintBottom_toBottomOf="parent"
               
app:layout_constraintEnd_toEndOf="parent"
               
app:layout_constraintStart_toStartOf="parent"
               
app:layout_constraintTop_toBottomOf="@+id/registerBtn" />

        </
androidx.constraintlayout.widget.ConstraintLayout>
    </
androidx.cardview.widget.CardView>
</
androidx.constraintlayout.widget.ConstraintLayout>

 

 

Login Page Java Code:-

 

package com.niranjan.youtuberegisterlogin;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.FirebaseFirestore;

import java.util.HashMap;
import java.util.Map;

public class Register extends AppCompatActivity {
    EditText
fullName,email,password,phone;
    Button
registerBtn,goToLogin;
   
boolean valid = true;
    FirebaseAuth
fAuth;
    FirebaseFirestore
fstore;
   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_register);
       
fullName = findViewById(R.id.registerName);
       
email = findViewById(R.id.registerEmail);
       
password = findViewById(R.id.registerPassword);
       
phone = findViewById(R.id.registerPhone);
       
registerBtn = findViewById(R.id.registerBtn);
       
goToLogin = findViewById(R.id.gotoLogin);
fAuth = FirebaseAuth.getInstance();
fstore=FirebaseFirestore.getInstance();
      
registerBtn.setOnClickListener(new View.OnClickListener() {
          
@Override
          
public void onClick(View v) {
               checkField(
fullName);
               checkField(
email);
               checkField(
password);
               checkField(
phone);

              
if (valid){
                  
fAuth.createUserWithEmailAndPassword(email.getText().toString(),password.getText().toString()).addOnSuccessListener(new OnSuccessListener<AuthResult>() {
                      
@Override
                      
public void onSuccess(AuthResult authResult) {
                           FirebaseUser user =
fAuth.getCurrentUser();
                           Toast.makeText(Register.
this, "Account created", Toast.LENGTH_SHORT).show();
                           DocumentReference df =
fstore.collection("Users").document(user.getUid());
                           Map<String,Object> userinfo =
new HashMap<>();
                           userinfo.put(
"Full name",fullName.getText().toString());
                           userinfo.put(
"User Name",email.getText().toString());
                           userinfo.put(
"Phone Number",phone.getText().toString());
                           userinfo.put(
"isUser","1");
                           df.set(userinfo);
                           startActivity(
new Intent(getApplicationContext(),MainActivity.class));
                           finish();
                       }
                   }).addOnFailureListener(
new OnFailureListener() {
                      
@Override
                      
public void onFailure(@NonNull Exception e) {
                           Toast.makeText(Register.
this, "Failed", Toast.LENGTH_SHORT).show();

                       }
                   });
                  
goToLogin.setOnClickListener(new View.OnClickListener() {
                       
@Override
                      
public void onClick(View v) {
                           startActivity(
new Intent(getApplicationContext(),Login.class));
                       }
                   });

               }

           }
       });
    }

   
public boolean checkField(EditText textField){
       
if(textField.getText().toString().isEmpty()){
            textField.setError(
"Error");
           
valid = false;
        }
else {
           
valid = true;
        }

       
return valid;
    }
}

 

 

 

 

Register Page Xml Page :-

 

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:app="http://schemas.android.com/apk/res-auto"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
tools:context=".Register">

    <
androidx.cardview.widget.CardView
       
android:layout_width="0dp"
       
android:layout_height="wrap_content"
       
android:layout_marginStart="8dp"
       
android:layout_marginTop="8dp"
       
android:layout_marginEnd="8dp"
       
app:cardCornerRadius="5dp"
       
app:layout_constraintEnd_toEndOf="parent"
       
app:layout_constraintStart_toStartOf="parent"
       
app:layout_constraintTop_toTopOf="parent">

        <
androidx.constraintlayout.widget.ConstraintLayout
           
android:layout_width="match_parent"
           
android:layout_height="match_parent">

            <
EditText
               
android:id="@+id/registerName"
               
android:layout_width="0dp"
               
android:layout_height="wrap_content"
               
android:layout_marginStart="16dp"
               
android:layout_marginTop="16dp"
               
android:layout_marginEnd="16dp"
               
android:ems="10"
               
android:hint="Full Name"
               
android:inputType="textPersonName"
               
app:layout_constraintEnd_toEndOf="parent"
               
app:layout_constraintStart_toStartOf="parent"
               
app:layout_constraintTop_toTopOf="parent" />

            <
EditText
               
android:id="@+id/registerEmail"
               
android:layout_width="0dp"
               
android:layout_height="wrap_content"
               
android:layout_marginStart="16dp"
               
android:layout_marginTop="8dp"
               
android:layout_marginEnd="16dp"
               
android:ems="10"
               
android:hint="Email Address"
               
android:inputType="textEmailAddress"
               
app:layout_constraintEnd_toEndOf="parent"
               
app:layout_constraintStart_toStartOf="parent"
               
app:layout_constraintTop_toBottomOf="@+id/registerName" />

            <
EditText
               
android:id="@+id/registerPassword"
               
android:layout_width="0dp"
               
android:layout_height="wrap_content"
               
android:layout_marginStart="16dp"
               
android:layout_marginTop="8dp"
                
android:layout_marginEnd="16dp"
               
android:ems="10"
               
android:hint="Password"
               
android:inputType="textPassword"
               
app:layout_constraintEnd_toEndOf="parent"
               
app:layout_constraintStart_toStartOf="parent"
               
app:layout_constraintTop_toBottomOf="@+id/registerEmail" />

            <
EditText
               
android:id="@+id/registerPhone"
               
android:layout_width="0dp"
               
android:layout_height="wrap_content"
               
android:layout_marginStart="16dp"
               
android:layout_marginTop="8dp"
               
android:layout_marginEnd="16dp"
               
android:ems="10"
               
android:hint="Phone Number"
               
android:inputType="phone"
               
app:layout_constraintEnd_toEndOf="parent"
               
app:layout_constraintStart_toStartOf="parent"
               
app:layout_constraintTop_toBottomOf="@+id/registerPassword" />

            <
CheckBox
                
android:visibility="gone"
               
android:id="@+id/isTeacher"
               
android:layout_width="wrap_content"
               
android:layout_height="wrap_content"
               
android:layout_marginStart="16dp"
               
android:layout_marginTop="8dp"
               
android:text="Register As Teacher"
               
app:layout_constraintStart_toStartOf="parent"
               
app:layout_constraintTop_toBottomOf="@+id/registerPhone" />

            <
CheckBox
               
android:visibility="gone"
               
android:id="@+id/isStudent"
               
android:layout_width="wrap_content"
               
android:layout_height="wrap_content"
               
android:layout_marginTop="8dp"
               
android:layout_marginEnd="16dp"
               
android:text="Register as Student"
               
app:layout_constraintEnd_toEndOf="parent"
               
app:layout_constraintStart_toEndOf="@+id/isTeacher"
               
app:layout_constraintTop_toBottomOf="@+id/registerPhone" />

            <
Button
               
android:id="@+id/registerBtn"
               
android:layout_width="0dp"
               
android:layout_height="wrap_content"
               
android:layout_marginStart="16dp"
               
android:layout_marginTop="32dp"
               
android:layout_marginEnd="16dp"
               
android:text="Create Account"
               
app:layout_constraintEnd_toEndOf="parent"
               
app:layout_constraintStart_toStartOf="parent"
               
app:layout_constraintTop_toBottomOf="@+id/isStudent" />

            <
Button
               
android:id="@+id/gotoLogin"
               
android:layout_width="0dp"
               
android:layout_height="wrap_content"
               
android:layout_marginStart="16dp"
               
android:layout_marginTop="8dp"
               
android:layout_marginEnd="16dp"
               
android:layout_marginBottom="16dp"
               
android:text="Login"
               
app:layout_constraintBottom_toBottomOf="parent"
                
app:layout_constraintEnd_toEndOf="parent"
               
app:layout_constraintStart_toStartOf="parent"
               
app:layout_constraintTop_toBottomOf="@+id/registerBtn" />

        </
androidx.constraintlayout.widget.ConstraintLayout>
    </
androidx.cardview.widget.CardView>
</
androidx.constraintlayout.widget.ConstraintLayout>

 

 

Register Page Java :-

 

package com.niranjan.youtuberegisterlogin;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.FirebaseFirestore;

import java.util.HashMap;
import java.util.Map;

public class Register extends AppCompatActivity {
    EditText
fullName,email,password,phone;
    Button
registerBtn,goToLogin;
   
boolean valid = true;
    FirebaseAuth
fAuth;
    FirebaseFirestore
fstore;
   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_register);
       
fullName = findViewById(R.id.registerName);
       
email = findViewById(R.id.registerEmail);
       
password = findViewById(R.id.registerPassword);
       
phone = findViewById(R.id.registerPhone);
       
registerBtn = findViewById(R.id.registerBtn);
       
goToLogin = findViewById(R.id.gotoLogin);
fAuth = FirebaseAuth.getInstance();
fstore=FirebaseFirestore.getInstance();
      
registerBtn.setOnClickListener(new View.OnClickListener() {
          
@Override
          
public void onClick(View v) {
               checkField(
fullName);
               checkField(
email);
               checkField(
password);
               checkField(
phone);

              
if (valid){
                  
fAuth.createUserWithEmailAndPassword(email.getText().toString(),password.getText().toString()).addOnSuccessListener(new OnSuccessListener<AuthResult>() {
                      
@Override
                      
public void onSuccess(AuthResult authResult) {
                           FirebaseUser user =
fAuth.getCurrentUser();
                           Toast.makeText(Register.
this, "Account created", Toast.LENGTH_SHORT).show();
                           DocumentReference df =
fstore.collection("Users").document(user.getUid());
                           Map<String,Object> userinfo =
new HashMap<>();
                           userinfo.put(
"Full name",fullName.getText().toString());
                           userinfo.put(
"User Name",email.getText().toString());
                           userinfo.put(
"Phone Number",phone.getText().toString());
                           userinfo.put(
"isUser","1");
                           df.set(userinfo);
                           startActivity(
new Intent(getApplicationContext(),MainActivity.class));
                           finish();
                       }
                   }).addOnFailureListener(
new OnFailureListener() {
                      
@Override
                      
public void onFailure(@NonNull Exception e) {
                           Toast.makeText(Register.
this, "Failed", Toast.LENGTH_SHORT).show();

                       }
                   });
                  
goToLogin.setOnClickListener(new View.OnClickListener() {
                      
@Override
                      
public void onClick(View v) {
                           startActivity(
new Intent(getApplicationContext(),Login.class));
                       }
                   });

               }

           }
       });
    }

   
public boolean checkField(EditText textField){
       
if(textField.getText().toString().isEmpty()){
            textField.setError(
"Error");
           
valid = false;
        }
else {
           
valid = true;
        }

       
return valid;
    }
}

 

 

 

MainActivity Xml Page:-

 

 

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:app="http://schemas.android.com/apk/res-auto"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
tools:context=".MainActivity">

    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:text="Dashboard"
       
app:layout_constraintBottom_toBottomOf="parent"
       
app:layout_constraintLeft_toLeftOf="parent"
       
app:layout_constraintRight_toRightOf="parent"
       
app:layout_constraintTop_toTopOf="parent" />

    <
Button
       
android:id="@+id/logoutBtn"
        
android:layout_width="0dp"
       
android:layout_height="wrap_content"
       
android:layout_marginStart="16dp"
       
android:layout_marginEnd="16dp"
       
android:layout_marginBottom="8dp"
       
android:text="Logout"
       
app:layout_constraintBottom_toBottomOf="parent"
       
app:layout_constraintEnd_toEndOf="parent"
       
app:layout_constraintStart_toStartOf="parent" />

</
androidx.constraintlayout.widget.ConstraintLayout>

 

 

 

MainActivity Java Page :-

 

package com.niranjan.youtuberegisterlogin;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.google.firebase.auth.FirebaseAuth;

public class MainActivity extends AppCompatActivity {

   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_main);
        Button logout =findViewById(R.id.
logoutBtn);
        logout.setOnClickListener(
new View.OnClickListener() {
           
@Override
           
public void onClick(View v) {
                FirebaseAuth.getInstance().signOut();
                startActivity(
new Intent(getApplicationContext(),Login.class));
                finish();
            }
        });
    }
}

No comments:

Post a Comment

Activity Navigation One Activity to another Activity

Main Activity :-   <? xml version ="1.0" encoding ="utf-8" ?> < RelativeLayout xmlns: android ="http://sch...