﻿1
00:00:00,890 --> 00:00:04,850
‫-: Entonces, después de la actualización, ahora también permitiremos que el

2
00:00:04,850 --> 00:00:07,293
‫usuario actual elimine básicamente su cuenta.

3
00:00:09,070 --> 00:00:12,069
‫Ahora, cuando un usuario decide eliminar su

4
00:00:12,069 --> 00:00:16,390
‫cuenta, en realidad no eliminamos ese documento de la base de datos.

5
00:00:16,390 --> 00:00:20,580
‫Pero en lugar de eso, simplemente configuramos la cuenta como inactiva.

6
00:00:20,580 --> 00:00:23,170
‫Para que el usuario pueda en

7
00:00:23,170 --> 00:00:26,910
‫algún momento en el futuro reactivar la cuenta y también para

8
00:00:26,910 --> 00:00:29,820
‫que podamos acceder básicamente a la cuenta en

9
00:00:29,820 --> 00:00:33,450
‫el futuro, incluso si oficialmente, digamos que ha sido eliminada.

10
00:00:33,450 --> 00:00:34,440
‫¿Okey?

11
00:00:34,440 --> 00:00:36,380
‫Entonces, para implementar esto, primero

12
00:00:36,380 --> 00:00:39,430
‫necesitamos crear una nueva propiedad en nuestro esquema.

13
00:00:39,430 --> 00:00:40,850
‫Entonces, vayamos

14
00:00:40,850 --> 00:00:42,090
‫allí.

15
00:00:42,090 --> 00:00:43,740
‫Y ahora queremos

16
00:00:45,440 --> 00:00:47,163
‫tener un campo llamado activo.

17
00:00:48,210 --> 00:00:49,043
‫Bueno.

18
00:00:50,550 --> 00:00:52,150
‫Que debería ser del

19
00:00:54,370 --> 00:00:55,550
‫tipo booleano.

20
00:00:55,550 --> 00:00:57,430
‫De acuerdo, y por

21
00:00:57,430 --> 00:00:58,263
‫defecto

22
00:00:59,170 --> 00:01:00,040
‫será cierto.

23
00:01:00,040 --> 00:01:02,180
‫Entonces, cualquier usuario que se cree

24
00:01:02,180 --> 00:01:04,430
‫nuevo es, por supuesto, un usuario activo

25
00:01:04,430 --> 00:01:07,300
‫y, por lo tanto, el booleano se establece en verdadero.

26
00:01:07,300 --> 00:01:11,360
‫Además, no queremos mostrar esto en la salida, está bien.

27
00:01:11,360 --> 00:01:13,350
‫Porque básicamente queremos ocultar

28
00:01:13,350 --> 00:01:16,077
‫este detalle de implementación al usuario.

29
00:01:16,077 --> 00:01:17,260
‫¿Okey?

30
00:01:17,260 --> 00:01:19,920
‫Y no queremos que nadie sepa

31
00:01:19,920 --> 00:01:24,390
‫que esta bandera, entonces esta bandera activa está aquí, está bien.

32
00:01:24,390 --> 00:01:28,930
‫Entonces decimos seleccionar, y lo configuramos como falso, de acuerdo.

33
00:01:28,930 --> 00:01:29,883
‫Entonces, para

34
00:01:30,830 --> 00:01:33,140
‫eliminar al usuario ahora, todo lo

35
00:01:33,140 --> 00:01:35,400
‫que tenemos que hacer es

36
00:01:35,400 --> 00:01:38,210
‫básicamente establecer esa bandera activa en falso.

37
00:01:38,210 --> 00:01:39,043
‫Bueno.

38
00:01:40,130 --> 00:01:42,390
‫Así que creemos esa función aquí,

39
00:01:42,390 --> 00:01:43,223
‫exportaciones. deleteMe, entonces

40
00:01:44,170 --> 00:01:45,529
‫era updateMe y

41
00:01:45,529 --> 00:01:46,930
‫ahora es deleteMe

42
00:01:46,930 --> 00:01:47,763
‫y

43
00:01:47,763 --> 00:01:51,614
‫ya sabemos que estamos usando un catchAsync aquí, ¿verdad?

44
00:01:51,614 --> 00:01:54,410
‫Y luego Async porque

