Sign Up & Login (Firebase Authentication)

Register Xml:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout 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"

    android:orientation="vertical"

    android:padding="24dp"

    tools:context=".RegisterActivity">

 

    <ImageView

        android:id="@+id/imageView"

        android:layout_width="200dp"

        android:layout_height="200dp"

        android:layout_gravity="center"

        android:layout_marginTop="25dp"

        android:src="@drawable/firebase_image"/>

 

    <LinearLayout

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:orientation="vertical"

        android:layout_gravity="center"

        android:layout_marginTop="25dp">

 

        <TextView

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:text="Register"

            android:textSize="30sp"

            android:textStyle="bold"

            android:textColor="@color/teal_700"

            android:gravity="center_horizontal"

            android:layout_marginVertical="16dp"/>

 

 

        <com.google.android.material.textfield.TextInputLayout

            android:layout_width="match_parent"

            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"

            android:layout_height="wrap_content">

 

            <com.google.android.material.textfield.TextInputEditText

                android:id="@+id/etRegEmail"

                android:layout_width="match_parent"

                android:layout_height="wrap_content"

                android:hint="Email"

                android:inputType="textEmailAddress"/>

        </com.google.android.material.textfield.TextInputLayout>

 

 

        <com.google.android.material.textfield.TextInputLayout

            android:layout_width="match_parent"

            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"

            android:layout_height="wrap_content"

            android:layout_marginTop="12dp">

 

            <com.google.android.material.textfield.TextInputEditText

                android:id="@+id/etRegPass"

                android:layout_width="match_parent"

                android:layout_height="wrap_content"

                android:hint="Password"

                android:inputType="textPassword"/>

        </com.google.android.material.textfield.TextInputLayout>

 

        <com.google.android.material.button.MaterialButton

            android:id="@+id/btnRegister"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:layout_marginTop="24dp"

            android:text="Register"/>

 

        <LinearLayout

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:layout_marginTop="15dp"

            android:gravity="center"

            android:orientation="horizontal">

 

            <TextView

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:text="Already registered"

                android:textSize="16sp"/>

 

            <TextView

                android:id="@+id/tvLoginHere"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_marginLeft="8dp"

                android:text="Login here"

                android:textColor="@color/teal_700"

                android:textStyle="bold"

                android:textSize="20sp"/>

 

        </LinearLayout>

 

    </LinearLayout>

 

</LinearLayout>


Register java:


public class RegisterActivity extends AppCompatActivity {

 

    TextInputEditText etRegEmail;

    TextInputEditText etRegPassword;

    TextView tvLoginHere;

    Button btnRegister;

 

    FirebaseAuth mAuth;

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_sign_up);

 

        etRegEmail = findViewById(R.id.etRegEmail);

        etRegPassword = findViewById(R.id.etRegPass);

        tvLoginHere = findViewById(R.id.tvLoginHere);

        btnRegister = findViewById(R.id.btnRegister);

 

        mAuth = FirebaseAuth.getInstance();

 

        btnRegister.setOnClickListener(view ->{

            createUser();

        });

 

        tvLoginHere.setOnClickListener(view ->{

            startActivity(new Intent(RegisterActivity.this, LoginActivity.class));

        });

    }

 

    private void createUser(){

        String email = etRegEmail.getText().toString();

        String password = etRegPassword.getText().toString();

 

        if (TextUtils.isEmpty(email)){

            etRegEmail.setError("Email cannot be empty");

            etRegEmail.requestFocus();

        }else if (TextUtils.isEmpty(password)){

            etRegPassword.setError("Password cannot be empty");

            etRegPassword.requestFocus();

        }else{

            mAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {

                @Override

                public void onComplete(@NonNull Task<AuthResult> task) {

                    if (task.isSuccessful()){

                        Toast.makeText(RegisterActivity.this, "User registered successfully", Toast.LENGTH_SHORT).show();

                        startActivity(new Intent(RegisterActivity.this, LoginActivity.class));

                    }else{

                        Toast.makeText(RegisterActivity.this, "Registration Error: " + task.getException().getMessage(), Toast.LENGTH_SHORT).show();

                    }

                }

            });

        }

    }

 

}


