﻿1
00:00:01,190 --> 00:00:03,320
‫Instrutor: Neste vídeo e nos próximos,

2
00:00:03,320 --> 00:00:05,380
‫vamos implementar uma funcionalidade de

3
00:00:05,380 --> 00:00:08,670
‫redefinição de senha amigável, que é uma espécie de

4
00:00:08,670 --> 00:00:11,253
‫padrão na maioria dos aplicativos da web.

5
00:00:12,750 --> 00:00:15,390
‫E provavelmente, você já usou a redefinição de

6
00:00:15,390 --> 00:00:17,720
‫senha em algum site antes e,

7
00:00:17,720 --> 00:00:19,140
‫normalmente, funciona assim.

8
00:00:19,140 --> 00:00:21,280
‫Você só precisa fornecer seu

9
00:00:21,280 --> 00:00:23,490
‫endereço de e-mail e receberá um e-mail

10
00:00:23,490 --> 00:00:25,950
‫com um link onde pode clicar e que

11
00:00:25,950 --> 00:00:29,410
‫o levará a uma página onde poderá inserir uma nova senha.

12
00:00:29,410 --> 00:00:32,270
‫Este é um procedimento muito padrão e também

13
00:00:32,270 --> 00:00:34,160
‫é assim que iremos implementá-lo

14
00:00:34,160 --> 00:00:35,890
‫aqui neste aplicativo.

15
00:00:35,890 --> 00:00:37,700
‫Basicamente, existem duas etapas.

16
00:00:37,700 --> 00:00:40,930
‫A primeira é que o usuário envie uma solicitação de

17
00:00:40,930 --> 00:00:45,260
‫postagem para uma rota de esquecimento de senha, apenas com este endereço de e-mail.

18
00:00:45,260 --> 00:00:47,510
‫Isso criará um token de

19
00:00:47,510 --> 00:00:50,830
‫redefinição e o enviará ao endereço de e-mail fornecido.

20
00:00:50,830 --> 00:00:54,930
‫Apenas um token simples e aleatório, não um JSON Web Token.

21
00:00:54,930 --> 00:00:56,610
‫Essa é uma diferença aqui.

22
00:00:56,610 --> 00:00:59,507
‫Então, na segunda parte, que será o

23
00:00:59,507 --> 00:01:02,800
‫próximo vídeo, o usuário então envia aquele token de

24
00:01:02,800 --> 00:01:06,553
‫seu e-mail junto com uma nova senha para atualizar sua senha.

25
00:01:08,040 --> 00:01:13,040
‫Basicamente, teremos exportações ponto esqueci a senha, que é o

26
00:01:14,810 --> 00:01:16,173
‫primeiro passo.

27
00:01:17,930 --> 00:01:22,930
‫Então solicite, responda e em seguida e depois como um segundo

28
00:01:25,560 --> 00:01:28,703
‫passo, temos o reset de senha.

29
00:01:33,480 --> 00:01:37,260
‫Então, vamos seguir em frente e implementar essas duas rotas.

30
00:01:37,260 --> 00:01:40,520
‫Ok, e isso, é claro, em seu roteador de usuário ou

31
00:01:40,520 --> 00:01:42,053
‫arquivo de rotas de usuário.

32
00:01:43,190 --> 00:01:45,640
‫Vamos colocá-los também aqui e,

33
00:01:45,640 --> 00:01:48,793
‫na verdade, posso apenas duplicar essas linhas aqui.

34
00:01:51,131 --> 00:01:54,593
‫Por isso, novamente esquecemos a senha,

35
00:01:55,820 --> 00:01:58,170
‫que só receberá o

36
00:01:58,170 --> 00:02:03,170
‫endereço de e-mail e a seguir redefiniremos a senha, que

37
00:02:03,260 --> 00:02:06,983
‫receberá o token assim como a nova senha.

38
00:02:09,360 --> 00:02:10,530
‫Este é o

39
00:02:10,530 --> 00:02:13,220
‫que vamos começar a implementar nesta palestra.

40
00:02:13,220 --> 00:02:17,570
‫Vamos, como antes, especificar nossos passos aqui.

41
00:02:17,570 --> 00:02:20,510
‫Portanto, primeiro obtenha o usuário com

