1
00:00:00,210 --> 00:00:03,550
Bienvenido de nuevo a esta lección, vamos a ver material nuevo y divertido.

2
00:00:03,600 --> 00:00:09,240
Vamos a combinar nuestro modelo de usuario con la autenticación que hemos cubierto con campings para asegurarnos de que un

3
00:00:09,240 --> 00:00:14,640
usuario no puede eliminar el camping que no creó o que un usuario no puede editar un camping que

4
00:00:14,640 --> 00:00:15,980
él o ella no creó

5
00:00:16,200 --> 00:00:18,450
Y esto es algo que se llama autorización.

6
00:00:18,600 --> 00:00:25,830
Por lo tanto, la autenticación y la autorización son diferentes. La autenticación se refiere a averiguar si alguien es

7
00:00:25,830 --> 00:00:27,190
quien dice ser.

8
00:00:27,450 --> 00:00:30,780
La autorización del pozo es una vez que sabes quién es alguien.

9
00:00:30,810 --> 00:00:33,090
Tú descubres lo que se les permite hacer.

10
00:00:33,090 --> 00:00:34,840
Así que piensa en ello como permisos.

11
00:00:35,040 --> 00:00:40,500
¿Qué puede alguien qué está autorizado a hacer alguien con su autorización de seguridad en nuestra aplicación?

12
00:00:41,190 --> 00:00:47,220
Entonces, si no tienes un campamento, no tienes el mismo I. RE. como el autor de los

13
00:00:47,220 --> 00:00:49,710
campamentos, no podrá actualizarlo ni eliminarlo.

14
00:00:49,980 --> 00:00:56,790
Comencemos de manera simple y trabajemos con ello para que no pueda darle la forma de edición a menos que sea

15
00:00:56,940 --> 00:00:58,270
el dueño del campamento.

16
00:00:58,290 --> 00:01:01,970
Así que vamos a nuestras rutas de campamento aquí.

17
00:01:02,400 --> 00:01:08,880
Y lo que queremos hacer es intentar e ir a la ruta del campamento o actualizar y, finalmente, eliminar

18
00:01:08,880 --> 00:01:13,400
también los tres de ellos, necesitamos tener la misma lógica donde simplemente comprobamos.

19
00:01:13,560 --> 00:01:19,200
¿El usuario actual es I. RE. coincide con la identificación del autor para ese campamento.

20
00:01:19,440 --> 00:01:25,720
Así que recuerda que esta es la estructura de datos en la que utilizamos el modelo de camping.

21
00:01:25,980 --> 00:01:32,790
Tenemos autor para cada campamento y hay un I. RE. eso va a ser un yo RE. para un usuario, hace referencia al

22
00:01:32,790 --> 00:01:40,230
objeto de un usuario en particular I. RE. y luego tenemos un usuario por supuesto que tiene un objeto I. RE. No se especifica aquí, pero

23
00:01:40,230 --> 00:01:46,350
cada usuario tiene un I. RE. y vamos a comparar los usuarios actualmente conectados I. RE. al identificador de

24
00:01:46,350 --> 00:01:53,700
punto del autor del camping para que podamos hacerlo con bastante facilidad si subimos a nuestro sitio.

25
00:01:53,700 --> 00:01:54,650
Comenzaremos allí.

26
00:01:54,900 --> 00:02:01,970
Y lo primero que queremos hacer es verificar si alguien está conectado al usuario.

27
00:02:02,640 --> 00:02:07,550
Y luego, si no, redirigiremos el verano.

28
00:02:08,430 --> 00:02:15,020
Si un usuario está conectado, el usuario es dueño del campamento.

29
00:02:15,840 --> 00:02:24,900
Y si es así, dejaremos que el usuario ejecute este código, busque mi ID y elimine todo.

30
00:02:24,900 --> 00:02:27,420
De lo contrario, también lo redirigiremos.

31
00:02:28,260 --> 00:02:33,020
Así que vamos a completar esto para comenzar a ver si alguien ha iniciado sesión.

32
00:02:33,240 --> 00:02:39,020
Solo podemos escribir si se autentica.

33
00:02:39,300 --> 00:02:44,140
También podríamos usar el medio donde ya definimos aquí está conectado.

34
00:02:44,250 --> 00:02:46,670
Te mostraré en un momento por qué no vamos a hacer eso.

35
00:02:46,680 --> 00:02:50,100
La respuesta corta es que estamos definiendo nuestro propio middleware y solo un poco.

36
00:02:50,160 --> 00:02:53,670
Así que vamos a combinar esa funcionalidad en lugar de este middleware.

