﻿1
00:00:00,960 --> 00:00:02,570
‫Instrutor: Portanto, agora precisamos

2
00:00:02,570 --> 00:00:06,600
‫enviar o token de redefinição de senha por e-mail para o usuário.

3
00:00:06,600 --> 00:00:08,860
‫E então, nesta aula, vamos

4
00:00:08,860 --> 00:00:12,140
‫aprender como enviar e-mail usando uma solução muito

5
00:00:12,140 --> 00:00:13,630
‫popular chamada Nodemailer.

6
00:00:15,154 --> 00:00:17,600
‫Mas antes de fazermos isso, eu realmente queria

7
00:00:17,600 --> 00:00:20,840
‫mostrar a vocês o efeito de não ter essa opção aqui,

8
00:00:20,840 --> 00:00:23,540
‫porque na verdade eu nunca mostrei a vocês antes.

9
00:00:23,540 --> 00:00:26,543
‫Então, vamos cortar aqui, tente agora, novamente, e

10
00:00:28,910 --> 00:00:31,720
‫agora você verá todos esses erros surgindo,

11
00:00:31,720 --> 00:00:33,890
‫como confirme sua senha.

12
00:00:33,890 --> 00:00:36,010
‫E, na verdade, deveria haver mais,

13
00:00:36,010 --> 00:00:39,340
‫mas, bem, agora este é o primeiro que você recebe.

14
00:00:39,340 --> 00:00:41,400
‫Basicamente, porque não temos nenhum

15
00:00:41,400 --> 00:00:43,650
‫valor no campo de confirmação de senha.

16
00:00:43,650 --> 00:00:44,483
‫OK?

17
00:00:44,483 --> 00:00:46,600
‫E então, novamente, isso é por causa

18
00:00:46,600 --> 00:00:49,330
‫da validação e então novamente podemos, é claro, desligá-lo

19
00:00:49,330 --> 00:00:51,083
‫facilmente com esta opção.

20
00:00:53,430 --> 00:00:56,600
‫De qualquer forma, vamos criar uma função de tratamento de

21
00:00:56,600 --> 00:00:59,580
‫e-mail que podemos usar em todo o nosso aplicativo.

22
00:00:59,580 --> 00:01:00,860
‫Vou fazer isso

23
00:01:00,860 --> 00:01:02,673
‫aqui mesmo na pasta Utilitários,

24
00:01:04,210 --> 00:01:08,440
‫novamente, e simplesmente chamando de e-mail. js.

25
00:01:08,440 --> 00:01:09,650
‫Tudo bem?

26
00:01:09,650 --> 00:01:11,410
‫E antes de

27
00:01:11,410 --> 00:01:14,240
‫qualquer coisa, vamos instalar o pacote Nodemailer.

28
00:01:14,240 --> 00:01:16,120
‫Esse é o pacote que mencionei no

29
00:01:16,120 --> 00:01:17,390
‫início, que usaremos

30
00:01:17,390 --> 00:01:20,723
‫para enviar e-mail usando o Node. js.

31
00:01:23,130 --> 00:01:27,620
‫Então, como sempre, npm instale o nodemailer.

32
00:01:34,170 --> 00:01:35,123
‫E aqui.

33
00:01:42,674 --> 00:01:46,423
‫Tudo bem, e agora vamos criar essa função aqui.

34
00:01:49,500 --> 00:01:51,113
‫E-mail constante, ok,

35
00:01:52,880 --> 00:01:54,350
‫e

36
00:01:54,350 --> 00:01:58,060
‫aqui, vamos passar algumas opções basicamente.

37
00:01:58,060 --> 00:02:01,090
‫Então, o endereço de e-mail para o qual queremos enviar

38
00:02:01,090 --> 00:02:03,780
‫um e-mail, a linha de assunto, o conteúdo do

39
00:02:03,780 --> 00:02:05,803
‫e-mail e talvez algumas outras coisas.

40
00:02:07,625 --> 00:02:08,780
‫Tudo bem.

41
00:02:08,780 --> 00:02:11,180
‫E agora precisamos seguir três

42
00:02:11,180 --> 00:02:13,950
‫passos para enviar emails com o Nodemailer.

43
00:02:15,120 --> 00:02:18,783
‫Então, primeiro, precisamos criar um transportador.

44
00:02:23,950 --> 00:02:24,963
‫Em

45
00:02:27,340 --> 00:02:31,777
‫segundo lugar, precisamos definir as opções de email, basicamente,

46
00:02:35,330 --> 00:02:36,373
‫e então

47
00:02:37,930 --> 00:02:41,820
‫no final, realmente enviar o email com Nodemailer.

48
00:02:41,820 --> 00:02:42,960
‫OK?

49
00:02:42,960 --> 00:02:46,260
‫Então, o transportador que fizemos na primeira etapa aqui,

50
00:02:46,260 --> 00:02:50,790
‫é basicamente um serviço que vai realmente enviar o e-mail, porque não

51
00:02:50,790 --> 00:02:53,610
‫é um nó. js que irá

52
00:02:53,610 --> 00:02:55,220
‫enviar o próprio e-mail.

53
00:02:55,220 --> 00:02:57,720
‫É apenas um serviço que definimos aqui.

54
00:02:57,720 --> 00:03:00,340
‫Algo como o Gmail, por exemplo.

55
00:03:00,340 --> 00:03:02,270
‫Bem, o Gmail não é realmente

