﻿1
00:00:01,190 --> 00:00:03,320
‫Instruktur: Dalam video ini dan video

2
00:00:03,320 --> 00:00:05,380
‫berikutnya, kita akan menerapkan

3
00:00:05,380 --> 00:00:08,670
‫fungsionalitas pengaturan ulang kata sandi yang mudah digunakan, yang

4
00:00:08,670 --> 00:00:11,253
‫merupakan standar di sebagian besar aplikasi web.

5
00:00:12,750 --> 00:00:15,390
‫Dan mungkin, Anda telah menggunakan pengaturan ulang kata sandi

6
00:00:15,390 --> 00:00:17,720
‫di beberapa situs web sebelumnya dan biasanya,

7
00:00:17,720 --> 00:00:19,140
‫itu berfungsi seperti ini.

8
00:00:19,140 --> 00:00:21,280
‫Anda hanya perlu memberikan alamat email

9
00:00:21,280 --> 00:00:23,490
‫Anda dan Anda kemudian akan mendapatkan email dengan

10
00:00:23,490 --> 00:00:25,950
‫tautan di mana Anda dapat mengklik dan kemudian itu

11
00:00:25,950 --> 00:00:29,410
‫akan membawa Anda ke halaman di mana Anda dapat memasukkan kata sandi baru.

12
00:00:29,410 --> 00:00:32,270
‫Ini adalah prosedur yang sangat standar dan ini

13
00:00:32,270 --> 00:00:34,160
‫juga bagaimana kami akan menerapkannya di

14
00:00:34,160 --> 00:00:35,890
‫sini dalam aplikasi ini.

15
00:00:35,890 --> 00:00:37,700
‫Pada dasarnya ada dua langkah.

16
00:00:37,700 --> 00:00:40,930
‫Untuk yang pertama adalah pengguna mengirim permintaan

17
00:00:40,930 --> 00:00:45,260
‫posting ke rute lupa kata sandi, hanya dengan alamat email ini.

18
00:00:45,260 --> 00:00:47,510
‫Ini kemudian akan membuat token

19
00:00:47,510 --> 00:00:50,830
‫reset dan mengirimkannya ke alamat email yang diberikan.

20
00:00:50,830 --> 00:00:54,930
‫Hanya token acak sederhana, bukan Token Web JSON.

21
00:00:54,930 --> 00:00:56,610
‫Itu perbedaan di sini.

22
00:00:56,610 --> 00:00:59,507
‫Kemudian di bagian kedua, yang akan menjadi

23
00:00:59,507 --> 00:01:02,800
‫video berikutnya, pengguna kemudian mengirimkan token itu dari

24
00:01:02,800 --> 00:01:06,553
‫emailnya bersama dengan kata sandi baru untuk memperbarui kata sandinya.

25
00:01:08,040 --> 00:01:13,040
‫Pada dasarnya, kita akan mengekspor kata sandi dot lupa yang merupakan

26
00:01:14,810 --> 00:01:16,173
‫langkah pertama.

27
00:01:17,930 --> 00:01:22,930
‫Jadi permintaan, tanggapan, dan selanjutnya sebagai langkah kedua, kami

28
00:01:25,560 --> 00:01:28,703
‫telah mengatur ulang kata sandi.

29
00:01:33,480 --> 00:01:37,260
‫Kalau begitu mari kita lanjutkan dan implementasikan kedua rute ini.

30
00:01:37,260 --> 00:01:40,520
‫Oke, dan itu, tentu saja, di router pengguna atau

31
00:01:40,520 --> 00:01:42,053
‫file rute pengguna mereka.

32
00:01:43,190 --> 00:01:45,640
‫Mari kita letakkan juga di sini

33
00:01:45,640 --> 00:01:48,793
‫dan sebenarnya saya bisa menduplikasi baris ini di sini.

34
00:01:51,131 --> 00:01:54,593
‫Jadi kita kembali lupa kata sandi,

35
00:01:55,820 --> 00:01:58,170
‫yang hanya akan menerima

