﻿1
00:00:01,290 --> 00:00:03,730
‫Instruktur: Baiklah, jadi sekarang mari kita buat

2
00:00:03,730 --> 00:00:06,670
‫pengguna baru itu, berdasarkan model yang baru saja

3
00:00:06,670 --> 00:00:09,093
‫kita terapkan di video terakhir.

4
00:00:10,630 --> 00:00:14,180
‫Jadi, kami akan melakukan sebagian besar hal yang

5
00:00:14,180 --> 00:00:17,350
‫berhubungan dengan pengguna seperti membuat pengguna baru,

6
00:00:17,350 --> 00:00:20,933
‫memasukkan pengguna, atau memperbarui kata sandi di pengontrol otentikasi.

7
00:00:22,190 --> 00:00:25,800
‫Jadi semua hal yang benar-benar terkait dengan otentikasi, tidak

8
00:00:25,800 --> 00:00:28,550
‫akan berada di pengontrol pengguna yang

9
00:00:28,550 --> 00:00:30,250
‫sebenarnya kita buat

10
00:00:30,250 --> 00:00:33,313
‫sebelumnya, tetapi kita akan membuat pengontrol otentikasi.

11
00:00:35,070 --> 00:00:36,990
‫Jadi semua fungsi yang terkait

12
00:00:36,990 --> 00:00:38,943
‫dengan otentikasi akan masuk ke sini.

13
00:00:41,860 --> 00:00:44,300
‫Dan ini akan sedikit lebih masuk akal nanti,

14
00:00:44,300 --> 00:00:46,530
‫saat kita mulai menggunakan semua fungsi yang akan

15
00:00:46,530 --> 00:00:48,103
‫saya masukkan di sini.

16
00:00:49,500 --> 00:00:51,560
‫Dan sekarang, hal pertama

17
00:00:51,560 --> 00:00:53,983
‫yang perlu kita lakukan, adalah mengimpor

18
00:00:57,870 --> 00:01:00,610
‫pengguna kita, jadi model pengguna kita tentu

19
00:01:00,610 --> 00:01:05,610
‫saja, dan itu naik satu tingkat, kemudian harus dalam model, dan kemudian

20
00:01:07,250 --> 00:01:08,577
‫model pengguna.

21
00:01:09,450 --> 00:01:10,283
‫Baiklah.

22
00:01:12,490 --> 00:01:16,500
‫Jadi, mari buat dan ekspor pengontrol pertama kita.

23
00:01:16,500 --> 00:01:18,347
‫Dan saya akan menyebut ini sebagai pendaftaran.

24
00:01:20,020 --> 00:01:22,990
‫Jadi Anda lihat bahwa saya tidak menyebutnya buat

25
00:01:22,990 --> 00:01:25,060
‫pengguna, seperti yang saya

26
00:01:25,060 --> 00:01:27,300
‫lakukan di pengontrol tur, tetapi sebenarnya

27
00:01:27,300 --> 00:01:29,700
‫saya menyebutnya mendaftar karena itulah nama yang

28
00:01:29,700 --> 00:01:31,913
‫memiliki sedikit arti dalam konteks autentikasi.

29
00:01:33,360 --> 00:01:36,510
‫Jadi ini akan menjadi fungsi async tentunya, karena

30
00:01:36,510 --> 00:01:38,973
‫kita akan melakukan beberapa operasi database.

31
00:01:42,190 --> 00:01:44,913
‫Kemudian request, respond, dan next

32
00:01:46,000 --> 00:01:49,650
‫seperti biasa, dan di sinilah kita membuat pengguna baru.

33
00:01:49,650 --> 00:01:52,573
‫Dan itu sangat mirip dengan apa yang kami lakukan sebelumnya.

34
00:01:53,460 --> 00:01:55,590
‫Jadi kali ini namanya newUser,

35
00:01:55,590 --> 00:01:57,070
‫lalu ingat