56
00:03:02,270 --> 00:03:03,370
‫o serviço

57
00:03:03,370 --> 00:03:05,760
‫que vamos usar, mas deixe-me mostrar rapidamente como

58
00:03:05,760 --> 00:03:08,350
‫ele funciona com o Gmail, porque sei que

59
00:03:08,350 --> 00:03:10,810
‫muitas pessoas vão se interessar por isso, ok?

60
00:03:10,810 --> 00:03:15,120
‫De qualquer forma, precisamos sempre criar um transportador, e é sempre

61
00:03:15,120 --> 00:03:16,260
‫o mesmo,

62
00:03:16,260 --> 00:03:18,210
‫não importa qual serviço usaremos.

63
00:03:20,070 --> 00:03:22,410
‫Portanto, o transportador será o

64
00:03:22,410 --> 00:03:24,577
‫nodemailer. createTransport e

65
00:03:28,660 --> 00:03:31,550
‫então, é claro, precisamos de algumas opções lá.

66
00:03:31,550 --> 00:03:32,920
‫Tudo bem?

67
00:03:32,920 --> 00:03:35,820
‫Portanto, podemos especificar o serviço e podemos

68
00:03:37,620 --> 00:03:40,360
‫dizer que queremos usar o Gmail.

69
00:03:40,360 --> 00:03:42,110
‫Então, assim.

70
00:03:42,110 --> 00:03:44,530
‫E há alguns serviços bem

71
00:03:44,530 --> 00:03:47,260
‫conhecidos que o Nodemailer sabe como lidar,

72
00:03:47,260 --> 00:03:49,870
‫então não temos que configurá-los manualmente.

73
00:03:49,870 --> 00:03:52,660
‫E então o Gmail é apenas um deles.

74
00:03:52,660 --> 00:03:56,863
‫Mas também tem o Yahoo, ou o Hotmail, ou muitos outros, ok?

75
00:03:57,760 --> 00:03:58,980
‫Então esse

76
00:03:58,980 --> 00:04:03,020
‫é o serviço e também precisamos especificar a propriedade

77
00:04:03,020 --> 00:04:04,783
‫auth, basicamente para autenticação.

78
00:04:06,150 --> 00:04:08,730
‫Portanto, precisamos de um usuário e uma senha.

79
00:04:08,730 --> 00:04:10,380
‫E assim como antes, salvamos

80
00:04:10,380 --> 00:04:14,253
‫esse tipo de coisa em nossa configuração. n arquivo.

81
00:04:15,840 --> 00:04:16,673
‫Tudo bem.

82
00:04:17,930 --> 00:04:18,963
‫E-mail, é

83
00:04:21,090 --> 00:04:22,253
‫um nome de

84
00:04:23,500 --> 00:04:26,700
‫usuário, e agora não vou usar um endereço real

85
00:04:26,700 --> 00:04:28,963
‫do Gmail aqui porque, novamente, não

86
00:04:29,910 --> 00:04:34,140
‫estamos usando o Gmail, mas apenas como um exemplo aqui, tudo bem.

87
00:04:34,140 --> 00:04:36,910
‫Sua senha.

88
00:04:36,910 --> 00:04:38,350
‫Tudo bem.

89
00:04:38,350 --> 00:04:41,350
‫Concluímos, digamos, processar ponto final

90
00:04:43,090 --> 00:04:44,830
‫ponto EMAIL_USERNAME a

91
00:04:47,414 --> 00:04:48,581
‫senha

92
00:04:53,780 --> 00:04:56,113
‫processar ponto final ponto

93
00:04:58,310 --> 00:04:59,800
‫EMAIL_PASSWORD e

94
00:05:02,650 --> 00:05:04,723
‫espero ter escrito corretamente.

95
00:05:05,580 --> 00:05:06,413
‫OK?

96
00:05:06,413 --> 00:05:07,970
‫E então esta é

97
00:05:07,970 --> 00:05:10,610
‫a configuração para o transporte no Nodemailer.

98
00:05:10,610 --> 00:05:12,400
‫Então, em sua conta do

99
00:05:12,400 --> 00:05:14,160
‫Gmail, você terá que

100
00:05:14,160 --> 00:05:17,346
‫ativar algo chamado de opção de aplicativo menos segura.

101
00:05:17,346 --> 00:05:18,896
‫Então, deixe-me escrever isso aqui.

102
00:05:27,609 --> 00:05:29,640
‫E, novamente, não vou fazer isso

103
00:05:29,640 --> 00:05:31,020
‫aqui, mas sei

104
00:05:31,020 --> 00:05:33,160
‫que muitas pessoas vão realmente querer usá-lo.

105
00:05:33,160 --> 00:05:35,710
‫E a razão pela qual não estamos usando

106
00:05:35,710 --> 00:05:37,200
‫o Gmail neste aplicativo é

107
00:05:37,200 --> 00:05:40,170
‫porque o Gmail não é uma boa ideia para um

108
00:05:40,170 --> 00:05:41,510
‫aplicativo de produção.

109
00:05:41,510 --> 00:05:44,170
‫E isso é basicamente o que estamos tentando construir aqui.

110
00:05:44,170 --> 00:05:45,003
‫OK?

111
00:05:45,003 --> 00:05:47,600
‫Então, usando o Gmail para esse

112
00:05:47,600 --> 00:05:50,670
‫tipo de coisa, você só pode enviar 500 e-mails