37
00:02:53,670 --> 00:02:59,970
Entonces, si se autentica una solicitud, si ese es el caso, entonces estamos listos para continuar.

38
00:02:59,970 --> 00:03:06,040
Si ese no es el caso, hagamos un registro constante para comenzar.

39
00:03:06,630 --> 00:03:14,850
Debe iniciar sesión para hacer eso y luego haremos una respuesta.

40
00:03:15,120 --> 00:03:21,480
Y hagamos un envío para comenzar la respuesta de envío y lo enviaremos en realidad.

41
00:03:21,530 --> 00:03:26,710
Entonces, si vemos que sabremos que no hemos iniciado sesión, lo primero estará funcionando.

42
00:03:26,970 --> 00:03:35,750
Copiemos este código dentro de la sentencia if y sangríamos correctamente.

43
00:03:36,540 --> 00:03:37,190
DE ACUERDO.

44
00:03:37,380 --> 00:03:38,820
Entonces debemos iniciar sesión

45
00:03:38,970 --> 00:03:41,490
Lo cual no es nada nuevo, ya hemos escrito el código para hacer esto.

46
00:03:41,520 --> 00:03:44,900
Entonces, podrías estar pensando adónde voy acerca de esto de una manera extraña, lo que realmente somos.

47
00:03:44,910 --> 00:03:46,460
Pero verás en un momento por qué.

48
00:03:46,710 --> 00:03:48,150
Probémoslo sin embargo.

49
00:03:48,280 --> 00:03:51,110
Guardar iniciar el servidor.

50
00:03:51,720 --> 00:03:54,300
Y cuando empiezo no estoy conectado.

51
00:03:54,300 --> 00:03:55,360
Nadie ha iniciado sesión

52
00:03:55,620 --> 00:03:57,900
Entonces, si intento ir a la barra, me

53
00:04:01,380 --> 00:04:03,530
dice que debes iniciar sesión para hacerlo.

54
00:04:03,690 --> 00:04:06,730
Entonces nuestra primera parte está funcionando bien.

55
00:04:07,050 --> 00:04:12,990
Luego, una vez que estamos bloqueados vamos a tener otra declaración aquí, que es donde se verificará.

56
00:04:13,770 --> 00:04:16,610
¿El usuario es dueño del campamento?

57
00:04:17,700 --> 00:04:20,670
Y la forma en que haremos eso es bastante simple.

58
00:04:20,670 --> 00:04:24,600
Lo primero que tenemos que hacer es encontrar el camping que ya hemos hecho aquí mismo.

59
00:04:25,050 --> 00:04:32,580
Y luego, una vez que lo encontramos, debemos verificar si el ID del autor en ese campamento coincide con

60
00:04:32,580 --> 00:04:35,390
el usuario actual que solicita ese usuario.

61
00:04:35,460 --> 00:04:37,170
Entonces estamos listos para irnos.

62
00:04:37,170 --> 00:04:42,900
Así que dentro de aquí es donde realmente hacemos el usuario en el campamento.

63
00:04:43,080 --> 00:04:47,880
Mantendremos el primer bit para verificar si hay un error si no hay error, entonces lo revisaremos.

64
00:04:47,880 --> 00:04:54,030
B si ID de autor del punto de camping, ya que podría pensar que podríamos hacer esto.

65
00:04:54,650 --> 00:05:01,980
¿Hay un usuario en el campamento porque eso significa que el camping encontrado existe y luego tendremos una declaración if y

66
00:05:01,980 --> 00:05:03,170
Igual es igual a igual

67
00:05:03,450 --> 00:05:07,940
Solicitar que el usuario marque la ID de subrayado.

68
00:05:07,950 --> 00:05:16,290
Así que permítanme mostrarles lo que quiero decir, hagámoslo, identifiquemos el ID de usuario del registro de contactos y, a

69
00:05:16,290 --> 00:05:20,430
continuación, cancelaremos la solicitud de registro que el usuario destaque.

70
00:05:20,520 --> 00:05:22,010
Entonces un comentario fuera de la declaración if.

71
00:05:22,320 --> 00:05:24,320
Entonces veremos esas dos líneas.

72
00:05:25,730 --> 00:05:30,530
sesión, por supuesto, si solo intento actualizar en este momento sin iniciar sesión, tenemos un error.

73
00:05:30,530 --> 00:05:31,510
Tendré que iniciar

74
00:05:32,240 --> 00:05:36,800
Pero si me conecto ahora tengo el inicio de

75
00:05:40,190 --> 00:05:46,350
sesión de Potato Head y luego vuelvo a la mina de granito.

76
00:05:46,610 --> 00:05:47,580
Tenemos un problema.