45
00:01:54,410 --> 00:01:58,570
‫básicamente ya sabemos que actualizaremos al usuario.

46
00:01:58,570 --> 00:02:01,150
‫Entonces la solicitud responde

47
00:02:01,150 --> 00:02:02,960
‫a continuación.

48
00:02:02,960 --> 00:02:03,913
‫Entonces,

49
00:02:06,470 --> 00:02:08,300
‫espera al usuario. buscar por ID y

50
00:02:08,300 --> 00:02:10,700
‫actualizar.

51
00:02:10,700 --> 00:02:12,573
‫De acuerdo, y nuevamente, por supuesto,

52
00:02:13,800 --> 00:02:15,960
‫solo funciona para los usuarios registrados, por lo

53
00:02:15,960 --> 00:02:18,830
‫que la ID de usuario se almacena convenientemente a pedido. usuario. identificación.

54
00:02:18,830 --> 00:02:21,617
‫y los datos que queremos actualizar simplemente

55
00:02:21,617 --> 00:02:23,800
‫están activos

56
00:02:23,800 --> 00:02:25,630
‫y configurados en falso.

57
00:02:26,680 --> 00:02:28,010
‫Está bien.

58
00:02:28,900 --> 00:02:30,893
‫Ahora devolver la respuesta también es bastante fácil.

59
00:02:31,870 --> 00:02:33,280
‫Usamos el código

60
00:02:33,280 --> 00:02:37,560
‫204 para eliminado, lo que lo hará de modo que, en realidad, en

61
00:02:37,560 --> 00:02:40,100
‫Postman ni siquiera veamos esta respuesta, está bien.

62
00:02:40,100 --> 00:02:43,280
‫Pero aún lo enviamos junto con

63
00:02:43,280 --> 00:02:47,230
‫la solicitud porque esa es siempre la mejor práctica.

64
00:02:47,230 --> 00:02:49,830
‫Entonces, sigue siendo un éxito y luego recuerde

65
00:02:50,770 --> 00:02:52,720
‫que no enviamos ningún dato.

66
00:02:54,090 --> 00:02:56,610
‫Entonces, simplemente configúrelo en no.

67
00:02:56,610 --> 00:02:59,470
‫Muy bien, y ahora, por supuesto, agréguelo también

68
00:02:59,470 --> 00:03:01,343
‫a todas las rutas aquí.

69
00:03:02,890 --> 00:03:05,080
‫Entonces eso es bastante similar.

70
00:03:05,080 --> 00:03:07,193
‫Así que deleteMe y luego aquí deleteMe también

71
00:03:08,850 --> 00:03:10,223
‫y ahora estamos usando el

72
00:03:11,840 --> 00:03:12,880
‫método delete http.

73
00:03:14,620 --> 00:03:16,420
‫De acuerdo, y nuevamente,

74
00:03:16,420 --> 00:03:20,373
‫no eliminaremos un usuario de la base de datos.

75
00:03:21,480 --> 00:03:24,670
‫Pero siempre que el usuario ya no sea accesible en cualquier lugar,

76
00:03:24,670 --> 00:03:26,570
‫está bien usar este método http aquí.

77
00:03:26,570 --> 00:03:30,550
‫Muy bien, probemos esto ahora.

78
00:03:30,550 --> 00:03:34,277
‫De acuerdo, aunque todavía no estamos

79
00:03:34,277 --> 00:03:37,663
‫100% listos, intentémoslo ahora.

80
00:03:38,900 --> 00:03:42,010
‫Está bien, entonces, deleteMe y es

81
00:03:43,080 --> 00:03:46,193
‫una ruta protegida, por lo que

82
00:03:47,200 --> 00:03:50,629
‫debemos iniciar sesión y, por lo tanto,

83
00:03:50,629 --> 00:03:51,720
‫creemos

84
00:03:51,720 --> 00:03:53,530
‫nuestro encabezado de

85
00:03:53,530 --> 00:03:55,290
‫autorización, Bearer Token

86
00:03:56,150 --> 00:03:59,923
‫y, por supuesto, este y eso es todo.

87
00:04:00,910 --> 00:04:03,350
‫No necesitamos pasar ningún dato en el cuerpo.