113
00:05:50,670 --> 00:05:53,520
‫por dia, e também, provavelmente, muito rapidamente, será

114
00:05:53,520 --> 00:05:57,410
‫marcado como um spammer e, a partir daí, só irá piorar.

115
00:05:57,410 --> 00:05:58,330
‫Tudo bem?

116
00:05:58,330 --> 00:06:00,710
‫Então, a menos que seja como um aplicativo

117
00:06:00,710 --> 00:06:02,780
‫privado, e você apenas envia e-mails para

118
00:06:02,780 --> 00:06:04,470
‫si mesmo, ou, tipo,

119
00:06:04,470 --> 00:06:07,090
‫10 amigos, bem, então você deve usar outro serviço.

120
00:06:07,090 --> 00:06:10,680
‫E alguns bem conhecidos são SendGrid e Mailgun.

121
00:06:10,680 --> 00:06:13,740
‫E, na verdade, usaremos o SendGrid um pouco mais

122
00:06:13,740 --> 00:06:15,180
‫adiante neste curso.

123
00:06:15,180 --> 00:06:17,400
‫Agora, o que vamos fazer

124
00:06:17,400 --> 00:06:19,920
‫agora é usar um serviço de desenvolvimento

125
00:06:19,920 --> 00:06:23,740
‫especial, que basicamente falsifica para enviar e-mails para endereços reais.

126
00:06:23,740 --> 00:06:26,660
‫Mas, na realidade, esses e-mails acabam presos em uma caixa

127
00:06:26,660 --> 00:06:29,920
‫de entrada de desenvolvimento, para que possamos dar uma olhada em

128
00:06:29,920 --> 00:06:32,320
‫como eles ficarão mais tarde na produção.

129
00:06:32,320 --> 00:06:33,270
‫Tudo bem?

130
00:06:33,270 --> 00:06:35,700
‫Esse serviço é chamado Mailtrap, e agora

131
00:06:35,700 --> 00:06:37,893
‫vamos nos inscrever para isso.

132
00:06:41,190 --> 00:06:42,023
‫Então.

133
00:06:43,500 --> 00:06:45,883
‫Mailtrap. io, tudo

134
00:06:47,810 --> 00:06:48,643
‫bem?

135
00:06:48,643 --> 00:06:51,050
‫Então, e como eu disse, teste de e-mail

136
00:06:51,050 --> 00:06:52,940
‫seguro para teste e desenvolvimento.

137
00:06:52,940 --> 00:06:54,280
‫Então, basicamente, com

138
00:06:54,280 --> 00:06:57,410
‫este serviço, você pode fingir enviar e-mails para clientes,

139
00:06:57,410 --> 00:07:00,230
‫mas esses e-mails nunca chegarão a esses clientes

140
00:07:00,230 --> 00:07:03,670
‫e, em vez disso, ficarão presos em seu Mailtrap, certo?

141
00:07:03,670 --> 00:07:05,660
‫E dessa forma você

142
00:07:05,660 --> 00:07:09,150
‫não pode enviar acidentalmente alguns e-mails de desenvolvimento para

143
00:07:09,150 --> 00:07:11,540
‫todos os seus clientes ou usuários, ok.

144
00:07:11,540 --> 00:07:13,450
‫Então vá em frente e inscreva-se agora.

145
00:07:13,450 --> 00:07:15,430
‫Eu, claro, já tenho minha conta, então

146
00:07:15,430 --> 00:07:17,040
‫vou simplesmente fazer login agora.

147
00:07:17,040 --> 00:07:19,390
‫Então, nos vemos em um segundo, depois

148
00:07:19,390 --> 00:07:21,600
‫de criar sua conta gratuita.

149
00:07:21,600 --> 00:07:24,350
‫Certo, então, depois de criar sua

150
00:07:24,350 --> 00:07:27,290
‫conta, ela provavelmente ficará um pouco assim.

151
00:07:27,290 --> 00:07:29,630
‫Agora, você não terá nenhuma caixa de entrada por

152
00:07:29,630 --> 00:07:31,810
‫enquanto, então vamos apenas criar uma nova, com

153
00:07:31,810 --> 00:07:32,970
‫o nome de natours.

154
00:07:32,970 --> 00:07:36,200
‫Então, eu já tenho um, mas basta criar um novo aqui, com

155
00:07:36,200 --> 00:07:39,260
‫o nome natours, e clicar em Criar caixa de entrada.

156
00:07:39,260 --> 00:07:40,093
‫Tudo bem?

157
00:07:40,093 --> 00:07:41,520
‫Então podemos abri-lo

158
00:07:41,520 --> 00:07:44,280
‫e você vê que não temos e-mail neste

159
00:07:44,280 --> 00:07:45,950
‫momento, mas o que

160
00:07:45,950 --> 00:07:48,170
‫importa agora são essas credenciais aqui.

161
00:07:48,170 --> 00:07:50,310
‫Como você pode ver, temos nosso host

162
00:07:50,310 --> 00:07:53,120
‫aqui, a porta, o nome de usuário e a senha.

163
00:07:53,120 --> 00:07:54,990
‫E é isso que vamos

164
00:07:54,990 --> 00:07:57,580
‫especificar em nosso transporte no Nodemailer agora.

165
00:07:57,580 --> 00:07:58,413
‫Tudo bem?