36
00:01:58,170 --> 00:02:03,170
‫alamat email dan kemudian mengatur ulang kata sandi, yang

37
00:02:03,260 --> 00:02:06,983
‫akan menerima token serta kata sandi baru.

38
00:02:09,360 --> 00:02:10,530
‫Ini adalah salah

39
00:02:10,530 --> 00:02:13,220
‫satu yang akan kita mulai terapkan dalam kuliah ini.

40
00:02:13,220 --> 00:02:17,570
‫Mari kita seperti sebelumnya menentukan langkah-langkah kita di sini.

41
00:02:17,570 --> 00:02:20,510
‫Jadi pertama-tama, dapatkan pengguna berdasarkan

42
00:02:23,180 --> 00:02:25,890
‫email yang diposting

43
00:02:29,590 --> 00:02:32,383
‫lalu buat token acak.

44
00:02:37,090 --> 00:02:40,043
‫Dan kemudian pada dasarnya mengirimkannya kembali sebagai email.

45
00:02:45,910 --> 00:02:48,793
‫Hal ini cukup umum bagi kita pada saat ini.

46
00:02:49,680 --> 00:02:54,397
‫Jadi pengguna, jadi mari kita tunggu pengguna dot find dan

47
00:02:55,330 --> 00:02:57,650
‫sekarang menemukannya, bukan menemukan

48
00:02:57,650 --> 00:03:00,920
‫id karena kami tidak tahu id pengguna.

49
00:03:00,920 --> 00:03:04,240
‫Dan pengguna, tentu saja, juga tidak tahu id-nya

50
00:03:04,240 --> 00:03:06,733
‫sendiri, jadi kami menentukan alamat emailnya.

51
00:03:08,390 --> 00:03:11,363
‫Pada dasarnya itu satu-satunya bagian dari data yang diketahui.

52
00:03:12,230 --> 00:03:16,823
‫Dan itu adalah alamat email stand on request dot body dot.

53
00:03:18,723 --> 00:03:20,580
‫Dan tentu saja sekarang kita

54
00:03:20,580 --> 00:03:25,390
‫perlu mengatakan bahwa kita berada dalam fungsi async dan kemudian seperti sebelumnya, mari kita

55
00:03:25,390 --> 00:03:27,183
‫bungkus dalam catch async.

56
00:03:30,690 --> 00:03:33,263
‫Berikan simpanan dan kesalahannya akan hilang.

57
00:03:35,280 --> 00:03:36,710
‫Kemudian langkah selanjutnya, mari kita verifikasi

58
00:03:36,710 --> 00:03:38,103
‫apakah pengguna memang ada.

59
00:03:39,160 --> 00:03:44,160
‫Jadi jika tidak ada user, maka kembali ke middleware berikutnya

60
00:03:48,950 --> 00:03:51,790
‫bersama tentunya dengan error baru.

61
00:03:51,790 --> 00:03:56,790
‫Apakah tidak ada pengguna dengan alamat email tersebut.

62
00:03:59,190 --> 00:04:02,510
‫Dan kemudian kita dapat menempatkan 404, yang seperti yang sudah Anda

63
00:04:02,510 --> 00:04:04,023
‫ketahui, artinya tidak ditemukan.

64
00:04:05,567 --> 00:04:09,310
‫Selanjutnya, mari kita buat token acak dan untuk

65
00:04:09,310 --> 00:04:11,600
‫itu, sekali lagi, kita

66
00:04:11,600 --> 00:04:14,610
‫sebenarnya akan membuat metode instan pada pengguna.

67
00:04:14,610 --> 00:04:17,430
‫Karena sekali lagi, ini benar-benar berkaitan dengan

68
00:04:17,430 --> 00:04:19,183
‫data pengguna itu sendiri.

69
00:04:20,280 --> 00:04:22,660
‫Dan kita akan benar-benar menulis sedikit

70
00:04:22,660 --> 00:04:25,160
‫kode, jadi, jika itu hanya satu baris kode,

71
00:04:25,160 --> 00:04:27,600
‫maka tentu saja kita bisa meletakkannya di sini.

