﻿1
00:00:01,260 --> 00:00:02,790
‫-: Bienvenido de nuevo.

2
00:00:02,790 --> 00:00:05,270
‫Entonces, hemos implementado la autenticación

3
00:00:05,270 --> 00:00:07,770
‫en nuestro proyecto hasta este momento.

4
00:00:07,770 --> 00:00:09,930
‫Y funciona bien.

5
00:00:09,930 --> 00:00:12,960
‫Sin embargo, a veces, simplemente autenticarse, por lo

6
00:00:12,960 --> 00:00:14,640
‫tanto, iniciar sesión como usuario,

7
00:00:14,640 --> 00:00:16,150
‫no es suficiente.

8
00:00:16,150 --> 00:00:17,490
‫Y, entonces,

9
00:00:17,490 --> 00:00:20,173
‫en este video, también implementaremos la autorización.

10
00:00:21,730 --> 00:00:24,850
‫Entonces, imagine el acto de eliminar un recorrido de

11
00:00:24,850 --> 00:00:26,440
‫nuestra base de datos.

12
00:00:26,440 --> 00:00:28,890
‫Por lo tanto, no todos los usuarios deberían,

13
00:00:28,890 --> 00:00:30,530
‫por supuesto, poder hacer eso.

14
00:00:30,530 --> 00:00:33,306
‫Incluso si el usuario está conectado, ¿verdad?

15
00:00:33,306 --> 00:00:36,055
‫Entonces, básicamente necesitamos autorizar solo a

16
00:00:36,055 --> 00:00:38,510
‫ciertos tipos de usuarios para

17
00:00:38,510 --> 00:00:40,720
‫realizar ciertas acciones.

18
00:00:40,720 --> 00:00:43,550
‫Y eso es exactamente lo que es la autorización.

19
00:00:43,550 --> 00:00:46,562
‫Se trata de verificar si un determinado usuario tiene

20
00:00:46,562 --> 00:00:49,520
‫los derechos para interactuar con un determinado recurso.

21
00:00:49,520 --> 00:00:53,181
‫Entonces, nuevamente, con autorización, básicamente verificamos si

22
00:00:53,181 --> 00:00:58,080
‫un determinado usuario puede acceder a un determinado recurso, incluso

23
00:00:58,080 --> 00:00:59,890
‫si está conectado.

24
00:00:59,890 --> 00:01:03,150
‫Entonces, no todos los usuarios que hayan iniciado sesión podrán realizar

25
00:01:03,150 --> 00:01:05,950
‫las mismas acciones en nuestra API, ¿de acuerdo?

26
00:01:05,950 --> 00:01:08,119
‫Y este es un escenario muy común que

27
00:01:08,119 --> 00:01:10,240
‫debería implementarse en todas y cada una de

28
00:01:10,240 --> 00:01:12,222
‫las aplicaciones web normalmente, ¿de acuerdo?

29
00:01:12,222 --> 00:01:15,163
‫Así que vamos a construir aquí otra

30
00:01:15,163 --> 00:01:18,410
‫función de middleware, esta vez para restringir ciertas rutas.

31
00:01:18,410 --> 00:01:20,780
‫Por ejemplo, para eliminar recorridos.

32
00:01:20,780 --> 00:01:23,310
‫Entonces, esto significa que vamos a construir otra

33
00:01:23,310 --> 00:01:24,840
‫función de middleware aquí.

34
00:01:24,840 --> 00:01:27,290
‫Esta vez, para restringir ciertas rutas, como,

35
00:01:27,290 --> 00:01:29,068
‫por ejemplo, eliminar recorridos,

36
00:01:29,068 --> 00:01:31,338
‫solo a ciertos roles de usuario.

37
00:01:31,338 --> 00:01:32,630
‫¿Okey?

38
00:01:32,630 --> 00:01:35,020
‫Así que déjame mostrarte cómo se vería

39
00:01:35,020 --> 00:01:36,520
‫eso en la práctica.

40
00:01:36,520 --> 00:01:38,410
‫Entonces, aquí, en las

41
00:01:38,410 --> 00:01:42,270
‫rutas de los recorridos, volvamos a ese ejemplo de eliminación

42
00:01:42,270 --> 00:01:46,770
‫de recorridos, y agreguemos algo de middleware a la pila aquí.