166
00:07:58,413 --> 00:08:00,810
‫Então, vamos começar com o host, bem,

167
00:08:00,810 --> 00:08:02,060
‫na verdade, com

168
00:08:02,060 --> 00:08:04,320
‫o nome de usuário, então esses

169
00:08:04,320 --> 00:08:07,933
‫dois, eu só preciso copiar, vamos copiá-lo para nosso arquivo

170
00:08:09,100 --> 00:08:11,323
‫de configuração, esse é o nome

171
00:08:13,220 --> 00:08:14,723
‫de usuário, essa é

172
00:08:18,620 --> 00:08:21,813
‫a senha, e agora também precisamos especifique o host.

173
00:08:28,580 --> 00:08:31,830
‫Ok, isso é porque Mailtrap não é

174
00:08:31,830 --> 00:08:35,493
‫um desses serviços predefinidos que vem com o Nodemailer.

175
00:08:39,720 --> 00:08:40,553
‫Tudo bem.

176
00:08:44,800 --> 00:08:46,433
‫A porta é 25.

177
00:08:47,780 --> 00:08:49,660
‫Portanto, salve-o e, em

178
00:08:49,660 --> 00:08:53,390
‫seguida, vamos nos livrar disso, e o que

179
00:08:53,390 --> 00:08:56,690
‫eu preciso especificar em vez disso é

180
00:08:57,730 --> 00:08:58,803
‫o

181
00:09:00,040 --> 00:09:01,460
‫host para e-mail,

182
00:09:01,460 --> 00:09:03,430
‫host e, claro, a porta.

183
00:09:03,430 --> 00:09:05,773
‫Então, tudo o que acabamos de salvar antes.

184
00:09:10,800 --> 00:09:12,950
‫Tudo bem, então a autenticação aqui é

185
00:09:12,950 --> 00:09:14,323
‫exatamente a mesma.

186
00:09:15,790 --> 00:09:17,643
‫Vamos nos livrar disso também

187
00:09:19,888 --> 00:09:22,200
‫e passar para a etapa número dois.

188
00:09:22,200 --> 00:09:24,913
‫Então, basicamente definindo algumas opções para nosso e-mail.

189
00:09:29,440 --> 00:09:31,700
‫Tudo bem, poderíamos, é claro, executar

190
00:09:31,700 --> 00:09:34,320
‫as etapas dois e três ao mesmo tempo,

191
00:09:34,320 --> 00:09:36,970
‫mas gosto de simplesmente preferir essas opções aqui primeiro.

192
00:09:37,810 --> 00:09:39,910
‫Ok, aqui especificamos de onde

193
00:09:39,910 --> 00:09:41,603
‫vem o e-mail, o

194
00:09:42,660 --> 00:09:43,713
‫nome

195
00:09:45,890 --> 00:09:48,963
‫e o endereço de e-mail como este.

196
00:09:52,800 --> 00:09:55,453
‫Em seguida, precisamos do endereço do

197
00:09:57,500 --> 00:10:01,153
‫destinatário e, para esse, irei especificar como uma opção,

198
00:10:03,200 --> 00:10:04,033
‫certo?

199
00:10:04,033 --> 00:10:06,560
‫Então, basicamente, vindo como um argumento para esta função.

200
00:10:06,560 --> 00:10:08,650
‫Portanto, este objeto de opções

201
00:10:08,650 --> 00:10:11,173
‫aqui, é aquele que passamos para a função.

202
00:10:12,110 --> 00:10:13,370
‫Tudo bem.

203
00:10:13,370 --> 00:10:17,263
‫Então, na verdade, o mesmo para o assunto e para o texto.

204
00:10:18,990 --> 00:10:20,593
‫Vamos apenas duplicar

205
00:10:26,250 --> 00:10:28,170
‫isso aqui, então o assunto

206
00:10:29,300 --> 00:10:31,720
‫e então apenas especificamos a propriedade text,

207
00:10:31,720 --> 00:10:34,793
‫e essa, nas opções, estou apenas chamando de mensagem.

208
00:10:35,790 --> 00:10:38,070
‫Tudo bem, então esta é basicamente a

209
00:10:38,070 --> 00:10:39,950
‫versão em texto do e-mail.

210
00:10:39,950 --> 00:10:44,220
‫Mas também podemos especificar a propriedade HTML.

211
00:10:44,220 --> 00:10:48,220
‫Ok, então agora podemos converter esta mensagem para HTML.

212
00:10:48,220 --> 00:10:50,460
‫E mais tarde, vamos fazer isso, mas

213
00:10:50,460 --> 00:10:54,780
‫por enquanto, vamos mantê-lo simples e não especificar o HTML aqui, de forma alguma.

214
00:10:54,780 --> 00:10:55,613
‫OK?

215
00:10:55,613 --> 00:10:57,993
‫Portanto, basta deixar no texto.

216
00:10:59,320 --> 00:11:00,153
‫OK!

217
00:11:00,153 --> 00:11:01,773
‫E finalmente, no

218
00:11:03,050 --> 00:11:06,723
‫final, transporter, então esse é o objeto transporter que

219
00:11:06,723 --> 00:11:09,440
‫criamos bem aqui no início, e

220
00:11:09,440 --> 00:11:11,890
‫sobre isso, podemos chamar sendMail

221
00:11:14,470 --> 00:11:18,983
‫e para isso precisamos passar nossas opções de mail, ok?