77
00:05:47,750 --> 00:05:49,950
Parece que vamos a ver.

78
00:05:50,300 --> 00:05:55,280
Bueno, eso fue una tontería e intentar cancelar como camping en el camping Arthur no existe.

79
00:05:55,310 --> 00:05:57,130
Se encuentra camping.

80
00:05:57,350 --> 00:06:01,450
Así que lo intentaré de nuevo reiniciar el servidor.

81
00:06:02,660 --> 00:06:04,430
Primera vez que estamos frescos.

82
00:06:04,730 --> 00:06:07,310
Ya sabes decirnos que debes estar conectado todavía.

83
00:06:07,310 --> 00:06:11,810
Así que de nuevo inicia sesión en Potato Head.

84
00:06:11,810 --> 00:06:12,860
Contraseña.

85
00:06:13,270 --> 00:06:14,000
DE ACUERDO.

86
00:06:14,570 --> 00:06:15,650
Ahora, si intento obtenerlo,

87
00:06:18,710 --> 00:06:21,050
eche un vistazo a lo que vemos aquí.

88
00:06:21,110 --> 00:06:23,370
Lo primero que imprimimos es así.

89
00:06:23,390 --> 00:06:30,530
Entonces se encuentra el camping Arthur ID y luego tenemos solicitudes de datos de usuario I. RE. y se ven como si

90
00:06:30,590 --> 00:06:31,650
fueran idénticos.

91
00:06:32,120 --> 00:06:34,370
Y cuando se imprimen, son idénticos.

92
00:06:34,370 --> 00:06:42,140
Pero detrás de las escenas en realidad no son lo mismo, así que solicita que el ID de usuario que subrayó su ID sea una cadena

93
00:06:42,680 --> 00:06:47,500
encontrada. ID de punto de autor del camping es un objeto, es un objeto de mangosta.

94
00:06:47,510 --> 00:06:49,380
Y esto es simplemente complicado.

95
00:06:49,710 --> 00:06:54,080
Me olvido de vez en cuando, es realmente frustrante porque se ven iguales cuando intentas

96
00:06:54,080 --> 00:06:59,440
depurar, pero la verdad es que el primero no es en realidad una cuerda, es un objeto de mangosta.

97
00:06:59,540 --> 00:07:00,530
Ese que imprimimos.

98
00:07:00,530 --> 00:07:04,470
Vemos una cadena, pero esa es solo la versión de dos cadenas.

99
00:07:04,490 --> 00:07:06,460
Detrás de escena no es una cadena.

100
00:07:06,740 --> 00:07:07,610
Y esta es una cadena.

101
00:07:07,610 --> 00:07:09,750
Entonces, cuando los comparemos, no funcionará.

102
00:07:10,070 --> 00:07:16,190
Entonces, en lugar de compararlos con el triple igual o el doble es igual a lo que podemos hacer, en su lugar se usa

103
00:07:16,610 --> 00:07:19,200
un método que la mangosta nos da para este propósito.

104
00:07:19,520 --> 00:07:23,180
Entonces, lo que hacemos es escribir un enunciado IF en lugar de verificar campgrounds.

105
00:07:23,210 --> 00:07:26,620
El autor Dodd ID triple es igual a la solicitud en la identificación del usuario.

106
00:07:26,870 --> 00:07:31,650
Usamos puntos iguales.

107
00:07:31,650 --> 00:07:33,070
Aquí vamos.

108
00:07:33,950 --> 00:07:39,710
Y ahora nuestra declaración IF debería funcionar, excepto por el hecho de que es necesario volver a encontrarla en el campamento. Lo

109
00:07:39,810 --> 00:07:43,000
que regresará a la base de datos que encontramos utilizando esa ID.

110
00:07:43,040 --> 00:07:50,240
Entonces, descubrimos que con la ID basada en la ruta, verificamos si la identificación del autor en ese campamento

111
00:07:50,240 --> 00:07:54,530
encontrado es igual a la identificación de los usuarios actualmente conectados.

112
00:07:54,560 --> 00:07:57,090
Si ese es el caso, haremos una cosa.

113
00:07:57,230 --> 00:07:58,750
De lo contrario, haremos algo más.

114
00:07:58,760 --> 00:08:08,420
Entonces, si ese es el caso, haremos esto aquí, render la página de camping de la página de edición de camping con

115
00:08:08,420 --> 00:08:09,090
camping encontrado.

116
00:08:09,230 --> 00:08:11,320
De lo contrario, haremos un resto.

117
00:08:11,720 --> 00:08:19,320
No tiene permiso para hacerlo, por supuesto, esto cambiará con el tiempo o no será un punto rojo,