36
00:01:57,070 --> 00:02:00,090
‫bagaimana kita membuat dokumen baru berdasarkan model.

37
00:02:00,090 --> 00:02:02,210
‫Jadi kita menggunakan nama model

38
00:02:02,210 --> 00:02:04,610
‫tentunya, yang dalam hal ini adalah

39
00:02:04,610 --> 00:02:07,163
‫User, dan selanjutnya kita menggunakan metode create.

40
00:02:08,740 --> 00:02:10,020
‫Dan kemudian yang

41
00:02:10,020 --> 00:02:12,150
‫perlu kita lakukan adalah memasukkan objek

42
00:02:12,150 --> 00:02:14,353
‫dengan data dari mana pengguna harus dibuat.

43
00:02:15,380 --> 00:02:20,093
‫Dan seperti sebelumnya, data itu sebenarnya ada di req. tubuh.

44
00:02:21,070 --> 00:02:23,430
‫Dan semua ini akan mengembalikan

45
00:02:23,430 --> 00:02:25,920
‫Janji, jadi kita perlu menunggu itu, dan

46
00:02:25,920 --> 00:02:28,683
‫itulah alasan mengapa ini adalah fungsi asinkron.

47
00:02:30,150 --> 00:02:32,403
‫Dan saya melihat bahwa di sini, kita membutuhkan ekspor.

48
00:02:34,374 --> 00:02:36,740
‫Dan sekarang di langkah berikutnya,

49
00:02:36,740 --> 00:02:40,310
‫kami kemudian akan benar-benar mengirim Pengguna baru itu ke klien.

50
00:02:40,310 --> 00:02:45,283
‫Jadi res. status, yaitu 201 untuk dibuat, dan

51
00:02:46,720 --> 00:02:48,453
‫kemudian objek JSON kami.

52
00:02:52,160 --> 00:02:53,763
‫Jadi itu sukses lagi,

53
00:02:55,010 --> 00:02:58,250
‫dan kemudian properti data kami yang lagi disebut

54
00:02:58,250 --> 00:02:59,690
‫amplop di

55
00:02:59,690 --> 00:03:03,510
‫sini, jadi properti yang akan berisi data itu sendiri.

56
00:03:03,510 --> 00:03:05,770
‫Dan datanya sekarang disebut pengguna, sebelumnya

57
00:03:05,770 --> 00:03:07,723
‫disebut tur, jadi yang

58
00:03:09,105 --> 00:03:12,323
‫akan kami kirim ke sini adalah Pengguna baru.

59
00:03:13,890 --> 00:03:16,270
‫Simpan, dan sebelum kita mencobanya,

60
00:03:16,270 --> 00:03:18,810
‫ingatlah bahwa ini adalah fungsi async, jadi

61
00:03:18,810 --> 00:03:21,393
‫kita perlu memikirkan penanganan kesalahan di sini.

62
00:03:22,500 --> 00:03:24,470
‫Jadi apa yang perlu kita lakukan di sini?

63
00:03:24,470 --> 00:03:26,840
‫Nah, kita perlu membungkus seluruh fungsi yang

64
00:03:26,840 --> 00:03:29,770
‫baru saja kita buat ke dalam fungsi catchAsync yang

65
00:03:29,770 --> 00:03:31,570
‫kita buat di bagian terakhir.

66
00:03:32,810 --> 00:03:37,160
‫Jadi ingat bagaimana kita melakukannya di tourController, di mana semua

67
00:03:37,160 --> 00:03:39,640
‫fungsi yang asinkron dibungkus ke

68
00:03:39,640 --> 00:03:42,740
‫dalam fungsi catchAsync ini sehingga kita tidak

69
00:03:42,740 --> 00:03:43,900
‫perlu menulis

70
00:03:43,900 --> 00:03:47,640
‫blok try catch di setiap fungsi di sini.