72
00:04:27,600 --> 00:04:29,540
‫Tetapi kita membutuhkan beberapa baris

73
00:04:29,540 --> 00:04:31,830
‫kode dan sekali lagi, akan sedikit lebih

74
00:04:31,830 --> 00:04:34,080
‫bersih untuk memisahkannya ke dalam fungsinya sendiri.

75
00:04:34,080 --> 00:04:37,823
‫Dan itu biasanya dengan luwak adalah yang terbaik sebagai metode instan.

76
00:04:40,500 --> 00:04:45,490
‫Jadi di sini, mari kita edit di sini di akhir.

77
00:04:45,490 --> 00:04:50,490
‫Jadi metode dot skema pengguna dot membuat token reset kata sandi.

78
00:04:57,900 --> 00:04:59,950
‫Nama yang cukup panjang dan deskriptif.

79
00:04:59,950 --> 00:05:02,020
‫Saya suka melakukannya seperti itu,

80
00:05:02,020 --> 00:05:05,253
‫sehingga saya tahu persis apa yang saya hadapi.

81
00:05:07,600 --> 00:05:11,690
‫Token reset kata sandi pada dasarnya harus berupa string acak tetapi

82
00:05:11,690 --> 00:05:13,650
‫pada saat yang sama, itu

83
00:05:13,650 --> 00:05:17,250
‫tidak perlu sekuat kriptografis seperti hash kata sandi yang kita

84
00:05:17,250 --> 00:05:18,433
‫buat sebelumnya.

85
00:05:19,640 --> 00:05:22,720
‫Kita bisa menggunakan fungsi byte acak yang sangat

86
00:05:22,720 --> 00:05:25,083
‫sederhana dari modul kripto bawaan.

87
00:05:27,350 --> 00:05:30,173
‫Mari kita lanjutkan dan benar-benar menambahkan itu.

88
00:05:35,620 --> 00:05:40,620
‫Crypto memerlukan dan sekali lagi, ini adalah modul simpul bawaan sehingga

89
00:05:40,870 --> 00:05:43,203
‫tidak perlu menginstal apa pun.

90
00:05:44,700 --> 00:05:45,800
‫Dingin.

91
00:05:45,800 --> 00:05:50,800
‫Sekarang, mari kita benar-benar menghasilkan token kita.

92
00:05:56,576 --> 00:05:59,913
‫Dan untuk itu, kita menggunakan crypto dot random byte dan

93
00:06:02,440 --> 00:06:04,750
‫kemudian di sini kita perlu menentukan jumlah

94
00:06:04,750 --> 00:06:05,893
‫karakter pada dasarnya.

95
00:06:07,490 --> 00:06:09,530
‫Dan kemudian kami juga

96
00:06:09,530 --> 00:06:11,823
‫pada akhirnya, mengubahnya menjadi string heksadesimal.

97
00:06:14,045 --> 00:06:14,910
‫Dua string

98
00:06:17,020 --> 00:06:20,723
‫dan kemudian kita dapat menentukan opsi hex di sini.

99
00:06:22,060 --> 00:06:23,690
‫Sekarang jika Anda

100
00:06:23,690 --> 00:06:25,360
‫bertanya-tanya mengapa kami benar-benar

101
00:06:25,360 --> 00:06:28,710
‫membuat token ini, saya rasa saya belum benar-benar menjelaskannya.

102
00:06:28,710 --> 00:06:31,170
‫Pada dasarnya token ini adalah apa yang

103
00:06:31,170 --> 00:06:34,660
‫akan kami kirim ke pengguna dan jadi itu seperti kata sandi

104
00:06:34,660 --> 00:06:38,610
‫reset yang benar-benar dapat digunakan pengguna untuk membuat kata sandi baru yang sebenarnya.

105
00:06:38,610 --> 00:06:41,690
‫Dan tentu saja, hanya pengguna yang memiliki akses ke token ini.

106
00:06:41,690 --> 00:06:45,363
‫Dan faktanya, itu benar-benar berperilaku seperti kata sandi.

107
00:06:45,363 --> 00:06:48,380
‫Karena pada dasarnya ini hanyalah sebuah kata sandi, itu