118
00:08:19,330 --> 00:08:22,520
pero tendremos un mensaje real que se mostrará.

119
00:08:22,520 --> 00:08:23,330
a intentar ir

120
00:08:26,390 --> 00:08:33,470
a nuestra aplicación para ir a la página de un programa primero, si intento y edito en este momento, necesito iniciar sesión.

121
00:08:33,470 --> 00:08:34,280
Así que vamos

122
00:08:34,550 --> 00:08:40,910
Ahora bien, si me conecto o me suscribo como alguien que no sea Potato Head, lo

123
00:08:43,700 --> 00:08:49,070
haré con cabeza de tomate y lo intentaré y lo editaré con suerte.

124
00:08:49,100 --> 00:08:52,160
Ahí vamos, te entiendo, no tienes permiso para hacer eso.

125
00:08:52,280 --> 00:08:58,010
Ahora si volvemos y desconectamos y volvemos a iniciar sesión como Potato

126
00:09:01,370 --> 00:09:05,730
Head y lo intentamos todo de nuevo, intento y edito.

127
00:09:06,020 --> 00:09:07,010
Yo tengo permiso.

128
00:09:07,040 --> 00:09:08,270
Y termino aquí.

129
00:09:08,270 --> 00:09:09,420
Entonces está funcionando.

130
00:09:09,440 --> 00:09:10,750
Lo cual es genial.

131
00:09:10,880 --> 00:09:15,750
Ahora lo que haremos es refactorizar esto en una función separada.

132
00:09:15,800 --> 00:09:18,200
La mayor parte de esta lógica lo llamará algo así como.

133
00:09:18,200 --> 00:09:26,060
Verifique el campamento del usuario o asegúrese de que el usuario del camping cumpla con lo que básicamente comprobamos si el usuario que

134
00:09:26,060 --> 00:09:29,030
está conectado actualmente coincide con este campamento en particular.

135
00:09:29,240 --> 00:09:34,050
Y la razón por la que pasaremos eso al middleware es que lo usaremos en edición.

136
00:09:34,190 --> 00:09:35,920
También queremos usarlo en la actualización.

137
00:09:35,960 --> 00:09:39,110
No deseamos que alguien pueda enviar una solicitud si no está conectado.

138
00:09:39,110 --> 00:09:41,890
Así que aunque solo sea usando el navegador.

139
00:09:42,050 --> 00:09:48,110
La única forma de llegar a la actualización para enviar datos es utilizando este formulario.

140
00:09:48,350 --> 00:09:53,110
Podría usar cartero, podría enviar una solicitud del cartero y no ser autenticado.

141
00:09:53,120 --> 00:09:57,850
Entonces queremos la misma lógica aquí y queremos hacer lo mismo para eliminar.

142
00:09:57,920 --> 00:10:02,640
Por lo tanto, no queremos que puedas eliminar algo de un campamento si no estás conectado.

143
00:10:02,690 --> 00:10:04,680
Y si no eres el propietario

144
00:10:04,970 --> 00:10:10,080
Entonces, lo que haremos es escribir un middleware, copiaremos este código por ahora.

145
00:10:10,220 --> 00:10:15,850
Lo dejaré allí, pero vamos a bajar por ahora solo con nuestro otro middleware.

146
00:10:15,920 --> 00:10:22,290
Bueno, el último llamado propiedad de check camp justo así.

147
00:10:22,580 --> 00:10:25,380
Y luego pegaremos este código y tendremos un poco de trabajo que hacer aquí.

148
00:10:25,670 --> 00:10:31,940
Pero el objetivo final es que en nuestra edición podamos agregar nuestro middleware aquí, verificar la propiedad del camping.

149
00:10:32,750 --> 00:10:35,030
Deberíamos poder actualizarlo.

150
00:10:35,050 --> 00:10:39,930
Y también en eliminar pero comenzaremos con esto y lo que queremos hacer es verificar.

151
00:10:39,930 --> 00:10:47,030
Primero debe agregar una respuesta de solicitud y luego recordar que el middleware está configurado para la respuesta de solicitud

152
00:10:47,060 --> 00:10:47,860
a continuación.

153
00:10:47,870 --> 00:10:50,140
Entonces, si el usuario está actualmente conectado.

154
00:10:50,330 --> 00:10:55,550
Sigue moviéndote si no estás conectado en lugar de descansar.

155
00:10:55,760 --> 00:10:59,860
Por ahora vamos a hacer un redireccionamiento de restaurante y aún no hemos visto esto.

156
00:10:59,990 --> 00:11:05,140
Podemos redireccionar redireccionar hacia atrás y eso llevará al usuario a donde vinieron más.

