Cara Mengganti Kata Sandi Email dengan Firebase Authentication


Assalamualaikum Warahmatullahi Wabarakatuh.

Pada tutorial sebelumnya kita telah belajar bagaimana cara membua sistem autentikasi Sign Up dan Sign In menggunakan alamat email dan kata sandi pada Firebase Authentication. Selanjutnya kita akan belajar cara mengganti password atau kata sandi dari Email pada user yang sudah terautentikasi.


Firebase menyediakan banyak sekali fitur untuk keperluan development aplikasi yang akan kita buat, khusunya pada autentikasi, pada postingan sebelumnya saya sudah membahas beberapa tutorial mengenai firebase Authentication, seperti login menggunakan akun Google, Twitter, Facebook dan juga Nomor Telepon, materinya bisa kalian lihat pada link dibawah ini.


Materi lainnya yang direkomendasikan:

Disini kita akan melanjutnya project yang telah dibuat pada tutorial sebelumnya, jadi saya harap kalian sudah membuatnya, jika belum silakan untuk mengikutinya terlebih dahulu.

Cara Mengganti Kata Sandi Email dengan Firebase Authentication

1) Pertama kita akan menembahkan beberapa menu pada MainActivity, seperti menu Ubah Password, Ubah Email dan Hapus Akun.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="16dp"
    android:gravity="center"
    android:orientation="vertical"
    tools:context="cianjur.developer.net.firebaseexample.MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Selamat Datang"
        android:textAlignment="center"
        android:textSize="18sp"
        android:textStyle="bold"
        tools:ignore="HardcodedText" />

    <Button
        android:id="@+id/changePass"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Ubah Password"
        tools:ignore="HardcodedText" />

    <Button
        android:id="@+id/changeEmail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Ubah Email"
        tools:ignore="HardcodedText" />

    <Button
        android:id="@+id/deleteAccount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="hapus Akun"
        tools:ignore="HardcodedText" />

    <Button
        android:id="@+id/logout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Logout"
        tools:ignore="HardcodedText" />

</LinearLayout>
View:


2) Buka class MainActivity.java. disini kita Inisialisasi semua Button tersebut dan menambahkan Intent untuk berpindah Activity.
public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private Button ChangePass, ChangeEmail, DeleteAccount, Logout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ChangePass = findViewById(R.id.changePass);
        ChangePass.setOnClickListener(this);
        ChangeEmail = findViewById(R.id.changeEmail);
        ChangeEmail.setOnClickListener(this);
        DeleteAccount = findViewById(R.id.deleteAccount);
        DeleteAccount.setOnClickListener(this);
        Logout = findViewById(R.id.logout);
        Logout.setOnClickListener(this);
    }
}

 @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.changePass:
                startActivity(new Intent(MainActivity.this, ChangePassActivity.class));
                break;

            case R.id.changeEmail:
                /*
                Akan Dibahas pada Tutorial Berikutnya
                startActivity(new Intent(MainActivity.this, ChangeEmailActivity.class));
                */
                break;

            case R.id.deleteAccount:
                //Akan Dibahas pada Tutorial Berikutnya
                break;

            case R.id.logout:
                auth.signOut();
                break;
        }
    }
3) Buat activity baru bernama ChangePassActivity, activity ini digunakan sabagai halaman untuk mengubah kata sandi email dari user yang telah login.
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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="cianjur.developer.net.firebaseexample.ChangePassActivity">

    <ImageView
        android:id="@+id/logo"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:layout_marginTop="32dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.07999998"
        app:srcCompat="@drawable/firebase_auth"
        tools:ignore="ContentDescription" />

    <android.support.design.widget.TextInputLayout
        android:id="@+id/passwordForm"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="32dp"
        android:layout_marginStart="32dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/logo">

        <android.support.design.widget.TextInputEditText
            android:id="@+id/changePassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Password Baru"
            tools:ignore="HardcodedText" />
    </android.support.design.widget.TextInputLayout>

    <Button
        android:id="@+id/change"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="32dp"
        android:layout_marginStart="32dp"
        android:layout_marginTop="8dp"
        android:text="Ubah Password"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/passwordForm"
        tools:ignore="HardcodedText" />

    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginTop="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/change"
        app:layout_constraintVertical_bias="0.13999999"
        tools:visibility="visible" />

</android.support.constraint.ConstraintLayout>
View:


4) Selanjutnya buka class ChangePassActivity.java. Untuk mengubah password, kita perlu menggunakan fungsi updatePassword() dari Firebase Authentication.
package cianjur.developer.net.firebaseexample;

import android.support.annotation.NonNull;
import android.support.design.widget.TextInputEditText;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.method.PasswordTransformationMethod;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

public class ChangePassActivity extends AppCompatActivity {

    //Deklarasi Variable
    private TextInputEditText myPassword;
    private Button ChangeButtton;
    private ProgressBar progressBar;
    private FirebaseUser user;
    private String getPassword;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_change_pass);

        //Inisialisasi Widget dan Membuat Objek dari FirebaeUser
        myPassword = findViewById(R.id.changePassword);
        ChangeButtton = findViewById(R.id.change);
        progressBar = findViewById(R.id.progressBar);
        progressBar.setVisibility(View.GONE);
        user = FirebaseAuth.getInstance().getCurrentUser();

        //Menyembunyikan / Hide Password
        myPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());

        ChangeButtton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                progressBar.setVisibility(View.VISIBLE);
                getPassword = myPassword.getText().toString().trim();

                //Melakukan Proses Update, dengan memasukan password beru
                user.updatePassword(getPassword)
                        .addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {

                                //Mengecek status keberhasilan saat proses update Password
                                if(task.isSuccessful()){
                                    Toast.makeText(ChangePassActivity.this, "Password Berhasil Diubah", Toast.LENGTH_SHORT).show();
                                    FirebaseAuth.getInstance().signOut();
                                    finish();
                                }else {
                                    Toast.makeText(ChangePassActivity.this, "Terjadi Kesalahan, Silakan Coba Lagi", Toast.LENGTH_SHORT).show();
                                    progressBar.setVisibility(View.GONE);
                                }
                            }
                        });
            }
        });
    }
}
Fungsi trim() digunakan untuk merapihkan teks jika ada spasi.

Demo:




Setelah kita membuat sistem untuk mengubah kata sandi, lalu bagaimana cara merubah email dari user tersebut, tutorialnya dapat kalian lihat disini.

Terimakasih atas kunjungannya, semoga tutorial yang saya berikan bisa bermanfaat untuk kalian semua, selebihnya, mohon maaf bila ada kesalahan.

Wassalamualaikum Warahmatullahi Wabarakatuh.

Wildan M Athoillah
Wildan M Athoillah Blogger dan spesialis pembuat aplikasi android.