222
00:11:19,900 --> 00:11:22,640
‫E agora isso realmente retorna uma promessa.

223
00:11:22,640 --> 00:11:25,890
‫Ok, então novamente, esta é uma função assíncrona,

224
00:11:25,890 --> 00:11:29,480
‫e como não queremos trabalhar diretamente com Promises, vamos usar

225
00:11:29,480 --> 00:11:30,933
‫async / await.

226
00:11:32,890 --> 00:11:33,723
‫Tudo bem.

227
00:11:34,770 --> 00:11:37,450
‫Declarar isso como uma função assíncrona

228
00:11:37,450 --> 00:11:39,023
‫e pronto.

229
00:11:40,030 --> 00:11:41,070
‫Tudo bem.

230
00:11:41,070 --> 00:11:43,250
‫Não queremos armazenar nenhum resultado aqui,

231
00:11:43,250 --> 00:11:46,423
‫o que poderíamos, mas não estou realmente interessado nisso.

232
00:11:47,940 --> 00:11:51,930
‫Ok, e agora vamos simplesmente exportá-lo como padrão

233
00:11:51,930 --> 00:11:54,263
‫a partir deste módulo.

234
00:11:57,990 --> 00:11:59,360
‫Ok, parece bom!

235
00:11:59,360 --> 00:12:02,890
‫Agora vamos prosseguir e realmente tentar isso.

236
00:12:02,890 --> 00:12:07,050
‫E então, para começar, precisamos importá-lo aqui, é claro.

237
00:12:07,050 --> 00:12:09,003
‫Então, vamos apenas duplicar isso

238
00:12:13,270 --> 00:12:14,370
‫aqui, então

239
00:12:14,370 --> 00:12:19,163
‫este é o e-mail, e a função se chama sendEmail, eu acho.

240
00:12:21,573 --> 00:12:22,406
‫OK.

241
00:12:22,406 --> 00:12:26,513
‫Portanto, vamos voltar à nossa função de middleware aqui e

242
00:12:28,540 --> 00:12:31,397
‫começar definindo a URL de redefinição.

243
00:12:33,890 --> 00:12:37,810
‫Portanto, o ideal é que o usuário clique neste e-mail

244
00:12:37,810 --> 00:12:41,240
‫e possa fazer a solicitação a partir daí.

245
00:12:41,240 --> 00:12:42,500
‫E isso vai

246
00:12:42,500 --> 00:12:44,650
‫funcionar mais tarde, quando implementarmos nosso

247
00:12:44,650 --> 00:12:48,170
‫site dinâmico, mas ainda assim, queremos criar essa URL aqui, para

248
00:12:48,170 --> 00:12:50,350
‫que o usuário possa simplesmente copiá-la, para

249
00:12:50,350 --> 00:12:52,433
‫tornar mais fácil fazer essa solicitação.

250
00:12:53,720 --> 00:12:56,130
‫Ok, então basicamente precisamos

251
00:12:57,350 --> 00:13:00,750
‫recriar essa estrutura de URL que temos aqui.

252
00:13:00,750 --> 00:13:02,627
‫Portanto, este é para esquecer a

253
00:13:02,627 --> 00:13:04,227
‫senha e vamos salvá-la aqui.

254
00:13:10,670 --> 00:13:14,910
‫Então, esqueci a senha e agora a URL que estamos criando

255
00:13:14,910 --> 00:13:17,820
‫é, na verdade, para redefinir a senha.

256
00:13:17,820 --> 00:13:21,340
‫Então, lembre-se, nós realmente implementamos isso antes.

257
00:13:21,340 --> 00:13:22,173
‫OK.

258
00:13:22,173 --> 00:13:24,020
‫Vamos apenas

259
00:13:27,760 --> 00:13:31,750
‫copiar aqui, então redefina a senha, certo?

260
00:13:31,750 --> 00:13:33,940
‫E isso irá usar o

261
00:13:33,940 --> 00:13:35,540
‫token como parâmetro.

262
00:13:35,540 --> 00:13:39,120
‫Ok, então vamos colocar qualquer token aleatório aqui por enquanto.

263
00:13:39,120 --> 00:13:40,563
‫Portanto, não importa de forma alguma.

264
00:13:41,610 --> 00:13:42,860
‫Deixe-me

265
00:13:45,150 --> 00:13:50,150
‫apenas salvá-lo aqui, como redefinir a senha.

266
00:13:50,360 --> 00:13:51,193
‫OK.

267
00:13:51,193 --> 00:13:53,970
‫E também não é GET, também não

268
00:13:53,970 --> 00:13:56,320
‫é POST, mas é PATCH, pois

269
00:13:56,320 --> 00:13:59,490
‫o resultado disso será a modificação da propriedade da

270
00:13:59,490 --> 00:14:01,560
‫senha no documento do usuário.

271
00:14:01,560 --> 00:14:05,470
‫E então o PATCH é o melhor, certo?

272
00:14:05,470 --> 00:14:09,023
‫Portanto, vamos mudar rapidamente nossa implementação de rota para isso.

273
00:14:10,720 --> 00:14:14,410
‫Então, está aqui em userRoute, então não

274
00:14:14,410 --> 00:14:17,480
‫é POST, é PATCH,

275
00:14:17,480 --> 00:14:20,710
‫e também queremos especificar um parâmetro.

276
00:14:20,710 --> 00:14:22,330
‫Portanto, lembre-se de como fazemos isso.