42
00:02:23,180 --> 00:02:25,890
‫base no e-mail postado e,

43
00:02:29,590 --> 00:02:32,383
‫em seguida, gere o token aleatório.

44
00:02:37,090 --> 00:02:40,043
‫E então, basicamente, envie-o de volta como um e-mail.

45
00:02:45,910 --> 00:02:48,793
‫Essas coisas são muito comuns para nós neste momento.

46
00:02:49,680 --> 00:02:54,397
‫Então, usuário, vamos aguardar o usuário dot find e agora ele encontra

47
00:02:55,330 --> 00:02:57,650
‫um, não é encontrado pelo

48
00:02:57,650 --> 00:03:00,920
‫id porque não sabemos o id do usuário.

49
00:03:00,920 --> 00:03:04,240
‫E o usuário, é claro, também não sabe seu próprio

50
00:03:04,240 --> 00:03:06,733
‫id, então especificamos o endereço de e-mail.

51
00:03:08,390 --> 00:03:11,363
‫Basicamente, é o único dado conhecido.

52
00:03:12,230 --> 00:03:16,823
‫E isso é stand on request dot body dot endereço de e-mail.

53
00:03:18,723 --> 00:03:20,580
‫E, claro, agora precisamos dizer

54
00:03:20,580 --> 00:03:25,390
‫que estamos em uma função assíncrona e, como antes, vamos envolvê-la

55
00:03:25,390 --> 00:03:27,183
‫em catch async.

56
00:03:30,690 --> 00:03:33,263
‫Salve e o erro desaparecerá.

57
00:03:35,280 --> 00:03:36,710
‫Em seguida, na próxima etapa, vamos

58
00:03:36,710 --> 00:03:38,103
‫verificar se o usuário existe.

59
00:03:39,160 --> 00:03:44,160
‫Portanto, se não houver usuário, retorne ao próximo middleware, é

60
00:03:48,950 --> 00:03:51,790
‫claro, com um novo erro.

61
00:03:51,790 --> 00:03:56,790
‫Nenhum usuário tem esse endereço de e-mail.

62
00:03:59,190 --> 00:04:02,510
‫E então podemos colocar um 404, que como você já

63
00:04:02,510 --> 00:04:04,023
‫sabe, significa não encontrado.

64
00:04:05,567 --> 00:04:09,310
‫Em seguida, vamos gerar o token aleatório e para

65
00:04:09,310 --> 00:04:11,600
‫isso, mais uma vez,

66
00:04:11,600 --> 00:04:14,610
‫vamos criar um método instantâneo no usuário.

67
00:04:14,610 --> 00:04:17,430
‫Porque, mais uma vez, isso realmente tem a ver com

68
00:04:17,430 --> 00:04:19,183
‫os próprios dados do usuário.

69
00:04:20,280 --> 00:04:22,660
‫E vamos escrever um pouco de código,

70
00:04:22,660 --> 00:04:25,160
‫então, se fosse apenas uma linha de código,

71
00:04:25,160 --> 00:04:27,600
‫é claro que poderíamos simplesmente colocá-lo bem aqui.

72
00:04:27,600 --> 00:04:29,540
‫Mas precisamos de algumas linhas

73
00:04:29,540 --> 00:04:31,830
‫de código e, portanto, é um pouco

74
00:04:31,830 --> 00:04:34,080
‫mais limpo separá-lo em sua própria função.

75
00:04:34,080 --> 00:04:37,823
‫E isso geralmente com o Mongoose é melhor como um método instantâneo.

76
00:04:40,500 --> 00:04:45,490
‫Então aqui embaixo, vamos editar aqui no final.

77
00:04:45,490 --> 00:04:50,490
‫Portanto, os métodos de ponto do esquema do usuário ponto criam o token de redefinição de senha.

78
00:04:57,900 --> 00:04:59,950
‫Um nome bastante longo e descritivo.

79
00:04:59,950 --> 00:05:02,020
‫Gosto de fazer assim,

80
00:05:02,020 --> 00:05:05,253
‫para saber exatamente com o que estou lidando.

81
00:05:07,600 --> 00:05:11,690
‫O token de redefinição de senha deve ser basicamente uma string aleatória,