43
00:01:46,770 --> 00:01:50,670
‫Así que authController, protege.

44
00:01:50,670 --> 00:01:52,300
‫Entonces, primero, siempre debemos

45
00:01:52,300 --> 00:01:55,490
‫verificar si un usuario está realmente conectado, ¿de acuerdo?

46
00:01:55,490 --> 00:01:58,550
‫Entonces, si un administrador está tratando de eliminar un

47
00:01:58,550 --> 00:02:00,020
‫recorrido, aún deberá

48
00:02:00,020 --> 00:02:02,350
‫verificar si realmente ha iniciado sesión, ¿verdad?

49
00:02:02,350 --> 00:02:04,610
‫Entonces, el primer middleware de la pila

50
00:02:04,610 --> 00:02:06,690
‫aquí siempre será el de protección.

51
00:02:06,690 --> 00:02:09,130
‫Pero luego, después de ese,

52
00:02:09,130 --> 00:02:13,113
‫también tendremos el authController. restringir.

53
00:02:14,760 --> 00:02:17,000
‫Así que restringe, ¿de acuerdo?

54
00:02:17,000 --> 00:02:20,180
‫Y en esta función pasaremos algunos roles de usuario,

55
00:02:20,180 --> 00:02:23,220
‫que estarán autorizados a interactuar con este recurso.

56
00:02:23,220 --> 00:02:27,030
‫En este caso, con la eliminación de un recorrido, ¿de acuerdo?

57
00:02:27,030 --> 00:02:29,390
‫Así que establezcamos este en admin.

58
00:02:29,390 --> 00:02:31,650
‫Entonces, solo para administradores.

59
00:02:31,650 --> 00:02:35,120
‫Bien, y ahora estamos tratando con roles de usuario aquí.

60
00:02:35,120 --> 00:02:36,650
‫Así que como admin.

61
00:02:36,650 --> 00:02:39,584
‫Y ahora mismo, no tenemos eso en nuestro modelo de usuario.

62
00:02:39,584 --> 00:02:42,642
‫Así que implementemos eso rápidamente aquí.

63
00:02:42,642 --> 00:02:43,633
‫Está bien.

64
00:02:44,470 --> 00:02:48,160
‫Entonces, hagámoslo.

65
00:02:48,160 --> 00:02:52,323
‫En realidad, antes de las contraseñas, como aquí.

66
00:02:56,170 --> 00:02:59,730
‫Y aquí abajo puede ver cómo nuestro controlador de excepciones

67
00:02:59,730 --> 00:03:02,070
‫no detectado está funcionando bien,

68
00:03:02,070 --> 00:03:05,130
‫porque restrictTo aún no es una función, ¿verdad?

69
00:03:05,130 --> 00:03:06,610
‫Aún no lo implementamos.

70
00:03:06,610 --> 00:03:08,810
‫Simplemente lo usé para mostrar qué es exactamente

71
00:03:08,810 --> 00:03:10,410
‫lo que vamos a construir.

72
00:03:10,410 --> 00:03:12,280
‫Y, por supuesto, hay un

73
00:03:12,280 --> 00:03:13,510
‫error, por lo

74
00:03:13,510 --> 00:03:17,490
‫que nodemon ahora está esperando a que reiniciemos el servidor, ¿de acuerdo?

75
00:03:17,490 --> 00:03:20,323
‫De todos modos, el rol aquí debería ser

76
00:03:26,240 --> 00:03:30,110
‫del tipo String, y ahora voy a usar el validador de enumeración para

77
00:03:30,110 --> 00:03:33,310
‫permitir que solo se especifiquen ciertos tipos de roles aquí.

78
00:03:33,310 --> 00:03:37,410
‫Y estos son los usuarios generales, por lo que los normales, así

79
00:03:37,410 --> 00:03:38,860
‫que llamémoslos usuario.

80
00:03:41,170 --> 00:03:42,823
‫Luego, tenemos el guía

81
00:03:44,120 --> 00:03:45,823
‫turístico, tenemos el guía turístico

82
00:03:47,240 --> 00:03:49,043
‫principal y tenemos el administrador.

83
00:03:50,410 --> 00:03:53,250
‫Entonces, solo llamo a ese administrador, ¿de acuerdo?

84
00:03:53,250 --> 00:03:56,359
‫Y estos roles de usuario que tenemos aquí, por

