﻿1
00:00:00,890 --> 00:00:04,850
‫-: Então, após a atualização, vamos permitir que o usuário

2
00:00:04,850 --> 00:00:07,293
‫atual basicamente exclua sua conta.

3
00:00:09,070 --> 00:00:12,069
‫Agora, quando um usuário decide excluir sua

4
00:00:12,069 --> 00:00:16,390
‫conta, na verdade não excluímos esse documento do banco de dados.

5
00:00:16,390 --> 00:00:20,580
‫Mas, em vez disso, apenas definimos a conta como inativa.

6
00:00:20,580 --> 00:00:23,170
‫Para que o usuário possa em

7
00:00:23,170 --> 00:00:26,910
‫algum momento no futuro reativar a conta e também para

8
00:00:26,910 --> 00:00:29,820
‫que possamos basicamente acessar a conta no

9
00:00:29,820 --> 00:00:33,450
‫futuro, mesmo que oficialmente, digamos que ela tenha sido excluída.

10
00:00:33,450 --> 00:00:34,440
‫OK?

11
00:00:34,440 --> 00:00:36,380
‫Portanto, para implementar isso, primeiro

12
00:00:36,380 --> 00:00:39,430
‫precisamos criar uma nova propriedade em nosso esquema.

13
00:00:39,430 --> 00:00:40,850
‫Então, vamos

14
00:00:40,850 --> 00:00:42,090
‫lá.

15
00:00:42,090 --> 00:00:43,740
‫E agora queremos

16
00:00:45,440 --> 00:00:47,163
‫ter um campo chamado ativo.

17
00:00:48,210 --> 00:00:49,043
‫OK.

18
00:00:50,550 --> 00:00:52,150
‫Que deve ser do

19
00:00:54,370 --> 00:00:55,550
‫tipo Booleano.

20
00:00:55,550 --> 00:00:57,430
‫Ok, e por padrão isso

21
00:00:57,430 --> 00:00:58,263
‫vai

22
00:00:59,170 --> 00:01:00,040
‫ser verdade.

23
00:01:00,040 --> 00:01:02,180
‫Portanto, qualquer usuário criado como

24
00:01:02,180 --> 00:01:04,430
‫novo é, obviamente, um usuário ativo

25
00:01:04,430 --> 00:01:07,300
‫e, portanto, o Booleano é definido como verdadeiro.

26
00:01:07,300 --> 00:01:11,360
‫Além disso, não queremos mostrar isso na saída, ok.

27
00:01:11,360 --> 00:01:13,350
‫Porque basicamente queremos ocultar

28
00:01:13,350 --> 00:01:16,077
‫esse detalhe de implementação do usuário.

29
00:01:16,077 --> 00:01:17,260
‫OK?

30
00:01:17,260 --> 00:01:19,920
‫E então não queremos que ninguém

31
00:01:19,920 --> 00:01:24,390
‫saiba que esta sinalização, então esta sinalização ativa está aqui, ok.

32
00:01:24,390 --> 00:01:28,930
‫Portanto, dizemos selecionar e definir como falso, tudo bem.

33
00:01:28,930 --> 00:01:29,883
‫E então,

34
00:01:30,830 --> 00:01:33,140
‫para excluir o usuário agora, tudo

35
00:01:33,140 --> 00:01:35,400
‫o que precisamos fazer é

36
00:01:35,400 --> 00:01:38,210
‫basicamente definir o sinalizador ativo como falso.

37
00:01:38,210 --> 00:01:39,043
‫OK.

38
00:01:40,130 --> 00:01:42,390
‫Então, vamos criar essa função aqui,

39
00:01:42,390 --> 00:01:43,223
‫exportações. deleteMe, então

40
00:01:44,170 --> 00:01:45,529
‫era updateMe e

41
00:01:45,529 --> 00:01:46,930
‫agora é deleteMe e

42
00:01:46,930 --> 00:01:47,763
‫então

43
00:01:47,763 --> 00:01:51,614
‫já sabemos que estamos usando um catchAsync aqui, certo?

44
00:01:51,614 --> 00:01:54,410
‫E então o Async, porque