82
00:05:11,690 --> 00:05:13,650
‫mas, ao mesmo tempo, não

83
00:05:13,650 --> 00:05:17,250
‫precisa ser tão criptograficamente forte quanto o hash de senha

84
00:05:17,250 --> 00:05:18,433
‫que criamos antes.

85
00:05:19,640 --> 00:05:22,720
‫Podemos apenas usar a função de bytes aleatórios

86
00:05:22,720 --> 00:05:25,083
‫muito simples do módulo criptográfico integrado.

87
00:05:27,350 --> 00:05:30,173
‫Vamos prosseguir e realmente adicionar isso.

88
00:05:35,620 --> 00:05:40,620
‫Crypto requer e, novamente, é um módulo de nó embutido, portanto, não

89
00:05:40,870 --> 00:05:43,203
‫há necessidade de instalar nada.

90
00:05:44,700 --> 00:05:45,800
‫Legal.

91
00:05:45,800 --> 00:05:50,800
‫Agora, vamos gerar nosso token.

92
00:05:56,576 --> 00:05:59,913
‫E para isso, usamos bytes aleatórios de crypto dot e

93
00:06:02,440 --> 00:06:04,750
‫então aqui precisamos especificar o número de

94
00:06:04,750 --> 00:06:05,893
‫caracteres basicamente.

95
00:06:07,490 --> 00:06:09,530
‫E, no final, também

96
00:06:09,530 --> 00:06:11,823
‫o convertemos em uma string hexadecimal.

97
00:06:14,045 --> 00:06:14,910
‫Duas

98
00:06:17,020 --> 00:06:20,723
‫strings e então podemos especificar a opção hex aqui.

99
00:06:22,060 --> 00:06:23,690
‫Agora, se você

100
00:06:23,690 --> 00:06:25,360
‫está se perguntando por que

101
00:06:25,360 --> 00:06:28,710
‫estamos criando esse token, acho que ainda não expliquei.

102
00:06:28,710 --> 00:06:31,170
‫Basicamente, esse token é o que enviaremos

103
00:06:31,170 --> 00:06:34,660
‫ao usuário e, na verdade, é como uma redefinição de

104
00:06:34,660 --> 00:06:38,610
‫senha que o usuário pode usar para criar uma nova senha real.

105
00:06:38,610 --> 00:06:41,690
‫E, claro, apenas o usuário terá acesso a esse token.

106
00:06:41,690 --> 00:06:45,363
‫E, de fato, ele realmente se comporta como uma senha.

107
00:06:45,363 --> 00:06:48,380
‫Como é essencialmente uma senha, significa que

108
00:06:48,380 --> 00:06:52,210
‫se um hacker conseguir acessar nosso banco de dados, isso

109
00:06:52,210 --> 00:06:55,000
‫permitirá que o hacker obtenha acesso à

110
00:06:55,000 --> 00:06:57,483
‫conta definindo uma nova senha.

111
00:06:59,474 --> 00:07:01,740
‫Se simplesmente armazenássemos este token de redefinição

112
00:07:01,740 --> 00:07:05,160
‫em nosso banco de dados agora, se algum invasor obtivesse acesso ao

113
00:07:05,160 --> 00:07:07,200
‫banco de dados, ele poderia usar esse

114
00:07:07,200 --> 00:07:10,090
‫token e criar uma nova senha usando esse token em

115
00:07:10,090 --> 00:07:11,690
‫vez de você fazê-lo.

116
00:07:11,690 --> 00:07:14,120
‫Eles controlariam efetivamente sua conta, em vez

117
00:07:14,120 --> 00:07:15,563
‫de você fazer isso.

118
00:07:16,810 --> 00:07:19,150
‫Assim como uma senha, nunca devemos armazenar

119
00:07:19,150 --> 00:07:21,933
‫um token de redefinição simples no banco de dados.

120
00:07:23,030 --> 00:07:24,670
‫Vamos criptografá-lo, mas como

121
00:07:24,670 --> 00:07:26,880
‫antes com a senha, ele

122
00:07:26,880 --> 00:07:29,670
‫não precisa de um método de criptografia

123
00:07:29,670 --> 00:07:30,803
‫criptograficamente forte.