85
00:03:56,359 --> 00:03:59,450
‫supuesto, serán específicos del dominio de la aplicación.

86
00:03:59,450 --> 00:04:02,260
‫Entonces, por ejemplo, cuando está ejecutando un sitio comunitario,

87
00:04:02,260 --> 00:04:03,840
‫no tendrá mucho sentido

88
00:04:03,840 --> 00:04:05,940
‫tener una guía y una guía principal.

89
00:04:05,940 --> 00:04:08,570
‫En su lugar, probablemente

90
00:04:08,570 --> 00:04:11,700
‫tendrá, como moderadores, colaboradores o miembros.

91
00:04:11,700 --> 00:04:13,740
‫Por lo tanto, siempre tendrá diferentes

92
00:04:13,740 --> 00:04:16,680
‫nombres, según el tipo de aplicación que esté escribiendo.

93
00:04:16,680 --> 00:04:19,023
‫Pero en nuestro caso, esto es lo que tiene sentido.

94
00:04:21,290 --> 00:04:24,170
‫Luego, también queremos establecer un valor predeterminado aquí, por

95
00:04:24,170 --> 00:04:26,540
‫lo que en realidad no tenemos que

96
00:04:26,540 --> 00:04:29,080
‫especificar siempre qué tipo de usuario estamos creando.

97
00:04:29,080 --> 00:04:32,320
‫Y entonces usuario, el usuario normal, digamos, es

98
00:04:32,320 --> 00:04:35,220
‫el que se creará por defecto.

99
00:04:35,220 --> 00:04:36,990
‫Así que ahora vayamos

100
00:04:36,990 --> 00:04:39,340
‫a eliminar los usuarios que ya

101
00:04:39,340 --> 00:04:41,021
‫tenemos, porque no

102
00:04:41,021 --> 00:04:45,713
‫tienen ningún rol, por lo que ya no los necesitamos así.

103
00:04:47,780 --> 00:04:48,810
‫Está bien.

104
00:04:48,810 --> 00:04:50,260
‫Entonces, en realidad,

105
00:04:50,260 --> 00:04:52,630
‫sigamos adelante y creemos algunos nuevos.

106
00:04:52,630 --> 00:04:55,980
‫Entonces, me voy a registrar aquí como hola

107
00:04:58,610 --> 00:05:03,610
‫@ jonas, y ahora será un usuario normal, y ahora no pudimos obtener

108
00:05:04,180 --> 00:05:06,060
‫ninguna respuesta, y eso

109
00:05:06,060 --> 00:05:09,320
‫es, por supuesto, porque tenemos este error aquí,

110
00:05:09,320 --> 00:05:13,083
‫así que, vamos a saque rápidamente esta línea de código.

111
00:05:14,750 --> 00:05:16,050
‫Y ahora el error se ha ido.

112
00:05:17,326 --> 00:05:19,400
‫Y ahora debería ejecutarse,

113
00:05:19,400 --> 00:05:22,000
‫y de hecho ahora tenemos este

114
00:05:22,000 --> 00:05:25,120
‫usuario, con el rol de usuario, ¿de acuerdo?

115
00:05:25,120 --> 00:05:26,293
‫Así que ese es

116
00:05:27,920 --> 00:05:29,883
‫nuestro valor predeterminado, pero ahora creemos un administrador aquí.

117
00:05:30,860 --> 00:05:32,330
‫Y para dejar eso

118
00:05:32,330 --> 00:05:34,630
‫realmente claro, pongámoslo aquí en el correo electrónico

119
00:05:34,630 --> 00:05:36,780
‫también, y ahora tenemos que especificar realmente el

120
00:05:40,100 --> 00:05:41,603
‫rol y configurarlo como administrador.

121
00:05:42,860 --> 00:05:47,360
‫Envíe eso, y ahora llegamos a nuestro administrador del sistema.

122
00:05:47,360 --> 00:05:48,193
‫Frio.

123
00:05:48,193 --> 00:05:52,930
‫Entonces, volvamos aquí, en realidad volvamos a poner este código, y

124
00:05:52,930 --> 00:05:55,210
‫ahora lo haremos para que

125
00:05:55,210 --> 00:05:58,360
‫podamos pasar múltiples argumentos a este restrictTo.