71
00:03:47,640 --> 00:03:49,440
‫Ingat itu dari bagian terakhir?

72
00:03:50,410 --> 00:03:52,450
‫Jadi sebenarnya saya akan

73
00:03:52,450 --> 00:03:55,963
‫melanjutkan dan menyalin pernyataan persyaratan ini di sini.

74
00:04:00,190 --> 00:04:02,353
‫Jadi terkadang

75
00:04:03,220 --> 00:04:07,253
‫agak malas, tidak ingin menulis kode yang

76
00:04:08,360 --> 00:04:12,570
‫sama berulang-ulang, jadi catchAsync, dan kemudian kita

77
00:04:12,570 --> 00:04:16,303
‫harus menutupnya di sini pada akhirnya.

78
00:04:18,793 --> 00:04:20,220
‫Dan sekarang, yang

79
00:04:20,220 --> 00:04:22,393
‫perlu kita lakukan adalah benar-benar mengimplementasikan

80
00:04:22,393 --> 00:04:25,440
‫rute sehingga handler pendaftaran di sini dapat dipanggil.

81
00:04:25,440 --> 00:04:27,650
‫Jadi mari kita pergi ke

82
00:04:27,650 --> 00:04:31,400
‫userRoutes kita, yang sebenarnya sudah kita buat beberapa waktu sebelumnya, dan

83
00:04:31,400 --> 00:04:33,923
‫kita sudah memiliki beberapa rute di sini.

84
00:04:34,930 --> 00:04:37,653
‫Tapi sebenarnya saya akan membuat yang baru di sini sekarang.

85
00:04:43,990 --> 00:04:46,700
‫Dan seperti yang saya sebutkan di awal video ini,

86
00:04:46,700 --> 00:04:48,700
‫sumber daya pengguna sedikit berbeda dari

87
00:04:48,700 --> 00:04:50,290
‫semua sumber daya lainnya.

88
00:04:50,290 --> 00:04:52,730
‫Sekali lagi, karena itu benar-benar ada hubungannya

89
00:04:52,730 --> 00:04:54,680
‫dengan semua hal otentikasi.

90
00:04:54,680 --> 00:04:57,010
‫Jadi kami memiliki pengontrol yang berbeda

91
00:04:57,010 --> 00:05:00,410
‫untuk itu sehingga authController, nama fungsi juga memiliki beberapa

92
00:05:00,410 --> 00:05:02,110
‫nama yang berbeda,

93
00:05:02,110 --> 00:05:05,143
‫jadi kami sebenarnya juga memiliki rute khusus.

94
00:05:08,540 --> 00:05:11,770
‫Katakanlah router. post, lalu kita

95
00:05:11,770 --> 00:05:15,313
‫akan membuat rute untuk signup, jadi /signup, dan di

96
00:05:18,450 --> 00:05:20,270
‫sinilah kita akan menggunakan fungsi

97
00:05:20,270 --> 00:05:22,370
‫yang baru saja kita buat sebelumnya.

98
00:05:23,260 --> 00:05:24,800
‫Dan tentu saja sebelum

99
00:05:24,800 --> 00:05:27,963
‫kita bisa melakukannya, kita perlu meminta pengontrol otentikasi itu.

100
00:05:29,520 --> 00:05:32,040
‫Jadi mari kita gandakan baris ini

101
00:05:32,040 --> 00:05:37,040
‫di sini dan ganti pengguna di dua tempat, jadi di sini kita memiliki

102
00:05:37,440 --> 00:05:39,713
‫authController kita, dan sekarang mari kita

103
00:05:41,416 --> 00:05:42,716
‫gunakan itu. Daftar.

104
00:05:44,340 --> 00:05:45,173
‫Jadi seperti

105
00:05:47,050 --> 00:05:49,790
‫yang Anda lihat, pendaftaran benar-benar semacam titik akhir khusus.