277
00:14:22,330 --> 00:14:24,030
‫Então é como aqui embaixo.

278
00:14:24,030 --> 00:14:26,960
‫Outra barra, dois pontos e o nome

279
00:14:26,960 --> 00:14:29,593
‫do parâmetro, que será o token.

280
00:14:31,390 --> 00:14:32,990
‫Ok, vamos construir isso

281
00:14:32,990 --> 00:14:34,870
‫agora, começando com o protocolo.

282
00:14:34,870 --> 00:14:38,340
‫Então, HTTP ou HTTPS, ok?

283
00:14:38,340 --> 00:14:42,283
‫E basicamente vamos obter esses dados de nossa solicitação.

284
00:14:43,180 --> 00:14:45,720
‫Então, isso é armazenado no protocolo de

285
00:14:47,250 --> 00:14:51,750
‫ponto de solicitação, em seguida, dois pontos, barra, barra e, em seguida, o host, certo?

286
00:14:51,750 --> 00:14:54,590
‫Então, basicamente estamos preparando este aqui para funcionar

287
00:14:54,590 --> 00:14:57,260
‫tanto no desenvolvimento quanto na produção.

288
00:14:57,260 --> 00:15:00,630
‫Portanto, solicite ponto get e, em seguida,

289
00:15:00,630 --> 00:15:01,513
‫host.

290
00:15:02,760 --> 00:15:04,950
‫Tudo bem, então é assim que obtemos

291
00:15:04,950 --> 00:15:09,100
‫o host e, em seguida, slash api slash versão um, e acho que

292
00:15:09,100 --> 00:15:11,860
‫não é ideal definir uma camada codificada como

293
00:15:11,860 --> 00:15:13,170
‫esta, mas, novamente,

294
00:15:13,170 --> 00:15:15,260
‫isso é algo que iremos corrigir

295
00:15:15,260 --> 00:15:17,080
‫um pouco mais tarde, Certo?

296
00:15:17,080 --> 00:15:20,100
‫E vejo que isso não é correto.

297
00:15:20,100 --> 00:15:22,680
‫Essas chaves devem estar lá.

298
00:15:22,680 --> 00:15:24,263
‫Então, agora, usuários,

299
00:15:25,676 --> 00:15:26,843
‫resetPassword,

300
00:15:28,910 --> 00:15:32,830
‫e então outra barra e, finalmente, o token.

301
00:15:32,830 --> 00:15:34,833
‫Ok, então, resetToken.

302
00:15:35,790 --> 00:15:36,623
‫Tudo bem?

303
00:15:36,623 --> 00:15:38,780
‫E como discutimos antes, na última

304
00:15:38,780 --> 00:15:40,000
‫aula, aqui realmente

305
00:15:40,000 --> 00:15:44,000
‫temos que enviar o resetToken simples e original, e não o criptografado.

306
00:15:44,000 --> 00:15:44,833
‫Tudo bem?

307
00:15:44,833 --> 00:15:46,170
‫Iremos então, na

308
00:15:46,170 --> 00:15:49,810
‫próxima etapa, comparar o token original com o criptografado.

309
00:15:49,810 --> 00:15:52,780
‫Então, novamente, exatamente como discutimos no último vídeo.

310
00:15:52,780 --> 00:15:56,657
‫Salve aqui agora, e esse é o nosso URL de redefinição.

311
00:16:00,940 --> 00:16:04,490
‫E agora, com base neste URL, vamos criar rapidamente

312
00:16:04,490 --> 00:16:06,233
‫a mensagem aqui também.

313
00:16:07,950 --> 00:16:11,113
‫Então, esqueceu sua senha?

314
00:16:13,120 --> 00:16:17,720
‫Envie uma solicitação PATCH com sua nova senha

315
00:16:18,900 --> 00:16:21,650
‫e senhaConfirme, é claro, para

316
00:16:24,380 --> 00:16:26,273
‫a URL de

317
00:16:30,850 --> 00:16:34,270
‫redefinição que acabamos de criar, certo?

318
00:16:34,270 --> 00:16:37,500
‫Então, basicamente, dando ao usuário algumas instruções aqui.

319
00:16:37,500 --> 00:16:39,373
‫Então, em uma nova linha,

320
00:16:40,670 --> 00:16:44,053
‫também dizemos, se você não esqueceu sua senha,

321
00:16:47,820 --> 00:16:49,610
‫ignore este e-mail.

322
00:16:49,610 --> 00:16:51,690
‫Então, essa é uma mensagem comum e,

323
00:16:51,690 --> 00:16:54,320
‫novamente, tenho certeza de que você viu de uma forma

324
00:16:54,320 --> 00:16:55,963
‫ou de outra, tudo bem.

325
00:16:56,860 --> 00:16:59,900
‫Então, vamos agora, finalmente, enviar o e-mail

326
00:16:59,900 --> 00:17:02,020
‫e lembrar que sendEmail é

327
00:17:02,020 --> 00:17:03,640
‫uma função assíncrona.

328
00:17:03,640 --> 00:17:06,470
‫E então, portanto, precisamos aguardar por aqui.

329
00:17:06,470 --> 00:17:07,303
‫OK?

330
00:17:07,303 --> 00:17:09,693
‫Porque, é claro, vai retornar uma promessa.

331
00:17:11,470 --> 00:17:14,850
‫E lembre-se agora que a função sendEmail aqui