45
00:01:54,410 --> 00:01:58,570
‫basicamente já sabemos que vamos atualizar o usuário.

46
00:01:58,570 --> 00:02:01,150
‫Portanto, o pedido responde

47
00:02:01,150 --> 00:02:02,960
‫a seguir.

48
00:02:02,960 --> 00:02:03,913
‫Portanto,

49
00:02:06,470 --> 00:02:08,300
‫aguarde o usuário. localizar por ID e

50
00:02:08,300 --> 00:02:10,700
‫atualizar.

51
00:02:10,700 --> 00:02:12,573
‫Ok, e novamente, é claro

52
00:02:13,800 --> 00:02:15,960
‫que só funciona para usuários conectados e,

53
00:02:15,960 --> 00:02:18,830
‫portanto, o ID do usuário é convenientemente armazenado quando solicitado. do utilizador. Eu iria.

54
00:02:18,830 --> 00:02:21,617
‫e os dados que queremos atualizar estão

55
00:02:21,617 --> 00:02:23,800
‫simplesmente ativos

56
00:02:23,800 --> 00:02:25,630
‫e configurados como falsos.

57
00:02:26,680 --> 00:02:28,010
‫Tudo bem.

58
00:02:28,900 --> 00:02:30,893
‫Agora, enviar a resposta também é muito fácil.

59
00:02:31,870 --> 00:02:33,280
‫Usamos o código

60
00:02:33,280 --> 00:02:37,560
‫204 para deletados, o que fará com que no Postman

61
00:02:37,560 --> 00:02:40,100
‫nem mesmo vejamos essa resposta, ok.

62
00:02:40,100 --> 00:02:43,280
‫Mesmo assim, enviamos junto com a

63
00:02:43,280 --> 00:02:47,230
‫solicitação, pois essa é sempre a melhor prática.

64
00:02:47,230 --> 00:02:49,830
‫Portanto, ainda é um sucesso e lembre-se de

65
00:02:50,770 --> 00:02:52,720
‫que não enviamos nenhum dado.

66
00:02:54,090 --> 00:02:56,610
‫Portanto, basta definir como não.

67
00:02:56,610 --> 00:02:59,470
‫Tudo bem, e agora, é claro, adicione-o também

68
00:02:59,470 --> 00:03:01,343
‫a todas as rotas aqui.

69
00:03:02,890 --> 00:03:05,080
‫Então isso é bem parecido.

70
00:03:05,080 --> 00:03:07,193
‫Então deleteMe, aqui deleteMe também e agora

71
00:03:08,850 --> 00:03:10,223
‫estamos usando o método

72
00:03:11,840 --> 00:03:12,880
‫delete http.

73
00:03:14,620 --> 00:03:16,420
‫Ok, e novamente, não

74
00:03:16,420 --> 00:03:20,373
‫vamos realmente excluir um usuário do banco de dados.

75
00:03:21,480 --> 00:03:24,670
‫Mas, desde que o usuário não esteja mais acessível em qualquer lugar, ainda não

76
00:03:24,670 --> 00:03:26,570
‫há problema em usar este método http aqui.

77
00:03:26,570 --> 00:03:30,550
‫Tudo bem, então vamos experimentar agora.

78
00:03:30,550 --> 00:03:34,277
‫Ok, embora não estejamos 100% prontos

79
00:03:34,277 --> 00:03:37,663
‫ainda, vamos tentar isso agora.

80
00:03:38,900 --> 00:03:42,010
‫Tudo bem, então deleteMe e é

81
00:03:43,080 --> 00:03:46,193
‫uma rota protegida e por isso

82
00:03:47,200 --> 00:03:50,629
‫precisamos estar logados e então vamos

83
00:03:50,629 --> 00:03:51,720
‫criar

84
00:03:51,720 --> 00:03:53,530
‫nosso cabeçalho de

85
00:03:53,530 --> 00:03:55,290
‫autorização, Bearer Token

86
00:03:56,150 --> 00:03:59,923
‫e, claro, este e é realmente isso.

87
00:04:00,910 --> 00:04:03,350
‫Não precisamos passar nenhum dado no corpo.