157
00:11:05,150 --> 00:11:10,440
La página anterior en la que estaban y muy pronto te mostrarán cómo podemos enviar un mensaje.

158
00:11:10,460 --> 00:11:16,010
Bueno, el mensaje que queremos enviar es algo así como No estás conectado o debes permitirte

159
00:11:16,010 --> 00:11:19,010
hacerlo, pero lo dejamos así por el momento.

160
00:11:19,010 --> 00:11:22,310
Entonces, si están conectados, vamos a encontrar el campamento.

161
00:11:22,610 --> 00:11:26,420
Si hay un error, también lo redirigiremos nuevamente.

162
00:11:26,420 --> 00:11:31,630
De nuevo, este error podría ocurrir si el camping no se puede encontrar por algún

163
00:11:31,630 --> 00:11:39,440
motivo o si la base de datos no está conectada o es algo extraño que normalmente no veríamos si el camping coincide con

164
00:11:39,560 --> 00:11:41,690
el ID de usuario de las solicitudes.

165
00:11:41,690 --> 00:11:47,480
Entonces, si el usuario que le gusta es dueño de esto entonces, en lugar de renderizar campgrounds edit

166
00:11:47,480 --> 00:11:53,530
porque no siempre queremos que este middleware renderice edit, lo que queremos es movernos al resto del código en

167
00:11:53,550 --> 00:11:57,010
delete o pasar al código una actualización o una edición.

168
00:11:57,020 --> 00:12:00,870
Así que ahí es donde lo haremos a continuación.

169
00:12:00,910 --> 00:12:08,510
De lo contrario, si no lo poseen, haremos un redireccionamiento de rez.

170
00:12:08,510 --> 00:12:09,330
Estupendo.

171
00:12:09,410 --> 00:12:16,200
Probemos esto, guárdelo y vamos a actualizar nuestra ruta de edición aquí.

172
00:12:16,310 --> 00:12:23,180
Podemos reducir esto mucho, así que no tenemos que hacer nada de esto realmente, excepto que queremos encontrar el

173
00:12:23,180 --> 00:12:31,370
campamento y todo lo que haremos es si encontramos un campamento, no necesitamos verificar si coincide más porque estamos haciendo eso en

174
00:12:31,370 --> 00:12:37,220
el medio, así que todo lo que queremos hacer es encontrar un camping que nos deshaga

175
00:12:37,220 --> 00:12:38,390
de todo esto.

176
00:12:38,510 --> 00:12:39,320
un poco.

177
00:12:42,770 --> 00:12:48,550
Casi todos los formatos de Office son correctos así que saldrán

178
00:12:48,550 --> 00:12:49,840
Aquí vamos.

179
00:12:50,690 --> 00:12:57,290
Entonces, debido a que agregamos la tasa de propiedad del camping de Scheck, todo lo que estamos haciendo ahora es que

180
00:12:57,290 --> 00:13:02,800
si llegamos a este punto, significa que ya verificamos la propiedad del camping y que lo logramos.

181
00:13:03,230 --> 00:13:08,030
De lo contrario, si hay un problema que habríamos redirigido que ver con el error que estoy

182
00:13:08,030 --> 00:13:14,970
obteniendo es que aquí tenemos un pequeño error de sintaxis que de alguna manera borré la declaración de mi función y puede ver que

183
00:13:14,990 --> 00:13:18,440
se queja de que no estamos manejando el error que podríamos manejar

184
00:13:18,440 --> 00:13:24,350
que, si llegamos a este punto, no debería haber un error al encontrar PI ID porque lo hicimos aquí.

185
00:13:24,350 --> 00:13:25,690
Pero la cuestión es

186
00:13:25,990 --> 00:13:29,370
Y si funciona aquí, entonces deberíamos irnos de todos modos.

187
00:13:29,390 --> 00:13:33,590
Así que probémoslo, veamos si tenemos algún problema.

188
00:13:33,620 --> 00:13:36,610
Básicamente, simplemente cambiamos nuestro código a una función separada.

189
00:13:37,040 --> 00:13:41,650
Y recuerda que se llama un middleware antes de llegar al manejador de la derecha.

190
00:13:42,140 --> 00:13:42,530
DE ACUERDO.

191
00:13:42,560 --> 00:13:43,980
Entonces, demos una oportunidad.

192
00:13:44,120 --> 00:13:49,270
Primero, volvamos y digamos intentemos hacer clic en editar.

193
00:13:49,280 --> 00:13:51,910
No estoy conectado.

194
00:13:51,950 --> 00:13:54,170
Debería redirigirme a donde estaba