88
00:04:04,640 --> 00:04:06,040
‫No necesitamos pasar ningún dato en la URL.

89
00:04:06,040 --> 00:04:08,730
‫Muy bien, porque nuevamente, los únicos datos que se

90
00:04:08,730 --> 00:04:11,173
‫necesitan es la identificación de usuario actual

91
00:04:12,010 --> 00:04:15,210
‫y esa no está codificada dentro de nuestro token web adyacente.

92
00:04:15,210 --> 00:04:18,560
‫¿Okey?

93
00:04:18,560 --> 00:04:21,150
‫Entonces, lo que también debemos hacer es eliminar y sí, esto

94
00:04:21,150 --> 00:04:21,983
‫debería funcionar ahora.

95
00:04:23,510 --> 00:04:25,720
‫Entonces, antes de hacer eso,

96
00:04:26,660 --> 00:04:29,240
‫obtengamos la lista de todos los usuarios.

97
00:04:29,240 --> 00:04:31,830
‫Muy bien y el que estamos borrando ahora

98
00:04:31,830 --> 00:04:33,113
‫es este último.

99
00:04:34,870 --> 00:04:38,110
‫Así que este que acabamos de crear en la última conferencia.

100
00:04:38,110 --> 00:04:39,533
‫De acuerdo, y estamos

101
00:04:41,060 --> 00:04:44,300
‫trabajando con este porque es el último que inició sesión,

102
00:04:44,300 --> 00:04:47,270
‫por lo que es este token aquí el que está

103
00:04:47,270 --> 00:04:49,710
‫ahora almacenado en nuestra variable de token.

104
00:04:49,710 --> 00:04:51,370
‫De acuerdo, cuando eliminemos al

105
00:04:51,370 --> 00:04:54,460
‫usuario, se basará en la ID que proviene de este token.

106
00:04:54,460 --> 00:04:57,020
‫Intentémoslo ahora.

107
00:04:57,020 --> 00:05:00,163
‫Y de hecho obtenemos nuestro 204.

108
00:05:01,700 --> 00:05:03,093
‫Y ahora lo que me

109
00:05:06,080 --> 00:05:08,690
‫interesa es ver si la propiedad seleccionada aquí ha cambiado.

110
00:05:08,690 --> 00:05:11,600
‫Y en realidad se ve exactamente igual aquí.

111
00:05:11,600 --> 00:05:13,763
‫Y eso es porque no

112
00:05:15,290 --> 00:05:17,820
‫estamos filtrando el campo de selección al usuario.

113
00:05:17,820 --> 00:05:19,760
‫Y entonces realmente necesitamos verlo aquí.

114
00:05:19,760 --> 00:05:22,460
‫Está bien y, de hecho, tenemos activo aquí establecido en falso.

115
00:05:22,460 --> 00:05:25,053
‫Bien, eso es lo que quería decir antes.

116
00:05:26,180 --> 00:05:31,110
‫Por lo tanto, no estamos filtrando los campos activos al

117
00:05:31,110 --> 00:05:34,560
‫usuario, no al campo de selección.

118
00:05:34,560 --> 00:05:37,640
‫Tan activo solo es visible para nosotros aquí en la

119
00:05:37,640 --> 00:05:40,020
‫brújula, pero no para el usuario.

120
00:05:40,020 --> 00:05:42,230
‫Ahora, como último paso, por supuesto

121
00:05:42,230 --> 00:05:45,280
‫que no queremos mostrar a los usuarios inactivos

122
00:05:45,280 --> 00:05:46,920
‫en esta salida, ¿verdad?

123
00:05:46,920 --> 00:05:50,080
‫¿Y cómo crees que podríamos implementar esto?

124
00:05:50,080 --> 00:05:53,960
‫Bueno, vamos a usar algo que está muy atrás y de

125
00:05:53,960 --> 00:05:57,400
‫lo que hablamos hace dos o tres secciones, que

126
00:05:57,400 --> 00:06:00,500
‫es el middleware de consultas, está bien.

127
00:06:00,500 --> 00:06:03,400
‫Entonces, el middleware de consultas es perfecto para

128
00:06:03,400 --> 00:06:06,140
‫esto porque ahora básicamente podemos agregar un paso