126
00:05:58,360 --> 00:06:01,220
‫Entonces, quiero que el administrador pueda eliminar recorridos, pero

127
00:06:01,220 --> 00:06:02,974
‫también eliminar una guía.

128
00:06:02,974 --> 00:06:04,000
‫¿Está bien?

129
00:06:04,000 --> 00:06:05,750
‫Y agreguemos eso aquí también.

130
00:06:08,070 --> 00:06:09,130
‫¿Okey?

131
00:06:09,130 --> 00:06:12,210
‫Por lo tanto, el administrador y la guía principal ahora

132
00:06:12,210 --> 00:06:16,200
‫pueden eliminar recorridos, pero no las guías normales y tampoco los usuarios normales.

133
00:06:16,200 --> 00:06:17,140
‫¿Está bien?

134
00:06:17,140 --> 00:06:20,220
‫Así es como va a funcionar restrictTo,

135
00:06:20,220 --> 00:06:22,423
‫ahora vamos a implementarlo.

136
00:06:25,270 --> 00:06:28,563
‫Entonces exporta. restrictTo, y

137
00:06:30,470 --> 00:06:34,120
‫ahora, ¿cómo vamos a implementar esto?

138
00:06:34,120 --> 00:06:36,510
‫Porque normalmente, no podemos pasar

139
00:06:36,510 --> 00:06:38,910
‫argumentos a una función de middleware, ¿verdad?

140
00:06:38,910 --> 00:06:41,010
‫Pero en este caso, realmente queremos hacerlo.

141
00:06:41,010 --> 00:06:42,640
‫Queremos pasar los

142
00:06:42,640 --> 00:06:46,100
‫roles, ¿quiénes tienen permiso para acceder al recurso, verdad?

143
00:06:46,100 --> 00:06:48,800
‫Entonces, este caso, el administrador y la guía principal.

144
00:06:48,800 --> 00:06:51,940
‫Por lo tanto, necesitamos una forma de pasar argumentos básicamente

145
00:06:51,940 --> 00:06:54,050
‫a la función de middleware de una

146
00:06:54,050 --> 00:06:55,830
‫manera que generalmente no funciona.

147
00:06:55,830 --> 00:06:57,658
‫Entonces, ¿cómo vamos a hacer eso?

148
00:06:57,658 --> 00:07:00,600
‫Bueno, aquí, en realidad crearemos como una

149
00:07:00,600 --> 00:07:03,410
‫función contenedora, que luego devolverá la

150
00:07:03,410 --> 00:07:07,033
‫función de middleware que realmente queremos crear, ¿de acuerdo?

151
00:07:08,070 --> 00:07:10,540
‫Entonces, esta es la función restrictTo, y

152
00:07:10,540 --> 00:07:12,160
‫aquí queremos pasar

153
00:07:12,160 --> 00:07:14,150
‫un número arbitrario de argumentos.

154
00:07:14,150 --> 00:07:15,870
‫Entonces, básicamente, de roles.

155
00:07:15,870 --> 00:07:18,196
‫Y entonces podemos usar la sintaxis del parámetro

156
00:07:18,196 --> 00:07:20,793
‫rest, que nuevamente es nueva en ES6, y esto

157
00:07:21,950 --> 00:07:23,240
‫luego creará una

158
00:07:23,240 --> 00:07:26,053
‫matriz de todos los argumentos que se especificaron, ¿de acuerdo?

159
00:07:28,740 --> 00:07:30,350
‫Así que estamos creando

160
00:07:30,350 --> 00:07:33,960
‫esta función y de inmediato devolveremos una nueva función.

161
00:07:33,960 --> 00:07:36,730
‫Y esta es la función del middleware en sí.

162
00:07:36,730 --> 00:07:40,573
‫Entonces, solicitud, respuesta y siguiente.

163
00:07:43,000 --> 00:07:43,833
‫¿Okey?

164
00:07:43,833 --> 00:07:44,890
‫¿Tener sentido?

165
00:07:44,890 --> 00:07:47,190
‫Entonces, esta función aquí

166
00:07:47,190 --> 00:07:49,643
‫básicamente tendrá acceso al parámetro de

167
00:07:49,643 --> 00:07:53,310
‫este rol aquí, porque hay un cierre, ¿de acuerdo?

168
00:07:53,310 --> 00:07:55,780
‫Entonces, como un comentario aquí para explicar,