124
00:07:31,640 --> 00:07:34,653
‫Porque esses tokens de redefinição são um vetor de

125
00:07:34,653 --> 00:07:35,993
‫ataque muito menos perigoso.

126
00:07:37,050 --> 00:07:39,230
‫Novamente, vamos apenas usar o módulo de

127
00:07:39,230 --> 00:07:40,233
‫criptografia embutido.

128
00:07:41,610 --> 00:07:44,213
‫Funciona dessa maneira estranha.

129
00:07:45,420 --> 00:07:48,740
‫Dizemos crypto, em seguida, criamos o hash com

130
00:07:51,170 --> 00:07:54,550
‫o algoritmo sha 256, então precisamos dizer update

131
00:07:55,750 --> 00:07:57,560
‫e, em seguida,

132
00:07:57,560 --> 00:08:00,593
‫a variável onde o token está armazenado.

133
00:08:01,840 --> 00:08:04,340
‫Qualquer string que desejamos criptografar basicamente.

134
00:08:04,340 --> 00:08:08,570
‫E então precisamos dizer digerir e, em seguida, armazená-lo novamente

135
00:08:08,570 --> 00:08:10,433
‫como um hexadecimal.

136
00:08:12,950 --> 00:08:16,660
‫E agora, onde vamos realmente salvar este token de reinicialização?

137
00:08:16,660 --> 00:08:19,883
‫Bem, vamos criar um novo campo em nosso esquema de banco de dados.

138
00:08:20,886 --> 00:08:23,340
‫Claro, queremos salvá-lo no banco de dados, para

139
00:08:23,340 --> 00:08:24,940
‫que possamos compará-lo com

140
00:08:24,940 --> 00:08:27,003
‫o token que o usuário fornece.

141
00:08:30,037 --> 00:08:30,870
‫Vamos fazer isso aqui no final.

142
00:08:34,599 --> 00:08:36,349
‫Token de redefinição de senha, essa

143
00:08:39,884 --> 00:08:41,248
‫é a string.

144
00:08:41,248 --> 00:08:44,331
‫E então também expira a redefinição de senha.

145
00:08:49,890 --> 00:08:51,780
‫Porque esta reinicialização irá

146
00:08:51,780 --> 00:08:56,100
‫realmente expirar após um determinado período de tempo como medida de segurança.

147
00:08:56,100 --> 00:08:58,820
‫Você terá apenas 10 minutos para redefinir

148
00:08:58,820 --> 00:09:00,133
‫sua senha.

149
00:09:03,850 --> 00:09:05,500
‫Vamos agora usar isso.

150
00:09:06,950 --> 00:09:11,950
‫Este token de redefinição de senha de ponto é então igual

151
00:09:13,440 --> 00:09:14,843
‫a esta criptografia.

152
00:09:19,270 --> 00:09:23,720
‫Em seguida, vamos definir expirações de redefinição de senha e

153
00:09:24,570 --> 00:09:29,400
‫vamos definir isso para ponto de data agora e, em seguida,

154
00:09:29,400 --> 00:09:32,193
‫simplesmente adicionar alguns segundos a isso.

155
00:09:33,510 --> 00:09:35,910
‫Queremos que funcione por 10

156
00:09:35,910 --> 00:09:40,093
‫minutos e, portanto, são 10 e depois precisamos dele em milissegundos.

157
00:09:41,270 --> 00:09:46,270
‫Vezes 60 para segundos e depois 1000 para milissegundos.

158
00:09:49,124 --> 00:09:52,320
‫E também quero devolver o token de texto simples

159
00:09:52,320 --> 00:09:54,770
‫porque é realmente o que enviaremos

160
00:09:54,770 --> 00:09:55,783
‫por e-mail.

161
00:09:58,080 --> 00:10:01,863
‫Retorne o token de redefinição.

162
00:10:06,345 --> 00:10:08,860
‫Precisamos enviar por e-mail o

163
00:10:08,860 --> 00:10:11,660
‫token de redefinição não criptografado porque,

164
00:10:11,660 --> 00:10:14,503
‫do contrário, não faria muito sentido criptografá-lo.

165
00:10:15,430 --> 00:10:17,090
‫Se o token que