129
00:06:06,140 --> 00:06:08,940
‫antes de cualquier otra consulta que estemos haciendo

130
00:06:08,940 --> 00:06:11,380
‫en algún lugar de nuestra aplicación.

131
00:06:11,380 --> 00:06:14,160
‫Así que vayamos a nuestro modelo de usuario

132
00:06:14,160 --> 00:06:16,500
‫aquí y agreguemos ese middleware aquí.

133
00:06:16,500 --> 00:06:19,810
‫Entonces userSchema. pre, entonces algo que sucederá antes de una consulta y

134
00:06:19,810 --> 00:06:21,763
‫esa consulta será un hallazgo.

135
00:06:25,310 --> 00:06:26,657
‫Bien, esto es lo que hace que esta consulta sea un middleware.

136
00:06:29,339 --> 00:06:32,850
‫Luego una función regular porque recuerda que

137
00:06:32,850 --> 00:06:37,760
‫de lo contrario no tendremos acceso a la discordia

138
00:06:37,760 --> 00:06:40,583
‫o al menos no tendrá

139
00:06:42,330 --> 00:06:44,670
‫el valor que esperamos

140
00:06:44,670 --> 00:06:46,390
‫que tenga.

141
00:06:46,390 --> 00:06:49,600
‫Y recuerde que aquí en realidad usamos una expresión regular antes

142
00:06:49,600 --> 00:06:51,460
‫básicamente para decir que queremos

143
00:06:51,460 --> 00:06:53,560
‫que esta función de middleware se aplique

144
00:06:53,560 --> 00:06:55,440
‫a cada consulta que comience con find.

145
00:06:55,440 --> 00:06:57,820
‫Así que no solo buscar, sino también cosas como buscar

146
00:06:57,820 --> 00:07:00,520
‫y actualizar, buscar y eliminar, y todas las consultas por el estilo.

147
00:07:00,520 --> 00:07:03,850
‫De acuerdo, usamos una expresión regular en

148
00:07:03,850 --> 00:07:07,290
‫busca de palabras o cadenas que comiencen con encontrar.

149
00:07:07,290 --> 00:07:10,290
‫Entonces eso es lo que hace este símbolo aquí.

150
00:07:10,290 --> 00:07:14,670
‫Y luego finaliza la expresión regular.

151
00:07:14,670 --> 00:07:18,600
‫Así que uno muy simple.

152
00:07:18,600 --> 00:07:20,883
‫Este es el que incluso yo puedo

153
00:07:22,080 --> 00:07:24,250
‫escribir sin ir primero a Google y

154
00:07:24,250 --> 00:07:25,720
‫tratar de encontrarlo allí.

155
00:07:25,720 --> 00:07:27,650
‫Bien, recuerde que esto es un

156
00:07:27,650 --> 00:07:30,600
‫middleware de consultas y, por lo tanto, apunta

157
00:07:30,600 --> 00:07:32,480
‫a la consulta actual.

158
00:07:32,480 --> 00:07:36,760
‫Bien, entonces volvamos rápidamente aquí

159
00:07:36,760 --> 00:07:40,840
‫para ver cómo funciona.

160
00:07:42,350 --> 00:07:43,183
‫Por lo tanto,

161
00:07:43,183 --> 00:07:47,070
‫tenemos la opción de obtener todos los usuarios aquí y, por supuesto, aquí tenemos una consulta de búsqueda.

162
00:07:47,070 --> 00:07:48,970
‫Y ahora, antes

163
00:07:48,970 --> 00:07:52,900
‫de que se ejecute esa consulta, queremos agregarle algo.

164
00:07:52,900 --> 00:07:55,880
‫Lo cual es que solo queremos encontrar documentos que

165
00:07:55,880 --> 00:07:58,840
‫tengan la propiedad activa configurada como verdadera.

166
00:07:58,840 --> 00:08:00,540
‫De acuerdo, eso es fácil.

167
00:08:00,540 --> 00:08:03,260
‫Aquí está.

168
00:08:03,260 --> 00:08:05,823
‫Y

169
00:08:07,100 --> 00:08:09,840
‫entonces esto. buscar y luego, por supuesto, nuestro objeto de filtro solo

170
00:08:09,840 --> 00:08:10,673
‫documentos con activo