169
00:07:55,780 --> 00:07:58,160
‫los roles son una matriz.

170
00:07:58,160 --> 00:08:01,338
‫Entonces, por ejemplo, podría ser,

171
00:08:01,338 --> 00:08:06,338
‫en este caso, administrador y guía principal, ¿de acuerdo?

172
00:08:08,670 --> 00:08:12,490
‫Entonces, ¿cuándo le daremos acceso a un usuario a una ruta determinada?

173
00:08:12,490 --> 00:08:15,410
‫Bueno, básicamente, cuando su rol de

174
00:08:15,410 --> 00:08:19,900
‫usuario está dentro de esta matriz de roles que pasamos, ¿verdad?

175
00:08:19,900 --> 00:08:21,930
‫Digamos que ahora tenemos el usuario

176
00:08:21,930 --> 00:08:24,930
‫normal, que tiene un rol de usuario simple, así

177
00:08:24,930 --> 00:08:26,300
‫que escribámoslo aquí.

178
00:08:26,300 --> 00:08:29,397
‫El rol ahora es solo usuario.

179
00:08:29,397 --> 00:08:32,520
‫Entonces, básicamente, no está contenido en esta matriz

180
00:08:32,520 --> 00:08:36,490
‫y, por lo tanto, ese usuario no tiene permiso, ¿de acuerdo?

181
00:08:36,490 --> 00:08:38,320
‫Y entonces, escribamos eso en código.

182
00:08:38,320 --> 00:08:39,670
‫De hecho, es bastante simple.

183
00:08:40,650 --> 00:08:45,650
‫Entonces, si no roles. incluye, y está bien, una vez

184
00:08:47,072 --> 00:08:50,660
‫más, incluye es un método de matriz muy agradable

185
00:08:50,660 --> 00:08:54,850
‫que está en Java Script disponible en todas las matrices, ¿de acuerdo?

186
00:08:54,850 --> 00:08:57,010
‫Entonces, si esta matriz de roles no

187
00:08:57,010 --> 00:08:58,900
‫incluye el rol del usuario

188
00:08:58,900 --> 00:09:01,800
‫actual, entonces no le damos permiso a ese usuario.

189
00:09:01,800 --> 00:09:04,740
‫¿Y dónde se almacena el rol del usuario actual?

190
00:09:04,740 --> 00:09:07,247
‫Bueno, recordemos la línea de código que

191
00:09:07,247 --> 00:09:09,394
‫pusimos aquí, justo al final donde

192
00:09:09,394 --> 00:09:11,620
‫otorgamos acceso a la ruta protegida,

193
00:09:11,620 --> 00:09:12,900
‫almacenamos el

194
00:09:12,900 --> 00:09:16,460
‫usuario actual en la solicitud. usuario.

195
00:09:16,460 --> 00:09:18,520
‫Y recuerde cómo este middleware

196
00:09:18,520 --> 00:09:21,929
‫de protección siempre se ejecuta antes de restrictTo, ¿verdad?

197
00:09:21,929 --> 00:09:25,330
‫Entonces, aquí, primero tenemos proteger

198
00:09:25,330 --> 00:09:27,391
‫y luego restringir.

199
00:09:27,391 --> 00:09:30,600
‫Y para cuando se ejecuta esta función de middleware aquí,

200
00:09:30,600 --> 00:09:32,660
‫esta ya se ha completado y

201
00:09:32,660 --> 00:09:35,830
‫ha puesto al usuario actual en el objeto de solicitud.

202
00:09:35,830 --> 00:09:38,740
‫Y ahora, podemos usar eso aquí.

203
00:09:38,740 --> 00:09:42,480
‫Así que solicítalo. usuario. papel.

204
00:09:42,480 --> 00:09:45,050
‫Entonces ahí es donde se almacena el rol.

205
00:09:45,050 --> 00:09:45,953
‫Tan sencillo.

206
00:09:46,950 --> 00:09:50,993
‫En este caso, creamos un nuevo error.

207
00:09:52,970 --> 00:09:55,932
‫Así que como antes, y

208
00:09:55,932 --> 00:10:00,932
‫ahora decimos que no tienes permiso para realizar esta acción.

209
00:10:03,680 --> 00:10:07,000
‫Y ahora un nuevo código de estado, que es 403.