166
00:10:17,090 --> 00:10:19,290
‫estava no banco de dados fosse exatamente o

167
00:10:19,290 --> 00:10:20,980
‫mesmo que poderíamos usar para realmente

168
00:10:20,980 --> 00:10:23,643
‫alterar a senha, então isso não seria nenhuma criptografia.

169
00:10:24,640 --> 00:10:26,417
‫Enviamos um token por e-mail

170
00:10:26,417 --> 00:10:29,420
‫e então temos a versão criptografada em nosso banco de dados.

171
00:10:29,420 --> 00:10:32,210
‫E aquele criptografado é basicamente inútil para

172
00:10:32,210 --> 00:10:34,050
‫alterar a senha.

173
00:10:34,050 --> 00:10:36,250
‫É como quando

174
00:10:36,250 --> 00:10:39,470
‫salvamos apenas a própria senha criptografada

175
00:10:39,470 --> 00:10:43,230
‫no banco de dados, assim como fizemos

176
00:10:43,230 --> 00:10:46,967
‫aqui, onde criptografamos a senha usando bcrypt.

177
00:10:48,439 --> 00:10:51,100
‫Lembre-se de que você só salva dados confidenciais

178
00:10:51,100 --> 00:10:53,680
‫em uma forma criptografada e depois compare-os

179
00:10:53,680 --> 00:10:56,620
‫com a versão criptografada que está no banco

180
00:10:56,620 --> 00:10:57,770
‫de dados.

181
00:11:00,385 --> 00:11:02,500
‫Basta registrar esses dois no

182
00:11:02,500 --> 00:11:06,730
‫console, o que tornará nossas vidas um pouco mais fáceis no futuro.

183
00:11:06,730 --> 00:11:09,630
‫Digamos token de redefinição e estou efetuando login

184
00:11:10,470 --> 00:11:11,440
‫aqui como

185
00:11:11,440 --> 00:11:14,930
‫um objeto porque, dessa forma, ele realmente me dirá o

186
00:11:14,930 --> 00:11:17,803
‫nome da variável junto com seu valor.

187
00:11:20,210 --> 00:11:25,153
‫E então o mesmo com este token de redefinição de senha de ponto.

188
00:11:28,030 --> 00:11:29,880
‫Este realmente não funciona com a

189
00:11:29,880 --> 00:11:32,340
‫escrita de objetos, este novo jeito ES6 e

190
00:11:32,340 --> 00:11:34,140
‫vamos deixar por isso mesmo.

191
00:11:36,550 --> 00:11:38,080
‫De qualquer forma, vamos

192
00:11:38,080 --> 00:11:40,153
‫voltar aqui e usar essa função.

193
00:11:41,660 --> 00:11:44,930
‫Portanto, lembre-se de como retornamos o token de redefinição

194
00:11:44,930 --> 00:11:46,653
‫e vamos armazená-lo aqui.

195
00:11:48,040 --> 00:11:52,873
‫Portanto, o token de redefinição é igual ao conjunto de pontos do usuário e não

196
00:11:54,370 --> 00:11:56,373
‫tenho mais certeza do nome.

197
00:11:58,500 --> 00:12:00,560
‫Crie um token de redefinição de senha, de

198
00:12:00,560 --> 00:12:01,633
‫modo que seja longo.

199
00:12:03,430 --> 00:12:06,240
‫Tudo bem e está feito, mas

200
00:12:06,240 --> 00:12:09,460
‫na verdade o que fizemos foi apenas modificar

201
00:12:09,460 --> 00:12:10,943
‫os dados aqui.

202
00:12:12,780 --> 00:12:16,580
‫Quando definimos esta senha de ponto expira, por exemplo,

203
00:12:16,580 --> 00:12:19,040
‫para este valor, na verdade não

204
00:12:19,040 --> 00:12:20,880
‫atualizamos o documento.

205
00:12:20,880 --> 00:12:22,063
‫Nós não o salvamos.

206
00:12:23,100 --> 00:12:24,880
‫Nós apenas o

207
00:12:24,880 --> 00:12:27,563
‫modificamos, mas agora precisamos salvá-lo.

208
00:12:29,950 --> 00:12:34,653
‫Digamos que o usuário aguarde o salvamento do ponto.