171
00:08:11,610 --> 00:08:12,443
‫establecido en verdadero.

172
00:08:13,610 --> 00:08:15,037
‫Y eso es.

173
00:08:15,037 --> 00:08:15,980
‫Llamando al próximo middleware y listo.

174
00:08:15,980 --> 00:08:17,910
‫Bien, y si ahora hacemos la

175
00:08:19,930 --> 00:08:24,180
‫misma consulta, esta última ya no debería aparecer porque nuevamente tiene activa establecida

176
00:08:24,180 --> 00:08:25,013
‫en falso.

177
00:08:27,610 --> 00:08:31,410
‫Por tanto, no va a coincidir con la

178
00:08:31,410 --> 00:08:34,350
‫consulta que acabamos de escribir.

179
00:08:34,350 --> 00:08:36,840
‫Bien, ahora no tenemos ningún usuario aquí y

180
00:08:36,840 --> 00:08:40,240
‫supongo que eso se debe a que los otros no

181
00:08:40,240 --> 00:08:42,180
‫tienen explícitamente la propiedad activa establecida

182
00:08:42,180 --> 00:08:43,223
‫en verdadero.

183
00:08:45,400 --> 00:08:48,530
‫Y entonces hagamos lo que hicimos realmente en esa otra sección

184
00:08:48,530 --> 00:08:51,230
‫donde decimos que activo no debe ser falso.

185
00:08:51,230 --> 00:08:53,360
‫Bien, usamos el operador

186
00:08:53,360 --> 00:08:55,810
‫no igual a y, por

187
00:08:55,810 --> 00:08:58,950
‫supuesto, debería estar en su propio objeto.

188
00:08:58,950 --> 00:09:02,230
‫Entonces no es igual a falso.

189
00:09:02,230 --> 00:09:03,690
‫Bien, eso es bastante diferente aquí en este caso.

190
00:09:03,690 --> 00:09:05,900
‫De acuerdo, todos los documentos donde

191
00:09:05,900 --> 00:09:09,343
‫activo no es igual a falso ahora deberían aparecer y

192
00:09:10,290 --> 00:09:12,690
‫los otros dos deberían estar de vuelta.

193
00:09:12,690 --> 00:09:16,540
‫Y de hecho aquí están.

194
00:09:16,540 --> 00:09:18,790
‫De acuerdo, así es como básicamente eliminamos

195
00:09:18,790 --> 00:09:21,642
‫a nuestros usuarios sin eliminarlos de la base de datos.

196
00:09:21,642 --> 00:09:24,883
‫Bien, no eliminaremos documentos, solo los

197
00:09:24,883 --> 00:09:27,390
‫marcaremos como inactivos.

198
00:09:27,390 --> 00:09:31,190
‫Bien, guardemos esto rápidamente aquí.

199
00:09:31,190 --> 00:09:34,760
‫Eliminar usuario

200
00:09:34,760 --> 00:09:37,210
‫actual.

201
00:09:37,210 --> 00:09:39,883
‫Genial y con esto terminamos la

202
00:09:41,100 --> 00:09:43,963
‫parte de autenticación y autorización de esta

203
00:09:46,180 --> 00:09:47,013
‫sección.

204
00:09:48,680 --> 00:09:50,930
‫Entonces, todo lo que estaba relacionado con estos

205
00:09:50,930 --> 00:09:53,470
‫temas y también con los usuarios, como actualizar y eliminar usuarios.

206
00:09:53,470 --> 00:09:55,970
‫Eso también forma parte de la autenticación

207
00:09:55,970 --> 00:09:57,460
‫y la autorización.

208
00:09:57,460 --> 00:10:00,440
‫Ahora, en el resto de esta

209
00:10:00,440 --> 00:10:04,410
‫sección, hablaremos de seguridad porque, por supuesto,

210
00:10:04,410 --> 00:10:07,000
‫también está relacionado con

211
00:10:07,000 --> 00:10:08,410
‫la autenticación.

212
00:10:08,410 --> 00:10:10,020
‫Bien, hablaremos sobre un

213
00:10:10,020 --> 00:10:12,210
‫par de mejores prácticas y luego

214
00:10:12,210 --> 00:10:14,740
‫también implementaremos algunas de ellas en nuestro proyecto.