88
00:04:04,640 --> 00:04:06,040
‫Não precisamos passar nenhum dado no URL.

89
00:04:06,040 --> 00:04:08,730
‫Tudo bem, porque, novamente, os únicos dados necessários são

90
00:04:08,730 --> 00:04:11,173
‫o ID do usuário atual e aquele

91
00:04:12,010 --> 00:04:15,210
‫não está codificado dentro de nosso token da web adjacente.

92
00:04:15,210 --> 00:04:18,560
‫OK?

93
00:04:18,560 --> 00:04:21,150
‫Então, o que também precisamos fazer é excluir e sim, isso

94
00:04:21,150 --> 00:04:21,983
‫deve funcionar agora.

95
00:04:23,510 --> 00:04:25,720
‫Portanto, antes de fazermos isso,

96
00:04:26,660 --> 00:04:29,240
‫vamos obter a lista de todos os usuários.

97
00:04:29,240 --> 00:04:31,830
‫Tudo bem, então o que estamos excluindo agora

98
00:04:31,830 --> 00:04:33,113
‫é este último.

99
00:04:34,870 --> 00:04:38,110
‫Então, esse que acabamos de criar na última aula.

100
00:04:38,110 --> 00:04:39,533
‫Ok, e estamos

101
00:04:41,060 --> 00:04:44,300
‫trabalhando com este porque é o último que efetuou login

102
00:04:44,300 --> 00:04:47,270
‫e, portanto, é este token aqui que está

103
00:04:47,270 --> 00:04:49,710
‫agora armazenado em nossa variável de token.

104
00:04:49,710 --> 00:04:51,370
‫Ok, e quando agora estamos

105
00:04:51,370 --> 00:04:54,460
‫excluindo o usuário, isso será baseado no ID vindo deste token.

106
00:04:54,460 --> 00:04:57,020
‫Então, vamos tentar isso agora.

107
00:04:57,020 --> 00:05:00,163
‫E, de fato, recebemos nosso 204.

108
00:05:01,700 --> 00:05:03,093
‫E agora estou interessado

109
00:05:06,080 --> 00:05:08,690
‫em ver se a propriedade select aqui mudou.

110
00:05:08,690 --> 00:05:11,600
‫E realmente parece exatamente o mesmo aqui.

111
00:05:11,600 --> 00:05:13,763
‫E isso porque não estamos

112
00:05:15,290 --> 00:05:17,820
‫vazando o campo de seleção para o usuário.

113
00:05:17,820 --> 00:05:19,760
‫E então realmente precisamos ver isso aqui.

114
00:05:19,760 --> 00:05:22,460
‫Ok, de fato temos active aqui definido como falso.

115
00:05:22,460 --> 00:05:25,053
‫Ok, é isso que eu queria dizer antes.

116
00:05:26,180 --> 00:05:31,110
‫Portanto, não estamos vazando os campos ativos para o

117
00:05:31,110 --> 00:05:34,560
‫usuário, não o campo de seleção.

118
00:05:34,560 --> 00:05:37,640
‫Tão ativo só é visível para nós aqui na

119
00:05:37,640 --> 00:05:40,020
‫bússola, mas não para o usuário.

120
00:05:40,020 --> 00:05:42,230
‫Agora, como última etapa, é

121
00:05:42,230 --> 00:05:45,280
‫claro que não queremos mostrar os usuários inativos

122
00:05:45,280 --> 00:05:46,920
‫nesta saída, certo.

123
00:05:46,920 --> 00:05:50,080
‫E como você acha que poderíamos implementar isso?

124
00:05:50,080 --> 00:05:53,960
‫Bem, vamos usar algo que é antigo, sobre o

125
00:05:53,960 --> 00:05:57,400
‫qual falamos há duas ou três seções, que

126
00:05:57,400 --> 00:06:00,500
‫é o middleware de consulta, certo.

127
00:06:00,500 --> 00:06:03,400
‫Portanto, o middleware de consulta é perfeito para

128
00:06:03,400 --> 00:06:06,140
‫isso porque agora podemos basicamente adicionar uma etapa

129
00:06:06,140 --> 00:06:08,940
‫antes de qualquer outra consulta que estivermos fazendo