210
00:10:07,000 --> 00:10:09,790
‫Y este significa prohibido, ¿de acuerdo?

211
00:10:09,790 --> 00:10:11,400
‫Entonces, realmente hay

212
00:10:11,400 --> 00:10:14,480
‫un código de estado http específico solo para

213
00:10:14,480 --> 00:10:18,180
‫este caso, así que básicamente para la autorización, ¿de acuerdo?

214
00:10:18,180 --> 00:10:22,423
‫Y, bueno, de lo contrario, simplemente llamamos a next.

215
00:10:24,090 --> 00:10:25,580
‫Y eso es realmente.

216
00:10:25,580 --> 00:10:27,910
‫Así que eso es tan simple como es.

217
00:10:27,910 --> 00:10:30,160
‫Así que recapitulemos rápidamente lo que acabamos de hacer aquí.

218
00:10:31,650 --> 00:10:35,140
‫Entonces, aquí, primero ejecutamos el middleware de protección.

219
00:10:35,140 --> 00:10:36,770
‫Luego, restringeTo middleware,

220
00:10:36,770 --> 00:10:39,410
‫y solo si estos dos middlewares pasan al

221
00:10:39,410 --> 00:10:41,100
‫siguiente, pasamos al recorrido principal.

222
00:10:41,100 --> 00:10:42,830
‫Básicamente, este controlador de

223
00:10:42,830 --> 00:10:45,419
‫ruta, o este controlador de ruta, está

224
00:10:45,419 --> 00:10:47,790
‫protegido y también está restringido por este

225
00:10:47,790 --> 00:10:49,750
‫middleware que acabamos de crear.

226
00:10:49,750 --> 00:10:50,800
‫Luego, en

227
00:10:50,800 --> 00:10:52,650
‫esta función, pasamos todos

228
00:10:52,650 --> 00:10:55,730
‫los roles que pueden interactuar con este recurso.

229
00:10:55,730 --> 00:10:57,794
‫Entonces, básicamente, ¿cuáles están autorizados

230
00:10:57,794 --> 00:11:00,310
‫a ejecutar esta función de controlador, de acuerdo?

231
00:11:00,310 --> 00:11:03,370
‫Entonces, esta función restrictTo se ejecutará y

232
00:11:03,370 --> 00:11:06,910
‫devolverá la función de middleware en sí, ¿de acuerdo?

233
00:11:06,910 --> 00:11:11,140
‫Y esa función de middleware en sí es en realidad esta.

234
00:11:11,140 --> 00:11:13,010
‫Entonces, debido al

235
00:11:13,010 --> 00:11:16,500
‫cierre, tendrá acceso a roles, ¿de acuerdo?

236
00:11:16,500 --> 00:11:19,350
‫Y entonces, digamos que el rol del usuario actual, que

237
00:11:19,350 --> 00:11:24,180
‫es, recuerde, almacenado en req. usuario. papel, ¿verdad?

238
00:11:24,180 --> 00:11:27,020
‫Entonces, digamos que su rol es usuario, y

239
00:11:27,020 --> 00:11:29,970
‫dado que ese rol no está en la matriz

240
00:11:29,970 --> 00:11:32,920
‫de este rol, entonces obtenemos este error, ¿de acuerdo?

241
00:11:32,920 --> 00:11:37,583
‫Y eso es lo que este papel. incluye pruebas aquí para, ¿de acuerdo?

242
00:11:38,450 --> 00:11:40,410
‫Pero, por supuesto, si

243
00:11:40,410 --> 00:11:42,860
‫está incluido, pasamos al siguiente middleware.

244
00:11:42,860 --> 00:11:46,130
‫Que de nuevo, es el propio controlador de ruta.

245
00:11:46,130 --> 00:11:46,963
‫Frio.

246
00:11:46,963 --> 00:11:48,120
‫Entonces, espero que tenga sentido.

247
00:11:48,120 --> 00:11:50,453
‫Ahora sigamos adelante y probémoslo rápidamente.

248
00:11:51,390 --> 00:11:52,580
‫¿Okey?

249
00:11:52,580 --> 00:11:54,340
‫Entonces, ahora mismo,

250
00:11:54,340 --> 00:11:58,420
‫tenemos este token aquí, almacenado en la variable JTW, ¿verdad?