108
00:06:48,380 --> 00:06:52,210
‫berarti bahwa jika seorang peretas dapat mengakses database kami, maka itu

109
00:06:52,210 --> 00:06:55,000
‫akan memungkinkan peretas untuk mendapatkan akses ke akun

110
00:06:55,000 --> 00:06:57,483
‫tersebut dengan menetapkan kata sandi baru.

111
00:06:59,474 --> 00:07:01,740
‫Jika kami hanya menyimpan token reset ini

112
00:07:01,740 --> 00:07:05,160
‫di database kami sekarang, maka jika beberapa penyerang mendapatkan akses ke

113
00:07:05,160 --> 00:07:07,200
‫database, mereka kemudian dapat menggunakan token

114
00:07:07,200 --> 00:07:10,090
‫itu dan membuat kata sandi baru menggunakan token itu

115
00:07:10,090 --> 00:07:11,690
‫alih-alih Anda melakukannya.

116
00:07:11,690 --> 00:07:14,120
‫Mereka kemudian akan secara efektif mengontrol akun

117
00:07:14,120 --> 00:07:15,563
‫Anda alih-alih Anda melakukannya.

118
00:07:16,810 --> 00:07:19,150
‫Sama seperti kata sandi, kita

119
00:07:19,150 --> 00:07:21,933
‫tidak boleh menyimpan token reset biasa di database.

120
00:07:23,030 --> 00:07:24,670
‫Mari kita mengenkripsinya, tetapi

121
00:07:24,670 --> 00:07:26,880
‫seperti sebelumnya dengan kata sandi,

122
00:07:26,880 --> 00:07:29,670
‫itu tidak memerlukan metode enkripsi yang kuat

123
00:07:29,670 --> 00:07:30,803
‫secara kriptografis.

124
00:07:31,640 --> 00:07:34,653
‫Karena token reset ini adalah vektor serangan yang

125
00:07:34,653 --> 00:07:35,993
‫tidak terlalu berbahaya.

126
00:07:37,050 --> 00:07:39,230
‫Sekali lagi, kita hanya akan menggunakan modul

127
00:07:39,230 --> 00:07:40,233
‫kripto bawaan.

128
00:07:41,610 --> 00:07:44,213
‫Ia bekerja dengan cara yang tampak aneh seperti ini.

129
00:07:45,420 --> 00:07:48,740
‫Kami mengatakan crypto kemudian membuat hash

130
00:07:51,170 --> 00:07:54,550
‫dengan algoritma sha 256 maka kami perlu

131
00:07:55,750 --> 00:07:57,560
‫mengatakan pembaruan

132
00:07:57,560 --> 00:08:00,593
‫dan kemudian variabel tempat token disimpan.

133
00:08:01,840 --> 00:08:04,340
‫String apa pun yang ingin kami enkripsi pada dasarnya.

134
00:08:04,340 --> 00:08:08,570
‫Dan kemudian kita perlu mengatakan intisari dan sekali lagi

135
00:08:08,570 --> 00:08:10,433
‫menyimpannya sebagai heksadesimal.

136
00:08:12,950 --> 00:08:16,660
‫Dan sekarang di mana kita akan menyimpan token reset ini?

137
00:08:16,660 --> 00:08:19,883
‫Nah, kita akan membuat field baru di skema database kita.

138
00:08:20,886 --> 00:08:23,340
‫Karena tentu saja, kami ingin menyimpannya di

139
00:08:23,340 --> 00:08:24,940
‫database, sehingga kami dapat

140
00:08:24,940 --> 00:08:27,003
‫membandingkannya dengan token yang diberikan pengguna.

141
00:08:30,037 --> 00:08:30,870
‫Mari kita lakukan itu di sini di akhir.

142
00:08:34,599 --> 00:08:36,349
‫Token reset kata sandi,

143
00:08:39,884 --> 00:08:41,248
‫itulah stringnya.

144
00:08:41,248 --> 00:08:44,331
‫Dan kemudian juga reset kata sandi kedaluwarsa.