130
00:06:08,940 --> 00:06:11,380
‫em algum lugar em nosso aplicativo.

131
00:06:11,380 --> 00:06:14,160
‫Então, vamos ao nosso modelo de usuário aqui

132
00:06:14,160 --> 00:06:16,500
‫e adicionar esse middleware aqui.

133
00:06:16,500 --> 00:06:19,810
‫Então userSchema. pré, então algo que acontecerá antes de uma consulta e

134
00:06:19,810 --> 00:06:21,763
‫essa consulta será um achado.

135
00:06:25,310 --> 00:06:26,657
‫Ok, então isso é o que torna esse middleware de consulta.

136
00:06:29,339 --> 00:06:32,850
‫Então uma função regular porque lembre-se

137
00:06:32,850 --> 00:06:37,760
‫que do contrário não teremos acesso à discórdia ou

138
00:06:37,760 --> 00:06:40,583
‫pelo menos ela não terá

139
00:06:42,330 --> 00:06:44,670
‫o valor que esperamos

140
00:06:44,670 --> 00:06:46,390
‫que tenha.

141
00:06:46,390 --> 00:06:49,600
‫E lembre-se de que aqui, na verdade, usamos uma expressão regular antes,

142
00:06:49,600 --> 00:06:51,460
‫basicamente para dizer que queremos

143
00:06:51,460 --> 00:06:53,560
‫que essa função de middleware se aplique a

144
00:06:53,560 --> 00:06:55,440
‫todas as consultas que começam com find.

145
00:06:55,440 --> 00:06:57,820
‫Portanto, não apenas encontre, mas também coisas como localizar

146
00:06:57,820 --> 00:07:00,520
‫e atualizar, localizar e excluir e todas as consultas desse tipo.

147
00:07:00,520 --> 00:07:03,850
‫Ok, então usamos uma expressão regular procurando

148
00:07:03,850 --> 00:07:07,290
‫por palavras ou strings que começam com find.

149
00:07:07,290 --> 00:07:10,290
‫Então é isso que este símbolo faz.

150
00:07:10,290 --> 00:07:14,670
‫E, em seguida, encerre a expressão regular.

151
00:07:14,670 --> 00:07:18,600
‫Então, um muito simples.

152
00:07:18,600 --> 00:07:20,883
‫Este é o que até eu posso

153
00:07:22,080 --> 00:07:24,250
‫escrever sem ir primeiro ao Google

154
00:07:24,250 --> 00:07:25,720
‫e tentar encontrá-lo lá.

155
00:07:25,720 --> 00:07:27,650
‫Ok, então lembre-se que este

156
00:07:27,650 --> 00:07:30,600
‫é um middleware de consulta e, portanto, aponta

157
00:07:30,600 --> 00:07:32,480
‫para a consulta atual.

158
00:07:32,480 --> 00:07:36,760
‫Ok, vamos voltar rapidamente aqui

159
00:07:36,760 --> 00:07:40,840
‫para ver como funciona.

160
00:07:42,350 --> 00:07:43,183
‫Portanto, temos

161
00:07:43,183 --> 00:07:47,070
‫todos os usuários aqui e aqui, é claro, temos uma consulta de pesquisa.

162
00:07:47,070 --> 00:07:48,970
‫E agora, antes que

163
00:07:48,970 --> 00:07:52,900
‫a consulta seja realmente executada, queremos adicionar algo a ela.

164
00:07:52,900 --> 00:07:55,880
‫Queremos apenas encontrar documentos que tenham a

165
00:07:55,880 --> 00:07:58,840
‫propriedade active definida como true.

166
00:07:58,840 --> 00:08:00,540
‫Tudo bem, então é fácil.

167
00:08:00,540 --> 00:08:03,260
‫Aqui está.

168
00:08:03,260 --> 00:08:05,823
‫E

169
00:08:07,100 --> 00:08:09,840
‫então isso. localizar e, em seguida, é claro, nosso objeto de filtro apenas

170
00:08:09,840 --> 00:08:10,673
‫documentos com ativo

171
00:08:11,610 --> 00:08:12,443
‫definido como verdadeiro.