251
00:11:58,420 --> 00:12:00,890
‫Así que recuerda eso de la última conferencia.

252
00:12:00,890 --> 00:12:03,233
‫Entonces, estamos en este entorno

253
00:12:03,233 --> 00:12:06,230
‫de desarrollo, y aquí está esa variable.

254
00:12:06,230 --> 00:12:08,080
‫Así que exactamente el que está aquí abajo.

255
00:12:09,540 --> 00:12:10,373
‫¿Está bien?

256
00:12:10,373 --> 00:12:12,600
‫Entonces, si ahora elimináramos

257
00:12:12,600 --> 00:12:16,914
‫un recorrido, tendríamos que especificar esa variable allí, ¿verdad?

258
00:12:16,914 --> 00:12:19,936
‫Así que vayamos a la autorización, el token

259
00:12:19,936 --> 00:12:21,970
‫de portador, y luego

260
00:12:21,970 --> 00:12:24,470
‫ya lo pone aquí para nosotros.

261
00:12:24,470 --> 00:12:25,980
‫Entonces ya sabe

262
00:12:25,980 --> 00:12:28,480
‫que este es el que queremos usar,

263
00:12:28,480 --> 00:12:30,544
‫porque, bueno, lo usamos antes, ¿vale?

264
00:12:30,544 --> 00:12:32,960
‫Ahora, quiero comenzar mostrándole que un

265
00:12:32,960 --> 00:12:36,710
‫usuario normal no puede eliminar un recorrido ahora, ¿de acuerdo?

266
00:12:36,710 --> 00:12:40,183
‫Entonces, comencemos iniciando sesión como un usuario regular.

267
00:12:41,300 --> 00:12:44,253
‫Y eso es hola, ¿verdad?

268
00:12:45,530 --> 00:12:50,530
‫Recuerda, ahora mismo tenemos hola @ jonas. io, que es un usuario normal, y

269
00:12:50,670 --> 00:12:54,410
‫tenemos admin @ jonas. io.

270
00:12:54,410 --> 00:12:58,350
‫Y todavía tenemos este viejo aquí, eliminémoslo.

271
00:12:58,350 --> 00:12:59,183
‫Está bien.

272
00:12:59,183 --> 00:13:01,803
‫Y entonces empezaré con hola @ jonas. io.

273
00:13:03,630 --> 00:13:04,650
‫¿Okey?

274
00:13:04,650 --> 00:13:08,470
‫Entonces, al iniciar sesión, ese token se almacenará en la variable

275
00:13:08,470 --> 00:13:10,770
‫de entorno, y ahora estamos listos

276
00:13:10,770 --> 00:13:12,670
‫para eliminar un recorrido.

277
00:13:13,530 --> 00:13:16,440
‫De hecho, también necesitamos obtener una identificación ahora, así

278
00:13:16,440 --> 00:13:18,940
‫que obtengamos una rápidamente desde aquí, así

279
00:13:18,940 --> 00:13:22,063
‫que básicamente vamos a eliminar uno de nuestros recorridos aquí.

280
00:13:25,450 --> 00:13:27,420
‫Así que usemos el último aquí.

281
00:13:27,420 --> 00:13:28,683
‫Entonces, el Stargazer.

282
00:13:31,356 --> 00:13:32,189
‫¿Okey?

283
00:13:32,189 --> 00:13:35,570
‫Y veamos si recibimos nuestro mensaje de error.

284
00:13:35,570 --> 00:13:38,290
‫Y, de hecho, no tiene permiso para

285
00:13:38,290 --> 00:13:39,620
‫realizar esta acción.

286
00:13:39,620 --> 00:13:41,610
‫Entonces, 403.

287
00:13:41,610 --> 00:13:44,823
‫Entonces, de hecho, está funcionando, ¿verdad?

288
00:13:46,150 --> 00:13:47,630
‫Pero, para completar

289
00:13:47,630 --> 00:13:50,433
‫esto ahora, por supuesto, inicie sesión como administrador.

290
00:13:52,830 --> 00:13:53,823
‫Entonces, admin.

291
00:13:55,480 --> 00:13:56,540
‫Acceso.

292
00:13:56,540 --> 00:14:00,000
‫Y entonces este token ahora se almacena en esta variable.

293
00:14:00,000 --> 00:14:01,500
‫Entonces, si ejecuta