145
00:08:49,890 --> 00:08:51,780
‫Karena reset ini

146
00:08:51,780 --> 00:08:56,100
‫sebenarnya akan kedaluwarsa setelah jangka waktu tertentu sebagai tindakan pengamanan.

147
00:08:56,100 --> 00:08:58,820
‫Anda hanya memiliki waktu 10 menit untuk benar-benar mereset

148
00:08:58,820 --> 00:09:00,133
‫kata sandi Anda.

149
00:09:03,850 --> 00:09:05,500
‫Sekarang mari kita lanjutkan dan gunakan ini.

150
00:09:06,950 --> 00:09:11,950
‫Token reset kata sandi titik ini kemudian sama dengan

151
00:09:13,440 --> 00:09:14,843
‫enkripsi ini.

152
00:09:19,270 --> 00:09:23,720
‫Selanjutnya, mari kita atur ulang kata sandi kedaluwarsa dan

153
00:09:24,570 --> 00:09:29,400
‫mari kita atur itu ke titik tanggal sekarang dan kemudian cukup

154
00:09:29,400 --> 00:09:32,193
‫tambahkan beberapa detik untuk itu.

155
00:09:33,510 --> 00:09:35,910
‫Kami ingin itu bekerja selama

156
00:09:35,910 --> 00:09:40,093
‫10 menit dan itu 10 dan kemudian kami membutuhkannya dalam milidetik.

157
00:09:41,270 --> 00:09:46,270
‫Kali 60 untuk detik dan kemudian kali 1000 untuk milidetik.

158
00:09:49,124 --> 00:09:52,320
‫Dan kemudian saya juga ingin mengembalikan token teks biasa

159
00:09:52,320 --> 00:09:54,770
‫karena itu sebenarnya yang akan kami kirimkan

160
00:09:54,770 --> 00:09:55,783
‫melalui email.

161
00:09:58,080 --> 00:10:01,863
‫Kembalikan token setel ulang.

162
00:10:06,345 --> 00:10:08,860
‫Kami perlu mengirim melalui email token

163
00:10:08,860 --> 00:10:11,660
‫reset yang tidak terenkripsi karena jika tidak,

164
00:10:11,660 --> 00:10:14,503
‫tidak masuk akal untuk mengenkripsi sama sekali.

165
00:10:15,430 --> 00:10:17,090
‫Jika token yang ada

166
00:10:17,090 --> 00:10:19,290
‫di database sama persis dengan yang bisa

167
00:10:19,290 --> 00:10:20,980
‫kita gunakan untuk benar-benar mengubah

168
00:10:20,980 --> 00:10:23,643
‫kata sandi, maka itu sama sekali bukan enkripsi.

169
00:10:24,640 --> 00:10:26,417
‫Kami mengirim satu token melalui

170
00:10:26,417 --> 00:10:29,420
‫email dan kemudian kami memiliki versi terenkripsi di database kami.

171
00:10:29,420 --> 00:10:32,210
‫Dan yang terenkripsi itu pada dasarnya tidak berguna

172
00:10:32,210 --> 00:10:34,050
‫untuk mengubah kata sandi.

173
00:10:34,050 --> 00:10:36,250
‫Ini seperti ketika kita

174
00:10:36,250 --> 00:10:39,470
‫hanya menyimpan kata sandi terenkripsi itu sendiri

175
00:10:39,470 --> 00:10:43,230
‫ke database, seperti yang kita lakukan di sini, Jadi

176
00:10:43,230 --> 00:10:46,967
‫di mana kita mengenkripsi kata sandi menggunakan bcrypt.

177
00:10:48,439 --> 00:10:51,100
‫Ingatlah bahwa satu-satunya yang pernah menyimpan

178
00:10:51,100 --> 00:10:53,680
‫data sensitif dalam bentuk terenkripsi dan

179
00:10:53,680 --> 00:10:56,620
‫kemudian membandingkannya dengan versi terenkripsi yang ada

180
00:10:56,620 --> 00:10:57,770
‫di database.

