Mengelola Pengguna di Firebase

Membuat pengguna

Anda membuat pengguna baru di project Firebase dengan memanggil metode createUserWithEmailAndPassword atau dengan membuat agar pengguna login untuk pertama kalinya menggunakan penyedia identitas gabungan, seperti Login dengan Google atau Login dengan Facebook.

Anda juga dapat membuat pengguna baru yang diautentikasi dengan sandi dari bagian Authentication pada Firebase console, di halaman Pengguna, atau dengan menggunakan Admin SDK.

Mengetahui pengguna yang sedang login

Cara yang direkomendasikan untuk mengetahui pengguna yang sedang login adalah dengan menetapkan observer pada objek Auth:

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
  } else {
    // No user is signed in.
  }
});

Dengan menggunakan observer, Anda memastikan bahwa objek Auth tidak dalam kondisi pertengahan—seperti inisialisasi—saat Anda mencari tahu pengguna saat ini. Saat Anda menggunakan signInWithRedirect, observer onAuthStateChanged menunggu sampai getRedirectResult selesai sebelum memicu.

Anda juga bisa mengetahui pengguna yang sedang login dengan menggunakan properti currentUser. Jika tidak ada pengguna yang login, currentUser akan bernilai null.

var user = firebase.auth().currentUser;

if (user) {
  // User is signed in.
} else {
  // No user is signed in.
}

Memperoleh profil pengguna

Untuk mendapatkan informasi profil pengguna, gunakan properti dari instance User. Contoh:

var user = firebase.auth().currentUser;
var name, email, photoUrl, uid, emailVerified;

if (user != null) {
  name = user.displayName;
  email = user.email;
  photoUrl = user.photoURL;
  emailVerified = user.emailVerified;
  uid = user.uid;  // The user's ID, unique to the Firebase project. Do NOT use
                   // this value to authenticate with your backend server, if
                   // you have one. Use User.getToken() instead.
}

Memperoleh informasi profil khusus penyedia pengguna

Untuk mendapatkan informasi profil yang diambil dari penyedia login yang ditautkan ke pengguna, gunakan properti providerData. Contoh:

var user = firebase.auth().currentUser;

if (user != null) {
  user.providerData.forEach(function (profile) {
    console.log("Sign-in provider: " + profile.providerId);
    console.log("  Provider-specific UID: " + profile.uid);
    console.log("  Name: " + profile.displayName);
    console.log("  Email: " + profile.email);
    console.log("  Photo URL: " + profile.photoURL);
  });
}

Mengupdate profil pengguna

Anda dapat memperbarui informasi profil dasar pengguna—nama tampilan pengguna dan URL foto profil—dengan metode updateProfile. Contoh:

var user = firebase.auth().currentUser;

user.updateProfile({
  displayName: "Jane Q. User",
  photoURL: "https://example.com/jane-q-user/profile.jpg"
}).then(function() {
  // Update successful.
}).catch(function(error) {
  // An error happened.
});

Menyetel alamat email pengguna

Anda dapat menyetel alamat email pengguna dengan metode updateEmail. Contoh:

var user = firebase.auth().currentUser;

user.updateEmail("user@example.com").then(function() {
  // Update successful.
}).catch(function(error) {
  // An error happened.
});

Mengirim email verifikasi kepada pengguna

Anda dapat mengirim email verifikasi alamat ke pengguna dengan metode sendEmailVerification. Contoh:

var user = firebase.auth().currentUser;

user.sendEmailVerification().then(function() {
  // Email sent.
}).catch(function(error) {
  // An error happened.
});

Anda dapat menyesuaikan template email yang digunakan di bagian Authentication dari Firebase console, di halaman Template Email. Lihat Template Email di Pusat Bantuan Firebase.

Anda juga dapat meneruskan status melalui continue URL untuk mengalihkannya kembali ke aplikasi tersebut ketika mengirim email verifikasi.

Selain itu, Anda dapat melokalkan email verifikasi dengan memperbarui kode bahasa pada instance Auth sebelum mengirim email. Contoh:

firebase.auth().languageCode = 'fr';
// To apply the default browser preference instead of explicitly setting it.
// firebase.auth().useDeviceLanguage();

Menyetel sandi pengguna

Anda dapat menyetel sandi pengguna dengan metode updatePassword. Contoh:

var user = firebase.auth().currentUser;
var newPassword = getASecureRandomPassword();

user.updatePassword(newPassword).then(function() {
  // Update successful.
}).catch(function(error) {
  // An error happened.
});

Mengirim email setel ulang sandi

Anda dapat mengirim email setel ulang kata sandi ke pengguna dengan metode sendPasswordResetEmail. Contoh:

var auth = firebase.auth();
var emailAddress = "user@example.com";

auth.sendPasswordResetEmail(emailAddress).then(function() {
  // Email sent.
}).catch(function(error) {
  // An error happened.
});

Anda dapat menyesuaikan template email yang digunakan di bagian Authentication dari Firebase console, di halaman Template Email. Lihat Template Email di Pusat Bantuan Firebase.

Anda juga bisa meneruskan status melalui continue URL untuk mengalihkan kembali ke aplikasi tersebut ketika mengirim email setel ulang sandi.

Selain itu, Anda dapat melokalkan email setel ulang sandi dengan memperbarui kode bahasa pada instance Auth sebelum mengirim email. Contoh:

firebase.auth().languageCode = 'de';
// To apply the default browser preference instead of explicitly setting it.
// firebase.auth().useDeviceLanguage();

Anda juga bisa mengirim email setel ulang sandi dari Firebase console.

Menghapus pengguna

Anda dapat menghapus akun pengguna dengan metode delete. Contoh:

var user = firebase.auth().currentUser;

user.delete().then(function() {
  // User deleted.
}).catch(function(error) {
  // An error happened.
});

Anda juga dapat menghapus pengguna dari bagian Authentication pada Firebase console di halaman Pengguna.

Mengautentikasi ulang pengguna

Beberapa tindakan yang rentan terhadap ancaman keamanan, seperti menghapus akun, menetapkan alamat email utama, dan mengubah sandi mengharuskan pengguna untuk pernah login baru-baru ini. Jika Anda melakukan salah satu tindakan ini dan pengguna login pada waktu yang sudah lama berlalu, tindakan akan gagal dengan error. Jika hal ini terjadi, lakukan autentikasi ulang pengguna dengan mendapatkan kredensial login baru dari pengguna tersebut dan meneruskan kredensial itu ke reauthenticateWithCredential. Contoh:

var user = firebase.auth().currentUser;
var credential;

// Prompt the user to re-provide their sign-in credentials

user.reauthenticateWithCredential(credential).then(function() {
  // User re-authenticated.
}).catch(function(error) {
  // An error happened.
});

Mengimpor akun pengguna

Anda dapat mengimpor akun pengguna dari file ke project Firebase menggunakan perintah auth:import Firebase CLI. Contoh:

firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14