294
00:14:01,500 --> 00:14:04,910
‫esto ahora, deberíamos poder eliminar el recorrido de manera efectiva.

295
00:14:04,910 --> 00:14:05,743
‫¿Quiero ver?

296
00:14:07,720 --> 00:14:09,240
‫Y se ha ido.

297
00:14:09,240 --> 00:14:11,920
‫Entonces tenemos un código 204, sin contenido, que

298
00:14:11,920 --> 00:14:13,999
‫es el estándar al eliminar, pero

299
00:14:13,999 --> 00:14:16,259
‫ahora, si obtenemos todos nuestros recorridos,

300
00:14:16,259 --> 00:14:19,090
‫deberíamos ver un número ocho aquí, por lo

301
00:14:19,090 --> 00:14:20,460
‫que solo ocho

302
00:14:20,460 --> 00:14:24,350
‫resultados, y eso significa que el último es ahora ido, ¿de acuerdo?

303
00:14:24,350 --> 00:14:26,520
‫Y ahora mismo, como acabamos de

304
00:14:26,520 --> 00:14:28,496
‫demostrar, un administrador tiene

305
00:14:28,496 --> 00:14:31,671
‫permiso para eliminar recorridos de forma efectiva, ¿de acuerdo?

306
00:14:31,671 --> 00:14:34,372
‫Y, realmente no puedo enfatizar lo

307
00:14:34,372 --> 00:14:38,060
‫suficiente lo importante que es este fragmento de código aquí.

308
00:14:38,060 --> 00:14:40,980
‫Entonces, básicamente, de dónde obtuvimos el rol del

309
00:14:40,980 --> 00:14:43,550
‫usuario actual del middleware antes, ¿de acuerdo?

310
00:14:43,550 --> 00:14:46,804
‫Entonces, almacenar al usuario en la solicitud como lo

311
00:14:46,804 --> 00:14:48,770
‫hicimos aquí, es realmente

312
00:14:48,770 --> 00:14:52,170
‫crucial para que este próximo paso realmente funcione, ¿de acuerdo?

313
00:14:52,170 --> 00:14:55,760
‫Entonces, la ID que está codificada en el token web de Jason es lo

314
00:14:55,760 --> 00:14:57,990
‫que hace que nuestro código sepa si el

315
00:14:57,990 --> 00:15:01,470
‫usuario que está tratando de realizar la acción es un usuario, si es un

316
00:15:01,470 --> 00:15:04,900
‫administrador, o si es una guía de clientes potenciales, o lo que sea.

317
00:15:04,900 --> 00:15:06,790
‫Nuevamente, porque esos

318
00:15:06,790 --> 00:15:09,730
‫datos provienen de este middleware de protección.

319
00:15:09,730 --> 00:15:10,563
‫Excelente.

320
00:15:10,563 --> 00:15:13,790
‫Esta fue otra pieza importante del rompecabezas en

321
00:15:13,790 --> 00:15:17,040
‫la implementación de nuestro flujo de trabajo de autenticación aquí.

322
00:15:17,040 --> 00:15:19,821
‫Y, por supuesto, desea restringir muchas

323
00:15:19,821 --> 00:15:23,479
‫otras rutas, por ejemplo, actualizar aquí, ¿de acuerdo?

324
00:15:23,479 --> 00:15:25,300
‫Pero lo dejaré para un

325
00:15:25,300 --> 00:15:27,320
‫punto posterior del curso, ¿de acuerdo?

326
00:15:27,320 --> 00:15:29,420
‫Aquí mismo, solo quería mostrarte

327
00:15:29,420 --> 00:15:31,663
‫cómo funciona todo esto, ¿de acuerdo?

328
00:15:32,730 --> 00:15:35,600
‫Entonces, creo que lo hice con éxito.

329
00:15:35,600 --> 00:15:38,620
‫Espero que haya entendido cómo funcionó esto y, por supuesto,

330
00:15:38,620 --> 00:15:41,668
‫si no es así, siempre puede hacer una pregunta en

331
00:15:41,668 --> 00:15:44,300
‫la sección oficial de preguntas y respuestas.

332
00:15:44,300 --> 00:15:47,840
‫De todos modos, hay más contenido excelente en este momento,

333
00:15:47,840 --> 00:15:49,483
‫así que sigamos adelante.