332
00:17:14,850 --> 00:17:17,490
‫pega um objeto com algumas opções.

333
00:17:17,490 --> 00:17:22,490
‫Portanto, o e-mail é do usuário. email, certo?

334
00:17:23,730 --> 00:17:28,150
‫Ou também poderíamos dizer, req. corpo. o email.

335
00:17:28,150 --> 00:17:31,233
‫Então é exatamente a mesma coisa, certo?

336
00:17:32,900 --> 00:17:35,773
‫Então, o assunto que

337
00:17:36,690 --> 00:17:41,363
‫queremos dizer é, Seu token de redefinição de senha.

338
00:17:44,850 --> 00:17:48,540
‫Digamos desde já que só é válido por 10

339
00:17:48,540 --> 00:17:52,290
‫minutos, para que o usuário saiba que tem que se apressar.

340
00:17:52,290 --> 00:17:55,113
‫Ok, e finalmente, a mensagem também.

341
00:17:56,940 --> 00:17:57,773
‫OK.

342
00:17:57,773 --> 00:18:00,080
‫Então, aguardamos isso, e

343
00:18:00,080 --> 00:18:04,330
‫depois disso, vamos mandar também, é claro, alguma resposta.

344
00:18:04,330 --> 00:18:07,130
‫Ok, então sempre precisa haver uma resposta, caso contrário,

345
00:18:07,130 --> 00:18:08,860
‫como você já sabe,

346
00:18:08,860 --> 00:18:11,970
‫o ciclo de solicitação / resposta nunca vai terminar.

347
00:18:11,970 --> 00:18:14,700
‫Então, simplesmente enviamos um código

348
00:18:14,700 --> 00:18:18,720
‫200 e, em seguida, uma mensagem bem formatada

349
00:18:19,670 --> 00:18:22,023
‫com um status

350
00:18:25,640 --> 00:18:28,550
‫de sucesso e, em seguida, apenas

351
00:18:28,550 --> 00:18:32,410
‫uma mensagem rápida dizendo: Token enviado para e-mail.

352
00:18:32,410 --> 00:18:33,243
‫Tudo bem.

353
00:18:33,243 --> 00:18:37,490
‫E, claro, não podemos enviar o token de reinicialização aqui mesmo,

354
00:18:37,490 --> 00:18:40,970
‫pelo adjacente, certo, porque, então, todos poderiam redefinir a

355
00:18:40,970 --> 00:18:42,910
‫senha de qualquer um

356
00:18:42,910 --> 00:18:45,440
‫e assumir qualquer conta que quisessem.

357
00:18:45,440 --> 00:18:47,740
‫E essa é a razão pela qual o

358
00:18:47,740 --> 00:18:49,940
‫enviamos para um endereço de email, porque assumimos

359
00:18:49,940 --> 00:18:51,800
‫que o email é um

360
00:18:51,800 --> 00:18:54,187
‫lugar seguro, ao qual apenas o usuário tem acesso.

361
00:18:54,187 --> 00:18:55,020
‫Tudo bem.

362
00:18:56,990 --> 00:19:00,170
‫Uau, então, este vídeo, novamente, está demorando bastante, mas

363
00:19:00,170 --> 00:19:01,620
‫ainda não terminamos.

364
00:19:01,620 --> 00:19:04,200
‫Estamos quase terminando, mas não de

365
00:19:04,200 --> 00:19:06,590
‫todo, pois pode acontecer um

366
00:19:06,590 --> 00:19:10,560
‫erro, usando este sendEmail, ok, e então nesse caso, queremos,

367
00:19:10,560 --> 00:19:14,100
‫claro, enviar uma mensagem de erro para o cliente.

368
00:19:14,100 --> 00:19:16,720
‫Mas, neste caso, realmente precisamos fazer mais do que

369
00:19:16,720 --> 00:19:18,980
‫simplesmente enviar uma mensagem de erro.

370
00:19:18,980 --> 00:19:22,707
‫Basicamente, precisamos restaurar o token de redefinição de

371
00:19:22,707 --> 00:19:26,660
‫senha e a redefinição de senha expirou que definimos, certo?

372
00:19:26,660 --> 00:19:29,140
‫E agora não é suficiente simplesmente capturar

373
00:19:29,140 --> 00:19:31,340
‫o erro e enviá-lo para

374
00:19:31,340 --> 00:19:34,100
‫o nosso middleware global de tratamento de erros.

375
00:19:34,100 --> 00:19:36,980
‫Mas, em vez disso, precisamos simplesmente adicionar

376
00:19:36,980 --> 00:19:39,660
‫um bloco try-catch bem aqui.

377
00:19:39,660 --> 00:19:42,290
‫Então, novamente, porque nós realmente queremos

378
00:19:42,290 --> 00:19:45,363
‫fazer mais do que simplesmente enviar um erro

379
00:19:46,850 --> 00:19:49,633
‫para o cliente, então tentamos basicamente fazer

380
00:19:50,950 --> 00:19:53,763
‫isso, certo, mas caso haja um erro,

381
00:19:54,660 --> 00:19:57,630
‫então, é claro, este bloco aqui é executado.

382
00:19:57,630 --> 00:19:58,463
‫Tudo bem?

383
00:19:58,463 --> 00:20:01,380
‫Então, o que queremos fazer nesse

384
00:20:01,380 --> 00:20:04,160
‫caso, bem, queremos basicamente, como