181
00:11:00,385 --> 00:11:02,500
‫Cukup dengan memasukkan keduanya ke

182
00:11:02,500 --> 00:11:06,730
‫konsol yang akan membuat hidup kita sedikit lebih mudah di kemudian hari.

183
00:11:06,730 --> 00:11:09,630
‫Katakanlah reset token dan saya masuk di

184
00:11:10,470 --> 00:11:11,440
‫sini sebagai

185
00:11:11,440 --> 00:11:14,930
‫objek karena dengan cara ini, ia akan benar-benar memberi

186
00:11:14,930 --> 00:11:17,803
‫tahu saya nama variabel beserta nilainya.

187
00:11:20,210 --> 00:11:25,153
‫Dan kemudian sama dengan token reset kata sandi titik ini.

188
00:11:28,030 --> 00:11:29,880
‫Yang ini tidak benar-benar berfungsi dengan

189
00:11:29,880 --> 00:11:32,340
‫objek penulisan, cara ES6 baru ini dan

190
00:11:32,340 --> 00:11:34,140
‫biarkan saja di sini.

191
00:11:36,550 --> 00:11:38,080
‫Bagaimanapun, mari kita kembali

192
00:11:38,080 --> 00:11:40,153
‫ke sini dan kemudian menggunakan fungsi itu.

193
00:11:41,660 --> 00:11:44,930
‫Jadi ingat bagaimana kita mengembalikan token reset, dan mari

194
00:11:44,930 --> 00:11:46,653
‫kita simpan di sini.

195
00:11:48,040 --> 00:11:52,873
‫Jadi token reset sama dengan set titik pengguna dan saya tidak

196
00:11:54,370 --> 00:11:56,373
‫yakin lagi dengan namanya.

197
00:11:58,500 --> 00:12:00,560
‫Buat token reset kata sandi, jadi

198
00:12:00,560 --> 00:12:01,633
‫itu panjang.

199
00:12:03,430 --> 00:12:06,240
‫Baiklah dan itu sudah selesai, tetapi

200
00:12:06,240 --> 00:12:09,460
‫sebenarnya yang kami lakukan hanyalah memodifikasi data

201
00:12:09,460 --> 00:12:10,943
‫di sini.

202
00:12:12,780 --> 00:12:16,580
‫Ketika kami menetapkan kata sandi titik ini kedaluwarsa misalnya

203
00:12:16,580 --> 00:12:19,040
‫ke nilai ini, kami sebenarnya tidak

204
00:12:19,040 --> 00:12:20,880
‫benar-benar memperbarui dokumen.

205
00:12:20,880 --> 00:12:22,063
‫Kami tidak menyimpannya.

206
00:12:23,100 --> 00:12:24,880
‫Kami benar-benar hanya

207
00:12:24,880 --> 00:12:27,563
‫memodifikasinya, tetapi sekarang kami harus menyimpannya.

208
00:12:29,950 --> 00:12:34,653
‫Katakanlah menunggu pengguna titik simpan.

209
00:12:36,750 --> 00:12:39,583
‫Tapi perhatikan apa yang terjadi saat kita sekarang menggunakan ini.

210
00:12:43,910 --> 00:12:46,463
‫Mari kita ambil yang ini di sini.

211
00:12:50,980 --> 00:12:53,080
‫Ini adalah rute yang kami temukan sebelumnya.

212
00:12:54,440 --> 00:12:57,750
‫Dan sekarang kita mendapatkan rute ini belum ditentukan.

213
00:12:57,750 --> 00:12:59,413
‫Mari kita lihat mengapa demikian.

214
00:13:00,290 --> 00:13:04,740
‫Di rute pengguna, kami jelas memiliki url yang sama di sini, tetapi

215
00:13:04,740 --> 00:13:08,463
‫saya melihat bahwa kami sebenarnya perlu melakukan permintaan posting.

216
00:13:09,390 --> 00:13:13,380
‫Baiklah, oke, tapi sekarang kami mendapatkan pesan kesalahan yang mengatakan

217
00:13:13,380 --> 00:13:16,200
‫tolong berikan email dan kata sandi.