106
00:05:49,790 --> 00:05:51,410
‫Itu tidak sesuai dengan arsitektur REST

107
00:05:51,410 --> 00:05:53,560
‫yang kita bicarakan sebelumnya, karena dalam hal

108
00:05:53,560 --> 00:05:55,070
‫ini tidak masuk akal.

109
00:05:55,070 --> 00:05:57,920
‫Jadi ingat bagaimana kami mengatakan bahwa dalam

110
00:05:57,920 --> 00:06:00,030
‫beberapa kasus khusus, kami

111
00:06:00,030 --> 00:06:02,690
‫tentu saja dapat membuat titik akhir lain

112
00:06:02,690 --> 00:06:07,690
‫yang tidak 100% sesuai dengan filosofi REST yang pada dasarnya diterapkan di sini.

113
00:06:07,980 --> 00:06:09,853
‫Jadi ini di sini

114
00:06:10,950 --> 00:06:15,040
‫tentu saja mengikuti 100% filosofi REST, di mana nama URL tidak

115
00:06:15,040 --> 00:06:17,790
‫ada hubungannya dengan tindakan yang sebenarnya dilakukan.

116
00:06:17,790 --> 00:06:19,950
‫Sementara di sini, tentu saja, sudah.

117
00:06:19,950 --> 00:06:22,080
‫Jadi nama rutenya signup karena

118
00:06:22,080 --> 00:06:23,960
‫kita sign up user.

119
00:06:23,960 --> 00:06:25,953
‫Dan juga di sini kami telah menerapkan semua

120
00:06:26,880 --> 00:06:28,760
‫warps HTTP yang berbeda ini tetapi

121
00:06:28,760 --> 00:06:30,940
‫di sini untuk mendaftar, kami hanya benar-benar membutuhkan POST.

122
00:06:31,810 --> 00:06:34,773
‫Jadi kami tidak dapat benar-benar mendapatkan data dari pendaftaran, atau

123
00:06:35,668 --> 00:06:38,520
‫kami tidak dapat menambal pendaftaran, jadi tidak memperbaruinya.

124
00:06:38,520 --> 00:06:41,810
‫Tidak masuk akal, jadi dalam hal ini yang ingin

125
00:06:41,810 --> 00:06:43,170
‫kita lakukan hanyalah

126
00:06:43,170 --> 00:06:45,140
‫memiliki rute untuk mendaftar, di

127
00:06:45,140 --> 00:06:47,160
‫mana kita hanya bisa POST data.

128
00:06:47,160 --> 00:06:48,953
‫Karena sekali lagi, masuk

129
00:06:50,170 --> 00:06:52,370
‫akal untuk benar-benar mengirim data ke

130
00:06:52,370 --> 00:06:54,740
‫rute ini, sehingga pengguna baru kemudian dibuat.

131
00:06:54,740 --> 00:06:57,820
‫Dan kita akan memiliki rute yang berbeda mirip

132
00:06:57,820 --> 00:07:00,240
‫dengan ini, seperti untuk login,

133
00:07:00,240 --> 00:07:03,820
‫atau untuk reset password, dan segala macam hal seperti itu.

134
00:07:03,820 --> 00:07:06,003
‫Dan kami juga akan

135
00:07:07,163 --> 00:07:10,150
‫menyimpan rute-rute ini di sini sehingga yang

136
00:07:10,150 --> 00:07:12,930
‫lebih dalam format REST, karena ada juga

137
00:07:12,930 --> 00:07:15,180
‫kemungkinan administrator sistem memperbarui atau

138
00:07:15,180 --> 00:07:18,370
‫menghapus atau mendapatkan semua pengguna berdasarkan ID mereka.

139
00:07:18,370 --> 00:07:21,423
‫Tapi kami akan mengurusnya nanti, untuk saat ini kami

140
00:07:22,620 --> 00:07:24,590
‫hanya ingin mengimplementasikan semua fungsi yang