385
00:20:04,160 --> 00:20:08,140
‫eu disse, redefinir o token e a propriedade expires.

386
00:20:08,140 --> 00:20:09,620
‫OK.

387
00:20:09,620 --> 00:20:11,850
‫Então, passwordResetToken, e

388
00:20:15,360 --> 00:20:18,950
‫defina-o como undefined, tudo bem.

389
00:20:18,950 --> 00:20:22,053
‫E o mesmo para passwordResetExpires.

390
00:20:24,670 --> 00:20:25,503
‫OK.

391
00:20:25,503 --> 00:20:27,350
‫E então, é claro, assim como

392
00:20:27,350 --> 00:20:30,830
‫antes, isso apenas modifica os dados, mas não os salva de verdade.

393
00:20:30,830 --> 00:20:33,693
‫Então, vamos adicionar, pegar

394
00:20:35,560 --> 00:20:39,730
‫este e, basicamente, salvar os dados neste caso.

395
00:20:39,730 --> 00:20:41,750
‫Ok, e só para terminar,

396
00:20:41,750 --> 00:20:45,140
‫nós, é claro, voltamos com um erro para

397
00:20:45,140 --> 00:20:46,620
‫o próximo middleware.

398
00:20:46,620 --> 00:20:48,223
‫Então, newAppError,

399
00:20:50,970 --> 00:20:55,373
‫Ocorreu um erro ao enviar o e-mail.

400
00:20:57,940 --> 00:20:59,333
‫Tente mais tarde.

401
00:21:00,220 --> 00:21:03,700
‫E, neste caso, o código de erro pode realmente ser 500.

402
00:21:03,700 --> 00:21:06,980
‫Então, isso é realmente então, como um erro que aconteceu

403
00:21:06,980 --> 00:21:09,930
‫no servidor, e então tem que ser um

404
00:21:09,930 --> 00:21:12,893
‫código cinco, e 500 é apenas, tipo, o código padrão.

405
00:21:13,740 --> 00:21:15,160
‫Tudo bem.

406
00:21:15,160 --> 00:21:20,160
‫Então, vamos prosseguir e tentar novamente, tudo bem.

407
00:21:20,830 --> 00:21:25,130
‫Portanto, este é um pouco longo de novo, mas, bem, temos

408
00:21:25,130 --> 00:21:27,200
‫que fazer isso, certo?

409
00:21:27,200 --> 00:21:31,173
‫Então, esqueci a senha, com este e-mail, vamos dar uma olhada.

410
00:21:32,260 --> 00:21:34,270
‫Então isso pode não

411
00:21:34,270 --> 00:21:36,400
‫demorar muito, por causa do envio

412
00:21:36,400 --> 00:21:40,360
‫do e-mail, mas na verdade funcionou agora, levou uns cinco segundos,

413
00:21:40,360 --> 00:21:42,840
‫mas vemos Token enviado para o e-mail.

414
00:21:42,840 --> 00:21:45,770
‫e, como sabemos, como usamos o Mailtrap, ele não enviou

415
00:21:45,770 --> 00:21:49,810
‫este e-mail para hello @ jones. io, mas

416
00:21:49,810 --> 00:21:53,010
‫em vez disso, o e-mail deve

417
00:21:53,010 --> 00:21:55,940
‫estar preso dentro do Mailtrap.

418
00:21:55,940 --> 00:21:59,003
‫E, de fato, aqui no lado esquerdo, agora apareceu.

419
00:21:59,890 --> 00:22:01,170
‫Tudo bem.

420
00:22:01,170 --> 00:22:04,440
‫Então, esse é o e-mail que especificamos e aqui

421
00:22:04,440 --> 00:22:06,467
‫obtemos nosso URL legal.

422
00:22:07,960 --> 00:22:11,980
‫Ok, então aquele que criamos com o protocolo, o

423
00:22:11,980 --> 00:22:15,070
‫host, e também com o token.

424
00:22:15,070 --> 00:22:17,210
‫Então, vamos apenas dar uma

425
00:22:17,210 --> 00:22:18,910
‫olhada se este

426
00:22:18,910 --> 00:22:20,873
‫é realmente nosso token

427
00:22:22,130 --> 00:22:26,690
‫simples, terminando em 88df, e, de fato, temos resetToken aqui, 88df.

428
00:22:26,690 --> 00:22:29,050
‫E agora, no banco de

429
00:22:29,050 --> 00:22:31,890
‫dados, devemos ter o token terminando em 1111.

430
00:22:31,890 --> 00:22:34,883
‫Então, vamos confirmar que, aqui no

431
00:22:35,780 --> 00:22:40,780
‫Compass, dê uma recarga e, de fato, lá vamos nós, ok?

432
00:22:41,470 --> 00:22:45,260
‫E então, novamente, isso aqui é em 10 minutos a partir de agora.

433
00:22:45,260 --> 00:22:47,910
‫Ótimo, então terminamos essa parte.

434
00:22:47,910 --> 00:22:50,290
‫Em seguida, no próximo vídeo, iremos redefinir

435
00:22:50,290 --> 00:22:52,320
‫a senha, com base,

436
00:22:52,320 --> 00:22:54,590
‫é claro, na nova senha que

437
00:22:54,590 --> 00:22:58,030
‫o usuário envia com a solicitação de redefinição de senha.

438
00:22:58,030 --> 00:22:58,993
‫Então, até lá.

