Lewati ke konten utama

Pendahuluan

Kelola pengguna terdaftar — ambil profil, perbarui data, dan tangani status akun.

Informasi lebih lanjut tentang manajemen pengguna di panel admin OneEntry: https://doc.oneentry.cloud/docs/category/users


🎯 Apa yang dilakukan modul ini?

Modul Users mengelola pengguna yang sudah terautentikasi: ambil profil, perbarui data formulir dan objek state kustom, arsipkan atau hapus akun, kelola keranjang dan daftar keinginan per pengguna (atau tamu), dan daftarkan token FCM untuk notifikasi push.

Pendaftaran dan login tidak ada di sini — mereka berada di modul AuthProvider. Modul Users bekerja dengan pengguna yang telah diotorisasi oleh AuthProvider.

🚀 Memulai dengan Cepat

Inisialisasi modul dari defineOneEntry:


const { Users } = defineOneEntry(
"your-project-url", {
"token": "your-app-token"
}
);

Ambil pengguna saat ini dan perbarui objek state kustom mereka (mengasumsikan sesi terautentikasi — lihat AuthProvider):

// Fetch the authorized user's profile and state.
const user = await Users.getUser("en_US");

console.log(user.id, user.identifier);

// Update the user, preserving existing state.
await Users.updateUser({
formIdentifier: user.formIdentifier,
formData: user.formData,
state: { ...user.state, orderCount: (user.state.orderCount || 0) + 1 },
});

✨ Konsep Kunci

Apa itu Pengguna?

Pengguna adalah akun terdaftar di aplikasi Anda:

  • Identifikasi - nilai login (email, telepon, atau nama pengguna)
  • Penyedia Auth - metode autentikasi yang digunakan (authProviderIdentifier)
  • Data Formulir - bidang profil yang ditentukan oleh formulir pendaftaran (formData)
  • Grup - array ID grup yang dimiliki pengguna
  • Objek State - data aplikasi kustom

Struktur Pengguna

Setiap pengguna memiliki struktur ini:

{
id: 8, // User ID
identifier: 'test@test.ru', // User identifier (email/login)
authProviderIdentifier: 'email', // Auth provider type
formIdentifier: 'reg', // Registration form identifier
formData: [ // User profile data
{ marker: 'name_reg', type: 'string', value: 'Ivan' },
{ marker: 'phone_reg', type: 'string', value: '+19258382556' },
],
groups: [1], // User groups for permissions
state: {}, // Custom application data
moduleFormConfigs: [], // Additional form configurations
}

Objek State

Anda dapat menyimpan data spesifik aplikasi apa pun di objek state per pengguna. Ketika Anda memperbarui pengguna, tambahkan data yang Anda butuhkan ke state; panggilan getUser() berikutnya akan mengembalikannya.

Kasus PenggunaanContoh StateDeskripsi
E-commerce{ orderCount: 5, totalSpent: 499.99 }Lacak riwayat pembelian
Konten{ articlesRead: 25, bookmarks: [1,2,3] }Lacak konsumsi konten
Permainan{ level: 15, score: 9500, achievements: [...] }Lacak kemajuan permainan
SaaS{ plan: 'premium', usage: 75 }Lacak data langganan

Selalu pertahankan state yang ada saat memperbarui — sebar data agar Anda tidak menghapus bidang lain:

// ❌ Bad - overwrites the entire state
const state = { orderCount: 1 };

// ✅ Good - preserve existing state
const state = {
...user.state,
orderCount: (user.state.orderCount || 0) + 1,
};

📋 Apa yang Perlu Anda Ketahui

Otorisasi diperlukan

Setiap metode pengguna memerlukan sesi yang terotorisasi — autentikasi pengguna terlebih dahulu melalui modul AuthProvider. Metode keranjang dan daftar keinginan juga berfungsi untuk tamu (lihat bagian Keranjang & Daftar Keinginan di bawah).

Data formulir pengguna

Data profil pengguna mengikuti formulir yang dikonfigurasi di panel admin OneEntry:

  • Setiap pengguna memiliki formIdentifier yang merujuk pada formulir pendaftaran yang digunakan.
  • Bidang profil berada di array formData sebagai entri marker / type / value.
  • Jenis bidang yang didukung meliputi: string, integer, float, date, dateTime, time, text, textWithHeader, image, groupOfImages, file, radioButton, list, entity, timeInterval.

Pedoman objek state

  • Simpan data spesifik aplikasi saja; jangan masukkan kata sandi, token, atau data kartu ke dalam state.
  • Jaga agar tetap terorganisir dengan objek bersarang dan penamaan yang konsisten.
  • Perbarui dengan menyebarkan state yang ada (lihat di atas) — jangan pernah menimpa secara buta.

