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();
            }
        });
    }
}

Comments

Popular posts from this blog

Gride View in Firebase

Register in kotlin

Check Permission in Android Studio