209
00:12:36,750 --> 00:12:39,583
‫Mas observe o que acontece enquanto usamos isso agora.

210
00:12:43,910 --> 00:12:46,463
‫Vamos apenas pegar este aqui.

211
00:12:50,980 --> 00:12:53,080
‫Esta é a rota que encontramos antes.

212
00:12:54,440 --> 00:12:57,750
‫E agora temos que essa rota ainda não está definida.

213
00:12:57,750 --> 00:12:59,413
‫Vamos ver por que isso acontece.

214
00:13:00,290 --> 00:13:04,740
‫Na rota do usuário, claramente temos o mesmo url aqui, mas

215
00:13:04,740 --> 00:13:08,463
‫vejo que realmente precisamos fazer uma solicitação de postagem.

216
00:13:09,390 --> 00:13:13,380
‫Certo, certo, mas agora recebemos um erro dizendo

217
00:13:13,380 --> 00:13:16,200
‫forneça e-mail e senha.

218
00:13:16,200 --> 00:13:18,320
‫E foi isso que eu quis dizer quando disse para

219
00:13:18,320 --> 00:13:20,343
‫ver o que acontece quando você tenta fazer isso.

220
00:13:21,990 --> 00:13:25,330
‫Isso acontece porque estamos tentando salvar um documento,

221
00:13:25,330 --> 00:13:28,860
‫mas não especificamos todos os dados obrigatórios, portanto, os

222
00:13:28,860 --> 00:13:31,453
‫campos que marcamos como obrigatórios.

223
00:13:32,502 --> 00:13:34,683
‫Vamos consertar isso rapidamente.

224
00:13:35,848 --> 00:13:38,888
‫Tudo o que precisamos fazer é realmente passar uma opção especial

225
00:13:38,888 --> 00:13:41,643
‫para este método de salvamento do ponto do usuário.

226
00:13:43,140 --> 00:13:43,973
‫Dizemos

227
00:13:47,210 --> 00:13:48,720
‫validar antes de salvar

228
00:13:49,890 --> 00:13:51,293
‫definido como falso.

229
00:13:52,332 --> 00:13:55,260
‫Isso desativará todos os validadores que especificamos

230
00:13:55,260 --> 00:13:56,993
‫em nosso esquema.

231
00:13:58,540 --> 00:14:01,100
‫São essas pequenas coisas que você precisa saber

232
00:14:01,100 --> 00:14:02,800
‫que farão toda a diferença.

233
00:14:03,790 --> 00:14:06,570
‫Bem, eu também não sabia realmente que isso existia

234
00:14:06,570 --> 00:14:09,170
‫porque ninguém realmente sabe todas as coisas.

235
00:14:09,170 --> 00:14:10,260
‫É impossível.

236
00:14:10,260 --> 00:14:13,010
‫Uma biblioteca como a Mongoose é simplesmente muito grande para

237
00:14:13,010 --> 00:14:14,833
‫você saber tudo que existe.

238
00:14:16,010 --> 00:14:19,020
‫Fui em frente e li a documentação do

239
00:14:19,020 --> 00:14:22,710
‫Mongoose e foi aí que encontrei essa opção extremamente útil.

240
00:14:22,710 --> 00:14:25,050
‫Tudo isso só para dizer que ninguém

241
00:14:25,050 --> 00:14:26,520
‫sabe tudo e por

242
00:14:26,520 --> 00:14:28,520
‫isso é realmente um bom hábito,

243
00:14:28,520 --> 00:14:29,960
‫caso você

244
00:14:29,960 --> 00:14:31,830
‫tenha problemas, dê uma olhada

245
00:14:31,830 --> 00:14:34,210
‫na documentação da biblioteca que está usando.

246
00:14:34,210 --> 00:14:35,963
‫Vamos dar uma olhada nisso agora.

247
00:14:39,410 --> 00:14:42,260
‫E ainda obtemos o mesmo erro aqui, mas

248
00:14:42,260 --> 00:14:43,890
‫vejo aqui que ele

249
00:14:43,890 --> 00:14:45,883
‫realmente vem da função de login.

250
00:14:48,210 --> 00:14:50,573
‫Vamos dar uma olhada no que está acontecendo aqui.