172
00:08:13,610 --> 00:08:15,037
‫E é isso.

173
00:08:15,037 --> 00:08:15,980
‫Chame o próximo middleware e pronto.

174
00:08:15,980 --> 00:08:17,910
‫Ok, e se agora fizermos a mesma

175
00:08:19,930 --> 00:08:24,180
‫consulta, esta última não deve mais aparecer, porque novamente está com o ativo definido

176
00:08:24,180 --> 00:08:25,013
‫como falso.

177
00:08:27,610 --> 00:08:31,410
‫E, portanto, não vai corresponder à consulta

178
00:08:31,410 --> 00:08:34,350
‫que acabamos de escrever.

179
00:08:34,350 --> 00:08:36,840
‫Ok, agora não temos nenhum usuário aqui

180
00:08:36,840 --> 00:08:40,240
‫e acho que é porque os outros eles não têm

181
00:08:40,240 --> 00:08:42,180
‫explicitamente a propriedade ativa definida

182
00:08:42,180 --> 00:08:43,223
‫como true.

183
00:08:45,400 --> 00:08:48,530
‫E então vamos fazer o que realmente fizemos naquela outra seção

184
00:08:48,530 --> 00:08:51,230
‫onde dizemos que ativo não deve ser falso.

185
00:08:51,230 --> 00:08:53,360
‫Ok, então usamos o

186
00:08:53,360 --> 00:08:55,810
‫operador não igual a e,

187
00:08:55,810 --> 00:08:58,950
‫claro, deve estar em seu próprio objeto.

188
00:08:58,950 --> 00:09:02,230
‫Portanto, não é igual a falso.

189
00:09:02,230 --> 00:09:03,690
‫Ok, então isso é bem diferente aqui neste caso.

190
00:09:03,690 --> 00:09:05,900
‫Tudo bem, então todos os documentos

191
00:09:05,900 --> 00:09:09,343
‫onde ativo não é igual a falso agora devem aparecer e

192
00:09:10,290 --> 00:09:12,690
‫os outros dois devem estar de volta.

193
00:09:12,690 --> 00:09:16,540
‫E, de fato, aqui estão eles.

194
00:09:16,540 --> 00:09:18,790
‫Ok, é assim que basicamente excluímos nossos

195
00:09:18,790 --> 00:09:21,642
‫usuários, embora não os excluamos efetivamente do banco de dados.

196
00:09:21,642 --> 00:09:24,883
‫Ok, então não estamos excluindo documentos, estamos

197
00:09:24,883 --> 00:09:27,390
‫apenas marcando-os como inativos.

198
00:09:27,390 --> 00:09:31,190
‫Ok, vamos salvar rapidamente isso aqui.

199
00:09:31,190 --> 00:09:34,760
‫Exclua o usuário

200
00:09:34,760 --> 00:09:37,210
‫atual.

201
00:09:37,210 --> 00:09:39,883
‫Ótimo e com isso nós realmente concluímos

202
00:09:41,100 --> 00:09:43,963
‫a parte de autenticação e autorização desta

203
00:09:46,180 --> 00:09:47,013
‫seção.

204
00:09:48,680 --> 00:09:50,930
‫Então, tudo que estava relacionado a esses

205
00:09:50,930 --> 00:09:53,470
‫tópicos e também aos usuários, como atualizar e excluir usuários.

206
00:09:53,470 --> 00:09:55,970
‫Isso também faz parte da autenticação

207
00:09:55,970 --> 00:09:57,460
‫e da autorização.

208
00:09:57,460 --> 00:10:00,440
‫Agora, no restante desta seção,

209
00:10:00,440 --> 00:10:04,410
‫falaremos sobre segurança porque, é claro, isso

210
00:10:04,410 --> 00:10:07,000
‫também está relacionado à

211
00:10:07,000 --> 00:10:08,410
‫autenticação.

212
00:10:08,410 --> 00:10:10,020
‫Ok, então vamos falar

213
00:10:10,020 --> 00:10:12,210
‫sobre algumas das melhores práticas e, em

214
00:10:12,210 --> 00:10:14,740
‫seguida, também implementar algumas delas em nosso projeto.