Login Xml:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout 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"

    android:orientation="vertical"

    android:padding="24dp"

    tools:context=".LoginActivity">

 

    <ImageView

        android:id="@+id/imageView"

        android:layout_width="200dp"

        android:layout_height="200dp"

        android:layout_gravity="center"

        android:layout_marginTop="25dp"

        android:src="@drawable/firebase_image"/>

 

    <LinearLayout

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:orientation="vertical"

        android:layout_gravity="center"

        android:layout_marginTop="25dp">

 

        <TextView

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:text="Login"

            android:textSize="30sp"

            android:textStyle="bold"

            android:textColor="@color/teal_700"

            android:gravity="center_horizontal"

            android:layout_marginVertical="16dp"/>

 

 

        <com.google.android.material.textfield.TextInputLayout

            android:layout_width="match_parent"

            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"

            android:layout_height="wrap_content">

 

            <com.google.android.material.textfield.TextInputEditText

                android:id="@+id/etLoginEmail"

                android:layout_width="match_parent"

                android:layout_height="wrap_content"

                android:hint="Email"

                android:inputType="textEmailAddress"/>

        </com.google.android.material.textfield.TextInputLayout>

 

 

        <com.google.android.material.textfield.TextInputLayout

            android:layout_width="match_parent"

            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"

            android:layout_height="wrap_content"

            android:layout_marginTop="12dp">

 

            <com.google.android.material.textfield.TextInputEditText

                android:id="@+id/etLoginPass"

                android:layout_width="match_parent"

                android:layout_height="wrap_content"

                android:hint="Password"

                android:inputType="textPassword"/>

        </com.google.android.material.textfield.TextInputLayout>

 

        <com.google.android.material.button.MaterialButton

            android:id="@+id/btnLogin"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:layout_marginTop="24dp"

            android:text="Login"/>

 

        <LinearLayout

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:layout_marginTop="15dp"

            android:gravity="center"

            android:orientation="horizontal">

 

            <TextView

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:text="Not registered yet"

                android:textSize="16sp"/>

 

            <TextView

                android:id="@+id/tvRegisterHere"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_marginLeft="8dp"

                android:text="Register here"

                android:textColor="@color/teal_700"

                android:textStyle="bold"

                android:textSize="20sp"/>

 

        </LinearLayout>

 

    </LinearLayout>

 

</LinearLayout>


login java:


public class LoginActivity extends AppCompatActivity {

 

    TextInputEditText etLoginEmail;

    TextInputEditText etLoginPassword;

    TextView tvRegisterHere;

    Button btnLogin;

 

    FirebaseAuth mAuth;

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_login);

 

        etLoginEmail = findViewById(R.id.etLoginEmail);

        etLoginPassword = findViewById(R.id.etLoginPass);

        tvRegisterHere = findViewById(R.id.tvRegisterHere);

        btnLogin = findViewById(R.id.btnLogin);

 

        mAuth = FirebaseAuth.getInstance();

 

        btnLogin.setOnClickListener(view -> {

            loginUser();

        });

        tvRegisterHere.setOnClickListener(view ->{

            startActivity(new Intent(LoginActivity.this, RegisterActivity.class));

        });

    }

 

    private void loginUser(){

        String email = etLoginEmail.getText().toString();

        String password = etLoginPassword.getText().toString();

 

        if (TextUtils.isEmpty(email)){

            etLoginEmail.setError("Email cannot be empty");

            etLoginEmail.requestFocus();

        }else if (TextUtils.isEmpty(password)){

            etLoginPassword.setError("Password cannot be empty");

            etLoginPassword.requestFocus();

        }else{

            mAuth.signInWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {

                @Override

                public void onComplete(@NonNull Task<AuthResult> task) {

                    if (task.isSuccessful()){

                        Toast.makeText(LoginActivity.this, "User logged in successfully", Toast.LENGTH_SHORT).show();

                        startActivity(new Intent(LoginActivity.this, MainActivity.class));

                    }else{

                        Toast.makeText(LoginActivity.this, "Log in Error: " + task.getException().getMessage(), Toast.LENGTH_SHORT).show();

                    }

                }

            });

        }

    }

 

}



Main 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=".MainActivity">

 

    <TextView

        android:id="@+id/textView"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="Welcome, You are logged in "

        android:textSize="30sp"

        android:textStyle="bold"

        app:layout_constraintBottom_toBottomOf="parent"

        app:layout_constraintEnd_toEndOf="parent"

        app:layout_constraintHorizontal_bias="0.5"

        app:layout_constraintStart_toStartOf="parent"

        app:layout_constraintTop_toTopOf="parent" />

 

    <Button

        android:id="@+id/btnLogout"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_marginTop="16dp"

        android:text="Logout"

        app:layout_constraintEnd_toEndOf="parent"

        app:layout_constraintHorizontal_bias="0.5"

        app:layout_constraintStart_toStartOf="parent"

        app:layout_constraintTop_toBottomOf="@+id/textView" />

 

</androidx.constraintlayout.widget.ConstraintLayout>



MAIn java;

public class MainActivity extends AppCompatActivity {

 

    Button btnLogOut;

    FirebaseAuth mAuth;

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

 

        btnLogOut = findViewById(R.id.btnLogout);

        mAuth = FirebaseAuth.getInstance();

 

        btnLogOut.setOnClickListener(view ->{

            mAuth.signOut();

            startActivity(new Intent(MainActivity.this, LoginActivity.class));

        });

 

    }

 

    @Override

    protected void onStart() {

        super.onStart();

        FirebaseUser user = mAuth.getCurrentUser();

        if (user == null){

            startActivity(new Intent(MainActivity.this, LoginActivity.class));

        }

    }

}

 

Comments

Popular posts from this blog

Even Function

Amazing Free tool - keyword research tool