251
00:14:51,490 --> 00:14:54,550
‫Vamos dar uma olhada nas rotas também.

252
00:14:54,550 --> 00:14:56,343
‫Ah, ok, então aqui está o problema.

253
00:14:57,610 --> 00:14:59,420
‫Agora estamos tentando chamar o

254
00:14:59,420 --> 00:15:02,170
‫manipulador de login, o que, obviamente, não faz sentido.

255
00:15:03,660 --> 00:15:05,790
‫Aqui está a senha esquecida.

256
00:15:05,790 --> 00:15:07,633
‫Aqui está a senha de redefinição.

257
00:15:08,850 --> 00:15:12,290
‫E o erro que obtivemos antes não foi devido

258
00:15:12,290 --> 00:15:13,463
‫à validação.

259
00:15:16,312 --> 00:15:17,980
‫Vamos enviar novamente e agora obtemos

260
00:15:17,980 --> 00:15:20,100
‫o erro de que não há nenhum

261
00:15:20,100 --> 00:15:21,420
‫usuário com este

262
00:15:21,420 --> 00:15:24,140
‫endereço de e-mail e isso é porque não especificamos

263
00:15:24,140 --> 00:15:26,103
‫nenhum endereço de e-mail no corpo.

264
00:15:28,390 --> 00:15:29,680
‫Nós testamos isso

265
00:15:29,680 --> 00:15:32,300
‫e agora é hora de realmente testá-lo

266
00:15:32,300 --> 00:15:34,093
‫com um e-mail de usuário.

267
00:15:43,409 --> 00:15:44,440
‫Tudo bem.

268
00:15:44,440 --> 00:15:46,380
‫E agora não deve

269
00:15:46,380 --> 00:15:49,320
‫fazer nada, porque não estamos enviando nenhuma resposta.

270
00:15:49,320 --> 00:15:50,700
‫Vamos apenas cancelar

271
00:15:50,700 --> 00:15:52,540
‫isso porque tudo que eu estava

272
00:15:52,540 --> 00:15:55,227
‫realmente interessado é em ver esses tokens aqui e

273
00:15:55,227 --> 00:15:57,830
‫também em dar uma olhada no objeto de usuário.

274
00:15:57,830 --> 00:16:01,050
‫Este aqui é o token de redefinição original, então

275
00:16:01,050 --> 00:16:04,150
‫você vê que é uma string hexadecimal aleatória

276
00:16:04,150 --> 00:16:06,593
‫e então temos a criptografada aqui.

277
00:16:07,840 --> 00:16:11,330
‫Este lembrete é aquele que não deveria estar no

278
00:16:11,330 --> 00:16:13,663
‫banco de dados, terminando em a901.

279
00:16:14,930 --> 00:16:16,230
‫Vamos dar uma olhada nisso.

280
00:16:18,410 --> 00:16:20,460
‫E, de fato, aqui

281
00:16:20,460 --> 00:16:24,740
‫está, token de redefinição de senha terminando neste a901.

282
00:16:24,740 --> 00:16:28,960
‫E também a data, que na verdade é daqui a 10 minutos.

283
00:16:28,960 --> 00:16:31,753
‫Agora você sabe a que horas estou gravando este vídeo.

284
00:16:33,130 --> 00:16:35,340
‫Enfim, mas funcionou muito bem.

285
00:16:35,340 --> 00:16:37,890
‫E esta é realmente a primeira

286
00:16:37,890 --> 00:16:41,561
‫parte da criação da funcionalidade de redefinição de senha.

287
00:16:41,561 --> 00:16:43,140
‫No próximo vídeo, enviaremos

288
00:16:43,140 --> 00:16:46,840
‫este token aqui por e-mail para o usuário e, na

289
00:16:46,840 --> 00:16:49,500
‫verdade, preparamos um vídeo separado apenas para

290
00:16:49,500 --> 00:16:52,370
‫aprender como realmente enviar e-mail com node

291
00:16:52,370 --> 00:16:53,470
‫para js.

292
00:16:53,470 --> 00:16:55,100
‫É muito divertido,

293
00:16:55,100 --> 00:16:58,363
‫então não espere para ir para lá imediatamente.