Data notifikasi

Saat memperbarui pengguna, Anda dapat mengirim objek notificationData dengan saluran pengiriman:

  • email - alamat email untuk notifikasi
  • phonePush - array nomor telepon untuk notifikasi push
  • phoneSMS - nomor telepon untuk notifikasi SMS

Paginasi

Untuk daftar keranjang/daftar keinginan dan koleksi lainnya, halaman hasil daripada memuat semuanya sekaligus.


📊 Tabel Referensi Cepat

MetodeDeskripsiKasus Penggunaan
getUser() 🔐Ambil data pengguna yang terotorisasiAmbil profil pengguna saat ini
updateUser() 🔐Perbarui informasi penggunaPembaruan profil, perubahan state
archiveUser() 🔐Arsipkan akun penggunaHapus lembut akun pengguna
deleteUser() 🔐Hapus pengguna secara permanenHapus keras akun pengguna
addFCMToken() 🔐Tambahkan token FCM untuk notifikasi pushAktifkan notifikasi push
deleteFCMToken() 🔐Hapus token FCMNonaktifkan notifikasi push
getCart()Ambil keranjang pengguna atau tamuBaca keranjang saat ini
setCart()Ganti seluruh keranjangSinkronkan keranjang sisi klien
addCartItem()Tambahkan item ke keranjangAksi "Tambahkan ke keranjang"
removeCartItem()Hapus item dari keranjangAksi "Hapus dari keranjang"
getWishlist()Ambil daftar keinginan pengguna atau tamuBaca daftar keinginan saat ini
setWishlist()Ganti seluruh daftar keinginanSinkronkan daftar keinginan sisi klien
addWishlistItem()Tambahkan item ke daftar keinginanAksi "Tambahkan ke daftar keinginan"
removeWishlistItem()Hapus item dari daftar keinginanAksi "Hapus dari daftar keinginan"

🔐 menandakan metode yang memerlukan sesi pengguna yang terotorisasi (AuthProvider). Metode keranjang dan daftar keinginan juga berfungsi untuk tamu.

🛒 Keranjang & Daftar Keinginan

Metode keranjang dan daftar keinginan berfungsi untuk pengguna yang terotorisasi dan tamu. Untuk tamu, SDK mengirim header x-guest-id sehingga keranjang/daftar keinginan terikat pada pengunjung anonim yang tepat - lihat Mode tamu. Setelah tamu masuk, metode yang sama beroperasi pada data pengguna yang terautentikasi.

Metode ini juga memberi umpan pada blok personalisasi (seperti komplemen keranjang, keranjang serupa dan daftar keinginan serupa) dan dapat digabungkan dengan pelacakan aktivitas pengguna.

❓ Pertanyaan Umum (FAQ)

Apa itu objek state pengguna dan bagaimana cara menggunakannya?

Objek state adalah penyimpanan JSON yang fleksibel untuk data pengguna spesifik aplikasi. Gunakan untuk melacak metrik kustom seperti jumlah pesanan, preferensi, atau kemajuan. Selalu sebar state yang ada saat memperbarui untuk menghindari penimpaan data lain.


Bagaimana cara memperbarui informasi profil pengguna?

Gunakan updateUser() untuk memodifikasi bidang data formulir, pengaturan notifikasi, dan objek state. Autentikasi pengguna terlebih dahulu melalui modul AuthProvider.


Apa perbedaan antara archiveUser() dan deleteUser()?

archiveUser() adalah penghapusan lembut yang menandai pengguna untuk dihapus tetapi mempertahankan data. deleteUser() menghapus akun pengguna secara permanen. Gunakan pengarsipan kecuali Anda memerlukan penghapusan data secara lengkap.


Bagaimana cara menangani notifikasi push untuk pengguna?

Gunakan addFCMToken() untuk mendaftarkan token Firebase Cloud Messaging untuk pengguna, mengaktifkan notifikasi push ke perangkat mereka. Gunakan deleteFCMToken() saat mereka keluar atau menonaktifkan notifikasi.


Bagaimana cara mengambil data pengguna setelah pendaftaran?

Setelah pendaftaran dan autentikasi yang berhasil melalui AuthProvider, panggil getUser() untuk mengambil profil pengguna yang terautentikasi dan objek state kustom.


🎓 Praktik Terbaik

  • Autentikasi terlebih dahulu - setiap metode pengguna memerlukan sesi yang terotorisasi (lihat modul AuthProvider).
  • Pertahankan state yang ada - sebar data yang ada saat memperbarui state.
  • Jangan simpan data sensitif di state - jaga agar kata sandi, token, dan data kartu tidak ada di state.
  • Cache data pengguna - kurangi panggilan API untuk data yang sering diakses.

🔗 Dokumentasi Terkait