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 Penggunaan | Contoh State | Deskripsi |
|---|---|---|
| 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
formIdentifieryang merujuk pada formulir pendaftaran yang digunakan. - Bidang profil berada di array
formDatasebagai entrimarker/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
stateyang 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 notifikasiphonePush- array nomor telepon untuk notifikasi pushphoneSMS- nomor telepon untuk notifikasi SMS
Paginasi
Untuk daftar keranjang/daftar keinginan dan koleksi lainnya, halaman hasil daripada memuat semuanya sekaligus.
📊 Tabel Referensi Cepat
| Metode | Deskripsi | Kasus Penggunaan |
|---|---|---|
| getUser() 🔐 | Ambil data pengguna yang terotorisasi | Ambil profil pengguna saat ini |
| updateUser() 🔐 | Perbarui informasi pengguna | Pembaruan profil, perubahan state |
| archiveUser() 🔐 | Arsipkan akun pengguna | Hapus lembut akun pengguna |
| deleteUser() 🔐 | Hapus pengguna secara permanen | Hapus keras akun pengguna |
| addFCMToken() 🔐 | Tambahkan token FCM untuk notifikasi push | Aktifkan notifikasi push |
| deleteFCMToken() 🔐 | Hapus token FCM | Nonaktifkan notifikasi push |
| getCart() | Ambil keranjang pengguna atau tamu | Baca keranjang saat ini |
| setCart() | Ganti seluruh keranjang | Sinkronkan keranjang sisi klien |
| addCartItem() | Tambahkan item ke keranjang | Aksi "Tambahkan ke keranjang" |
| removeCartItem() | Hapus item dari keranjang | Aksi "Hapus dari keranjang" |
| getWishlist() | Ambil daftar keinginan pengguna atau tamu | Baca daftar keinginan saat ini |
| setWishlist() | Ganti seluruh daftar keinginan | Sinkronkan daftar keinginan sisi klien |
| addWishlistItem() | Tambahkan item ke daftar keinginan | Aksi "Tambahkan ke daftar keinginan" |
| removeWishlistItem() | Hapus item dari daftar keinginan | Aksi "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
- Modul AuthProvider - Diperlukan untuk autentikasi pengguna
- Panel Admin OneEntry - Pengguna - Dokumentasi resmi panel admin
- Modul Pesanan - Referensi pesanan pengguna untuk riwayat pesanan
- Modul Pembayaran - Referensi pembayaran pengguna untuk riwayat pembayaran