141
00:07:24,590 --> 00:07:25,890
‫berhubungan dengan otentikasi.

142
00:07:25,890 --> 00:07:28,970
‫Jadi pada dasarnya fungsi-fungsi itu hanya relevan untuk

143
00:07:28,970 --> 00:07:30,620
‫pengguna itu sendiri.

144
00:07:30,620 --> 00:07:33,340
‫Jadi bukan admin yang akan mendaftarkan

145
00:07:33,340 --> 00:07:36,180
‫pengguna, atau bukan admin yang akan memasukkan

146
00:07:36,180 --> 00:07:38,730
‫pengguna, melainkan pengguna itu sendiri

147
00:07:38,730 --> 00:07:41,580
‫yang akan mendaftar sendiri, atau masuk sendiri.

148
00:07:41,580 --> 00:07:45,040
‫Oke, apakah itu masuk akal?

149
00:07:45,040 --> 00:07:46,613
‫Jadi kita harus memiliki semuanya

150
00:07:47,570 --> 00:07:50,160
‫sekarang, sehingga sekarang harus berfungsi saat kita membuat pengguna baru.

151
00:07:50,160 --> 00:07:53,830
‫Jadi ketika kita mendaftar pada dasarnya, untuk aplikasi kita.

152
00:07:53,830 --> 00:07:57,270
‫Jadi mari kita coba sekarang.

153
00:07:57,270 --> 00:07:58,683
‫Mari kita salin URL

154
00:08:01,020 --> 00:08:02,447
‫ini, pengguna, dan kemudian, daftar.

155
00:08:06,610 --> 00:08:08,393
‫Kemudian kita perlu menentukan Tubuh,

156
00:08:11,743 --> 00:08:13,710
‫kita katakan mentah, dan kemudian JSON.

157
00:08:14,640 --> 00:08:19,190
‫Oh dan juga, jangan lupa tentu saja, untuk mengatur yang

158
00:08:19,190 --> 00:08:20,720
‫ini ke POST.

159
00:08:20,720 --> 00:08:22,223
‫Jadi, data apa yang kita butuhkan di sini?

160
00:08:25,478 --> 00:08:27,830
‫Ingat, yang pertama adalah

161
00:08:27,830 --> 00:08:30,293
‫namanya, lalu emailnya, dan saya memasukkan

162
00:08:34,710 --> 00:08:39,710
‫nama saya sendiri di sini, lalu kata sandinya, jadi mari kita lakukan

163
00:08:46,211 --> 00:08:49,211
‫sesuatu di sini, itu tidak terlalu penting.

164
00:08:50,360 --> 00:08:52,560
‫Dan sekali lagi, kita akan berbicara tentang

165
00:08:54,850 --> 00:08:56,330
‫manajemen kata sandi

166
00:08:56,330 --> 00:08:58,383
‫nanti, dan benar di video berikutnya.

167
00:08:59,290 --> 00:09:01,140
‫Jadi sekarang yang ini di sini harus sama.

168
00:09:02,420 --> 00:09:04,960
‫Jadi lulus1234, hanya sebagai ujian.

169
00:09:04,960 --> 00:09:08,143
‫Dan foto ingat tidak diperlukan, jadi

170
00:09:09,287 --> 00:09:11,820
‫saya tidak melakukan itu.

171
00:09:11,820 --> 00:09:13,663
‫Jadi mari kita lihat sekarang.

172
00:09:15,040 --> 00:09:16,133
‫Dan sekarang kita mendapatkan kesalahan

173
00:09:17,990 --> 00:09:20,180
‫ini di sini, dan itu karena saya salah mengeja kata sandi di sini.

174
00:09:20,180 --> 00:09:22,853
‫Oke, jadi itu cara penulisan bahasa Jerman.

175
00:09:24,150 --> 00:09:27,373
‫Dan sekarang benar.