218
00:13:16,200 --> 00:13:18,320
‫Dan itulah yang saya maksud ketika saya mengatakan perhatikan

219
00:13:18,320 --> 00:13:20,343
‫apa yang terjadi ketika Anda mencoba ini.

220
00:13:21,990 --> 00:13:25,330
‫Itu terjadi karena kita mencoba untuk menyimpan dokumen,

221
00:13:25,330 --> 00:13:28,860
‫tetapi kita tidak menentukan semua data wajib, sehingga bidang

222
00:13:28,860 --> 00:13:31,453
‫yang kita tandai sebagai wajib diisi.

223
00:13:32,502 --> 00:13:34,683
‫Ayo cepat perbaiki itu.

224
00:13:35,848 --> 00:13:38,888
‫Yang perlu kita lakukan adalah benar-benar memberikan opsi

225
00:13:38,888 --> 00:13:41,643
‫khusus ke metode penyimpanan titik pengguna ini.

226
00:13:43,140 --> 00:13:43,973
‫Kami

227
00:13:47,210 --> 00:13:48,720
‫mengatakan validasi sebelum simpan

228
00:13:49,890 --> 00:13:51,293
‫disetel ke false.

229
00:13:52,332 --> 00:13:55,260
‫Ini kemudian akan menonaktifkan semua validasi yang kami

230
00:13:55,260 --> 00:13:56,993
‫tentukan dalam skema kami.

231
00:13:58,540 --> 00:14:01,100
‫Hal-hal kecil inilah yang perlu Anda ketahui yang

232
00:14:01,100 --> 00:14:02,800
‫akan membuat semua perbedaan.

233
00:14:03,790 --> 00:14:06,570
‫Sekarang saya juga tidak benar-benar tahu bahwa ini ada karena

234
00:14:06,570 --> 00:14:09,170
‫tidak ada yang benar-benar tahu semua hal itu.

235
00:14:09,170 --> 00:14:10,260
‫Tidak mungkin.

236
00:14:10,260 --> 00:14:13,010
‫Perpustakaan seperti Mongoose terlalu besar bagi Anda untuk

237
00:14:13,010 --> 00:14:14,833
‫mengetahui semua yang ada.

238
00:14:16,010 --> 00:14:19,020
‫Saya melanjutkan dan membaca dokumentasi Mongoose dan

239
00:14:19,020 --> 00:14:22,710
‫di situlah saya menemukan opsi yang sangat membantu ini.

240
00:14:22,710 --> 00:14:25,050
‫Semua ini hanya untuk mengatakan itu lagi,

241
00:14:25,050 --> 00:14:26,520
‫tidak ada yang tahu

242
00:14:26,520 --> 00:14:28,520
‫segalanya dan jadi itu benar-benar kebiasaan

243
00:14:28,520 --> 00:14:29,960
‫yang baik jika

244
00:14:29,960 --> 00:14:31,830
‫Anda mengalami beberapa masalah untuk

245
00:14:31,830 --> 00:14:34,210
‫melihat dokumentasi untuk perpustakaan yang Anda gunakan.

246
00:14:34,210 --> 00:14:35,963
‫Mari kita lihat ini sekarang.

247
00:14:39,410 --> 00:14:42,260
‫Dan kita masih mendapatkan kesalahan yang sama di sini, tetapi

248
00:14:42,260 --> 00:14:43,890
‫saya melihat di sini

249
00:14:43,890 --> 00:14:45,883
‫bahwa itu sebenarnya berasal dari fungsi login.

250
00:14:48,210 --> 00:14:50,573
‫Mari kita lihat apa yang terjadi di sini.

251
00:14:51,490 --> 00:14:54,550
‫Mari kita lihat juga rutenya.

252
00:14:54,550 --> 00:14:56,343
‫Ah, oke, jadi inilah masalahnya.

253
00:14:57,610 --> 00:14:59,420
‫Kami sekarang mencoba memanggil

254
00:14:59,420 --> 00:15:02,170
‫handler login, yang tentu saja tidak masuk akal.

