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.