176
00:09:28,370 --> 00:09:29,890
‫Oke, dan memang, kami mendapatkan pengguna baru kami di sini.

177
00:09:29,890 --> 00:09:33,460
‫Sempurna.

178
00:09:33,460 --> 00:09:34,580
‫Sekarang katakanlah kita mencoba melakukan ini dengan GET.

179
00:09:34,580 --> 00:09:38,350
‫Apa yang akan kita dapatkan?

180
00:09:38,350 --> 00:09:39,800
‫Nah, "Rute

181
00:09:39,800 --> 00:09:42,300
‫ini belum ditentukan," karena kita

182
00:09:42,300 --> 00:09:44,350
‫sebenarnya sudah mendefinisikan rute

183
00:09:44,350 --> 00:09:47,620
‫ini di sini, jadi pada dasarnya bagian ini

184
00:09:47,620 --> 00:09:50,180
‫di sini dari rute, jadi izinkan

185
00:09:50,180 --> 00:09:52,910
‫saya menunjukkannya dengan cepat, jadi itu

186
00:09:52,910 --> 00:09:55,970
‫bukan di tourController, tapi di pengontrol pengguna.

187
00:09:55,970 --> 00:09:58,640
‫Jadi pada dasarnya kita memiliki getUser

188
00:09:58,640 --> 00:10:01,560
‫di sini, dan kemudian "Rute ini belum ditentukan. "Jadi itu yang kami dapatkan, tapi tentu

189
00:10:01,560 --> 00:10:04,174
‫saja kami

190
00:10:04,174 --> 00:10:06,024
‫tidak terlalu tertarik dengan itu.

191
00:10:07,160 --> 00:10:09,860
‫Dan sekarang mari kita lanjutkan dan simpan ini di sini, ke

192
00:10:11,460 --> 00:10:13,630
‫Postman sehingga kita dapat dengan mudah menggunakannya kembali.

193
00:10:13,630 --> 00:10:16,613
‫Jadi Daftar.

194
00:10:21,520 --> 00:10:22,513
‫Dan sekarang untuk

195
00:10:24,700 --> 00:10:26,600
‫mengonfirmasi dengan cepat, mari kita buka di

196
00:10:26,600 --> 00:10:29,420
‫Kompas di sini juga, dan lihat saja saat ini kita

197
00:10:29,420 --> 00:10:32,320
‫hanya memiliki tur, jadi mari kita pergi ke sini ke alam,

198
00:10:32,320 --> 00:10:36,433
‫coba muat ulang ini, dan itu mungkin di atas sini, dan seterusnya memang, sekarang kami mendapatkan

199
00:10:37,490 --> 00:10:38,890
‫koleksi pengguna kami di sini.

200
00:10:41,000 --> 00:10:44,820
‫Jadi mari kita buka itu, dan memang, sekarang kita mendapatkan

201
00:10:44,820 --> 00:10:47,120
‫dokumen pertama kita di sini.

202
00:10:47,120 --> 00:10:49,470
‫Jadi user yang baru saja kita buat.

203
00:10:49,470 --> 00:10:51,640
‫Sekarang di sini Anda dapat melihat

204
00:10:51,640 --> 00:10:54,430
‫kata sandi biasa, dan tentu saja itu tidak ideal.

205
00:10:54,430 --> 00:10:57,270
‫Dan tentu saja, itu tidak ideal,

206
00:10:57,270 --> 00:10:59,170
‫jadi dalam aplikasi web,

207
00:10:59,170 --> 00:11:03,090
‫kata sandi tidak boleh disimpan sebagai data biasa dalam database.

208
00:11:03,090 --> 00:11:05,983
‫Jadi ada banyak manajemen kata sandi yang perlu

209
00:11:07,060 --> 00:11:10,020
‫dilakukan di belakang layar, dan itulah yang akan kami

210
00:11:10,020 --> 00:11:11,750
‫lakukan di video berikutnya.

