‫-: Jadi setelah memperbarui, mari sekarang izinkan pengguna saat ini
‫untuk menghapus akunnya pada dasarnya.
‫Sekarang ketika pengguna memutuskan untuk menghapus
‫akunnya, kami sebenarnya tidak menghapus dokumen itu dari database.
‫Tapi malah sebenarnya kita hanya menyetel akun menjadi tidak aktif.
‫Sehingga pengguna mungkin di beberapa titik
‫di masa depan mengaktifkan kembali akun dan juga agar kami
‫pada dasarnya masih dapat mengakses akun di
‫masa depan, bahkan jika secara resmi, katakanlah itu telah dihapus.
‫Oke?
‫Jadi untuk menerapkan ini, pertama-tama
‫kita perlu membuat properti baru di skema kita.
‫Jadi, mari kita pergi
‫ke sana.
‫Dan sekarang kami ingin
‫memiliki bidang yang disebut aktif.
‫Oke.
‫Yang seharusnya bertipe
‫Boolean.
‫Oke, dan secara default itu
‫akan
‫menjadi kenyataan.
‫Jadi setiap pengguna yang
‫dibuat baru tentu saja merupakan
‫pengguna aktif dan Boolean disetel ke true.
‫Juga, kami tidak ingin menampilkan ini di output, oke.
‫Karena pada dasarnya kami
‫ingin menyembunyikan detail implementasi ini dari pengguna.
‫Oke?
‫Jadi kami tidak ingin ada yang
‫tahu bahwa bendera ini, jadi bendera aktif ini ada di sini, oke.
‫Jadi kita katakan pilih, dan setel ke false, oke.
‫Jadi,
‫untuk menghapus pengguna sekarang, yang
‫perlu kita lakukan pada dasarnya
‫adalah menyetel flag aktif itu ke false.
‫Oke.
‫Jadi mari kita buat fungsi itu di
‫sini, ekspor. deleteMe, jadi
‫itu updateMe dan
‫sekarang deleteMe dan jadi
‫kita
‫sudah tahu bahwa kita menggunakan catchAsync di sini, bukan?
‫Dan kemudian Async karena pada
‫dasarnya kita sudah tahu bahwa kita akan memperbarui pengguna.
‫Jadi permintaan merespon
‫selanjutnya.
‫Jadi,
‫tunggu Pengguna. temukan dengan ID dan
‫perbarui.
‫Oke, dan sekali lagi, tentu
‫saja hanya ada yang berfungsi untuk pengguna
‫yang masuk dan ID pengguna disimpan dengan nyaman sesuai permintaan. pengguna. Indo.
‫dan data yang ingin kita perbarui
‫cukup aktif
‫dan setel ke false.
‫Baiklah.
‫Sekarang mengirim kembali tanggapan juga cukup mudah.
‫Kami menggunakan kode
‫204 untuk dihapus yang kemudian akan membuatnya sehingga sebenarnya di Postman
‫kami bahkan tidak melihat respons ini, oke.
‫Tapi kami tetap mengirimkannya bersama
‫dengan permintaan karena itu selalu merupakan praktik terbaik.
‫Jadi, itu masih sukses dan kemudian ingat kami
‫tidak mengirim data apa pun.
‫Jadi, cukup atur ke no.
‫Baiklah, dan sekarang tentu saja tambahkan juga ke
‫semua rute di sini.
‫Jadi itu cukup mirip.
‫Jadi deleteMe lalu di sini deleteMe juga dan
‫sekarang sebenarnya kami menggunakan
‫metode delete http.
‫Oke, dan sekali
‫lagi, kami tidak akan benar-benar menghapus pengguna dari database.
‫Tetapi selama pengguna tidak lagi dapat diakses di mana saja maka masih
‫boleh menggunakan metode http ini di sini.
‫Baiklah, jadi mari kita coba ini sekarang.
‫Oke, meskipun kita belum 100% siap
‫tapi mari kita coba sekarang.
‫Baiklah, jadi, deleteMe dan itu
‫adalah rute yang dilindungi dan jadi
‫kita harus masuk dan jadi mari
‫buat
‫header otorisasi kita,
‫Token Pembawa dan
‫tentu saja yang ini dan itu sebenarnya.
‫Kami tidak perlu melewatkan data apa pun di badan.
‫Kami tidak perlu meneruskan data apa pun di URL.
‫Baiklah, karena sekali lagi, satu-satunya data yang diperlukan
‫adalah ID pengguna saat ini dan
‫yang tidak dikodekan di dalam token web kita yang berdekatan.
‫Oke?
‫Jadi yang juga perlu kita lakukan adalah menghapus dan ya ini
‫seharusnya berfungsi sekarang.
‫Jadi sebelum kita melakukannya,
‫mari kita dapatkan daftar semua pengguna.
‫Baiklah dan yang kita hapus sekarang adalah
‫yang terakhir ini.
‫Jadi yang ini baru saja kita buat di kuliah terakhir.
‫Oke, dan kami
‫bekerja dengan yang ini karena ini adalah yang terakhir
‫yang masuk dan jadi token ini di sini
‫yang sekarang disimpan dalam variabel token kami.
‫Oke, jadi saat kita menghapus
‫pengguna, itu akan didasarkan pada ID yang berasal dari token ini.
‫Jadi mari kita coba sekarang.
‫Dan memang kita mendapatkan 204 kita.
‫Dan sekarang yang saya minati
‫adalah untuk melihat apakah properti pilih di sini telah berubah.
‫Dan itu benar-benar terlihat persis sama di sini.
‫Dan itu karena kami
‫tidak membocorkan bidang pilih kepada pengguna.
‫Jadi kita benar-benar perlu melihatnya di sini.
‫Oke dan memang kita sudah aktif di sini disetel ke false.
‫Oke, jadi itu yang ingin saya katakan sebelumnya.
‫Jadi kami tidak membocorkan bidang aktif ke
‫pengguna, bukan bidang pilih.
‫Jadi aktif hanya terlihat bagi kami di sini
‫di kompas tetapi tidak untuk pengguna.
‫Sekarang sebagai langkah terakhir, kami tentu
‫saja tidak ingin menampilkan pengguna yang tidak aktif
‫di output ini, kan.
‫Dan bagaimana menurut Anda kita bisa menerapkan ini?
‫Yah kita akan menggunakan sesuatu yang jauh dari yang
‫kita bicarakan seperti dua atau tiga bagian
‫yang lalu yaitu query middleware, oke.
‫Jadi query middleware sangat cocok untuk ini karena
‫sekarang kita pada dasarnya dapat menambahkan satu
‫langkah sebelum query lain yang kita lakukan di
‫suatu tempat di aplikasi kita.
‫Jadi mari kita pergi ke model pengguna kami di
‫sini dan menambahkan middleware itu di sini.
‫Jadi userSchema. pra, jadi sesuatu yang akan terjadi sebelum kueri dan
‫kueri itu akan ditemukan.
‫Oke, jadi inilah yang membuat kueri ini menjadi middleware.
‫Kemudian fungsi reguler karena ingat bahwa
‫jika tidak, kami tidak memiliki akses ke perselisihan
‫atau setidaknya itu tidak akan
‫memiliki nilai yang
‫kami harapkan.
‫Dan ingat bahwa di sini kita sebenarnya menggunakan ekspresi reguler sebelumnya
‫pada dasarnya untuk mengatakan bahwa
‫kita ingin fungsi middleware ini diterapkan ke
‫setiap kueri yang dimulai dengan find.
‫Jadi tidak hanya menemukan tetapi juga hal-hal seperti
‫temukan dan perbarui, temukan dan hapus, dan semua pertanyaan seperti itu.
‫Oke, jadi kami menggunakan ekspresi reguler untuk
‫mencari kata atau string yang dimulai dengan find.
‫Jadi itulah yang dilakukan simbol ini di sini.
‫Dan kemudian akhiri ekspresi reguler.
‫Jadi yang sangat sederhana.
‫Ini adalah salah satu yang bahkan saya dapat
‫menulis tanpa pergi ke Google terlebih dahulu dan
‫mencoba menemukannya di sana.
‫Oke, jadi ingat ini adalah
‫middleware kueri dan oleh karena itu ini menunjuk
‫ke kueri saat ini.
‫Oke, jadi mari kita cepat kembali ke
‫sini untuk melihat cara kerjanya.
‫Jadi kami
‫memiliki semua pengguna di sini dan di sini tentu saja kami memiliki kueri pencarian.
‫Dan sekarang sebelum kueri
‫itu benar-benar dieksekusi, kami ingin menambahkan sesuatu ke dalamnya.
‫Artinya, kami hanya ingin menemukan dokumen yang
‫properti aktifnya disetel ke true.
‫Baiklah, jadi itu mudah.
‫Ini dia.
‫Dan
‫jadi ini. temukan dan tentu saja objek filter kami hanya dokumen
‫dengan set aktif
‫ke true.
‫Dan itu saja.
‫Memanggil middleware berikutnya dan selesai.
‫Oke, jadi jika kita sekarang melakukan kueri
‫yang sama maka yang terakhir ini seharusnya tidak lagi muncul karena lagi-lagi aktif disetel
‫ke false.
‫Jadi itu tidak akan cocok dengan kueri
‫yang baru saja kita tulis.
‫Oke, sekarang kami tidak mendapatkan pengguna di
‫sini dan saya rasa itu karena yang lain mereka tidak
‫secara eksplisit mengatur properti aktif
‫ke true.
‫Jadi mari kita lakukan apa yang sebenarnya kita lakukan di bagian lain
‫di mana kita mengatakan bahwa active tidak boleh salah.
‫Oke, jadi kita menggunakan
‫tidak sama dengan operator dan itu
‫tentu saja harus di objek itu sendiri.
‫Jadi tidak sama dengan palsu.
‫Oke, jadi itu sangat berbeda di sini dalam kasus ini.
‫Baiklah, jadi semua dokumen di
‫mana active tidak sama dengan false sekarang akan muncul
‫dan dua lainnya sekarang harus kembali.
‫Dan memang di sinilah mereka.
‫Oke dan jadi ini adalah bagaimana kami pada
‫dasarnya menghapus pengguna kami sementara secara efektif tidak menghapusnya dari database.
‫Oke, jadi kami tidak menghapus dokumen, kami
‫hanya menandainya sebagai tidak aktif.
‫Oke, mari kita cepat menyimpan ini di sini.
‫Hapus pengguna saat
‫ini.
‫Hebat dan dengan ini kami benar-benar
‫menyelesaikan bagian otentikasi dan otorisasi dari bagian
‫ini.
‫Jadi segala sesuatu yang terkait dengan topik
‫ini dan juga kepada pengguna seperti memperbarui dan menghapus pengguna.
‫Itu juga semacam bagian dari otentikasi
‫dan otorisasi.
‫Sekarang di sisa bagian ini,
‫kita akan berbicara tentang keamanan karena tentu
‫saja itu juga terkait
‫dengan otentikasi.
‫Oke, jadi kita akan berbicara
‫tentang beberapa praktik terbaik dan kemudian juga
‫menerapkan beberapa di antaranya ke dalam proyek kita.