255
00:15:03,660 --> 00:15:05,790
‫Ini dia lupa kata sandi.

256
00:15:05,790 --> 00:15:07,633
‫Ini dia reset password.

257
00:15:08,850 --> 00:15:12,290
‫Jadi kesalahan yang kami dapatkan sebelumnya sebenarnya bukan

258
00:15:12,290 --> 00:15:13,463
‫karena validasi.

259
00:15:16,312 --> 00:15:17,980
‫Mari kita kirim ini lagi

260
00:15:17,980 --> 00:15:20,100
‫dan sekarang kita mendapatkan kesalahan bahwa tidak

261
00:15:20,100 --> 00:15:21,420
‫ada pengguna dengan

262
00:15:21,420 --> 00:15:24,140
‫alamat email ini dan itu karena kita tidak menentukan

263
00:15:24,140 --> 00:15:26,103
‫alamat email apa pun di badan.

264
00:15:28,390 --> 00:15:29,680
‫Kami mengujinya

265
00:15:29,680 --> 00:15:32,300
‫dan sekarang saatnya untuk benar-benar mengujinya

266
00:15:32,300 --> 00:15:34,093
‫dengan email pengguna.

267
00:15:43,409 --> 00:15:44,440
‫Baiklah.

268
00:15:44,440 --> 00:15:46,380
‫Jadi sekarang seharusnya tidak melakukan

269
00:15:46,380 --> 00:15:49,320
‫apa-apa karena kami tidak mengirim kembali tanggapan apa pun.

270
00:15:49,320 --> 00:15:50,700
‫Mari kita batalkan

271
00:15:50,700 --> 00:15:52,540
‫saja ini karena saya benar-benar

272
00:15:52,540 --> 00:15:55,227
‫tertarik untuk melihat token ini di sini

273
00:15:55,227 --> 00:15:57,830
‫dan kemudian juga untuk melihat objek pengguna.

274
00:15:57,830 --> 00:16:01,050
‫Ini di sini adalah token reset asli, jadi Anda

275
00:16:01,050 --> 00:16:04,150
‫lihat ini adalah string heksadesimal acak dan kemudian

276
00:16:04,150 --> 00:16:06,593
‫kami mendapatkan yang terenkripsi di sini.

277
00:16:07,840 --> 00:16:11,330
‫Ingat ini adalah yang tidak boleh ada di

278
00:16:11,330 --> 00:16:13,663
‫database, jadi diakhiri dengan a901.

279
00:16:14,930 --> 00:16:16,230
‫Mari kita lihat itu.

280
00:16:18,410 --> 00:16:20,460
‫Dan memang, ini dia,

281
00:16:20,460 --> 00:16:24,740
‫token reset kata sandi yang diakhiri dengan a901 ini.

282
00:16:24,740 --> 00:16:28,960
‫Dan juga tanggalnya, yang sebenarnya 10 menit dari sekarang.

283
00:16:28,960 --> 00:16:31,753
‫Sekarang Anda tahu jam berapa saya merekam video ini.

284
00:16:33,130 --> 00:16:35,340
‫Bagaimanapun, tapi ini bekerja dengan baik.

285
00:16:35,340 --> 00:16:37,890
‫Jadi ini sebenarnya adalah bagian

286
00:16:37,890 --> 00:16:41,561
‫pertama dari pembuatan fungsi pengaturan ulang kata sandi ini.

287
00:16:41,561 --> 00:16:43,140
‫Di video berikutnya, kami

288
00:16:43,140 --> 00:16:46,840
‫akan mengirimkan token ini ke sini melalui email ke pengguna

289
00:16:46,840 --> 00:16:49,500
‫dan sebenarnya kami menyiapkan video terpisah hanya

290
00:16:49,500 --> 00:16:52,370
‫untuk mempelajari cara mengirim email dengan node

291
00:16:52,370 --> 00:16:53,470
‫ke js.

292
00:16:53,470 --> 00:16:55,100
‫Itu sangat menyenangkan

293
00:16:55,100 --> 00:16:58,363
‫jadi jangan menunggu untuk pindah ke sana segera.

