Bienvenido de nuevo a esta lección, vamos a ver material nuevo y divertido.
Vamos a combinar nuestro modelo de usuario con la autenticación que hemos cubierto con campings para asegurarnos de que un
usuario no puede eliminar el camping que no creó o que un usuario no puede editar un camping que
él o ella no creó
Y esto es algo que se llama autorización.
Por lo tanto, la autenticación y la autorización son diferentes. La autenticación se refiere a averiguar si alguien es
quien dice ser.
La autorización del pozo es una vez que sabes quién es alguien.
Tú descubres lo que se les permite hacer.
Así que piensa en ello como permisos.
¿Qué puede alguien qué está autorizado a hacer alguien con su autorización de seguridad en nuestra aplicación?
Entonces, si no tienes un campamento, no tienes el mismo I. RE. como el autor de los
campamentos, no podrá actualizarlo ni eliminarlo.
Comencemos de manera simple y trabajemos con ello para que no pueda darle la forma de edición a menos que sea
el dueño del campamento.
Así que vamos a nuestras rutas de campamento aquí.
Y lo que queremos hacer es intentar e ir a la ruta del campamento o actualizar y, finalmente, eliminar
también los tres de ellos, necesitamos tener la misma lógica donde simplemente comprobamos.
¿El usuario actual es I. RE. coincide con la identificación del autor para ese campamento.
Así que recuerda que esta es la estructura de datos en la que utilizamos el modelo de camping.
Tenemos autor para cada campamento y hay un I. RE. eso va a ser un yo RE. para un usuario, hace referencia al
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
cada usuario tiene un I. RE. y vamos a comparar los usuarios actualmente conectados I. RE. al identificador de
punto del autor del camping para que podamos hacerlo con bastante facilidad si subimos a nuestro sitio.
Comenzaremos allí.
Y lo primero que queremos hacer es verificar si alguien está conectado al usuario.
Y luego, si no, redirigiremos el verano.
Si un usuario está conectado, el usuario es dueño del campamento.
Y si es así, dejaremos que el usuario ejecute este código, busque mi ID y elimine todo.
De lo contrario, también lo redirigiremos.
Así que vamos a completar esto para comenzar a ver si alguien ha iniciado sesión.
Solo podemos escribir si se autentica.
También podríamos usar el medio donde ya definimos aquí está conectado.
Te mostraré en un momento por qué no vamos a hacer eso.
La respuesta corta es que estamos definiendo nuestro propio middleware y solo un poco.
Así que vamos a combinar esa funcionalidad en lugar de este middleware.
Entonces, si se autentica una solicitud, si ese es el caso, entonces estamos listos para continuar.
Si ese no es el caso, hagamos un registro constante para comenzar.
Debe iniciar sesión para hacer eso y luego haremos una respuesta.
Y hagamos un envío para comenzar la respuesta de envío y lo enviaremos en realidad.
Entonces, si vemos que sabremos que no hemos iniciado sesión, lo primero estará funcionando.
Copiemos este código dentro de la sentencia if y sangríamos correctamente.
DE ACUERDO.
Entonces debemos iniciar sesión
Lo cual no es nada nuevo, ya hemos escrito el código para hacer esto.
Entonces, podrías estar pensando adónde voy acerca de esto de una manera extraña, lo que realmente somos.
Pero verás en un momento por qué.
Probémoslo sin embargo.
Guardar iniciar el servidor.
Y cuando empiezo no estoy conectado.
Nadie ha iniciado sesión
Entonces, si intento ir a la barra, me
dice que debes iniciar sesión para hacerlo.
Entonces nuestra primera parte está funcionando bien.
Luego, una vez que estamos bloqueados vamos a tener otra declaración aquí, que es donde se verificará.
¿El usuario es dueño del campamento?
Y la forma en que haremos eso es bastante simple.
Lo primero que tenemos que hacer es encontrar el camping que ya hemos hecho aquí mismo.
Y luego, una vez que lo encontramos, debemos verificar si el ID del autor en ese campamento coincide con
el usuario actual que solicita ese usuario.
Entonces estamos listos para irnos.
Así que dentro de aquí es donde realmente hacemos el usuario en el campamento.
Mantendremos el primer bit para verificar si hay un error si no hay error, entonces lo revisaremos.
B si ID de autor del punto de camping, ya que podría pensar que podríamos hacer esto.
¿Hay un usuario en el campamento porque eso significa que el camping encontrado existe y luego tendremos una declaración if y
Igual es igual a igual
Solicitar que el usuario marque la ID de subrayado.
Así que permítanme mostrarles lo que quiero decir, hagámoslo, identifiquemos el ID de usuario del registro de contactos y, a
continuación, cancelaremos la solicitud de registro que el usuario destaque.
Entonces un comentario fuera de la declaración if.
Entonces veremos esas dos líneas.
sesión, por supuesto, si solo intento actualizar en este momento sin iniciar sesión, tenemos un error.
Tendré que iniciar
Pero si me conecto ahora tengo el inicio de
sesión de Potato Head y luego vuelvo a la mina de granito.
Tenemos un problema.
Parece que vamos a ver.
Bueno, eso fue una tontería e intentar cancelar como camping en el camping Arthur no existe.
Se encuentra camping.
Así que lo intentaré de nuevo reiniciar el servidor.
Primera vez que estamos frescos.
Ya sabes decirnos que debes estar conectado todavía.
Así que de nuevo inicia sesión en Potato Head.
Contraseña.
DE ACUERDO.
Ahora, si intento obtenerlo,
eche un vistazo a lo que vemos aquí.
Lo primero que imprimimos es así.
Entonces se encuentra el camping Arthur ID y luego tenemos solicitudes de datos de usuario I. RE. y se ven como si
fueran idénticos.
Y cuando se imprimen, son idénticos.
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
encontrada. ID de punto de autor del camping es un objeto, es un objeto de mangosta.
Y esto es simplemente complicado.
Me olvido de vez en cuando, es realmente frustrante porque se ven iguales cuando intentas
depurar, pero la verdad es que el primero no es en realidad una cuerda, es un objeto de mangosta.
Ese que imprimimos.
Vemos una cadena, pero esa es solo la versión de dos cadenas.
Detrás de escena no es una cadena.
Y esta es una cadena.
Entonces, cuando los comparemos, no funcionará.
Entonces, en lugar de compararlos con el triple igual o el doble es igual a lo que podemos hacer, en su lugar se usa
un método que la mangosta nos da para este propósito.
Entonces, lo que hacemos es escribir un enunciado IF en lugar de verificar campgrounds.
El autor Dodd ID triple es igual a la solicitud en la identificación del usuario.
Usamos puntos iguales.
Aquí vamos.
Y ahora nuestra declaración IF debería funcionar, excepto por el hecho de que es necesario volver a encontrarla en el campamento. Lo
que regresará a la base de datos que encontramos utilizando esa ID.
Entonces, descubrimos que con la ID basada en la ruta, verificamos si la identificación del autor en ese campamento
encontrado es igual a la identificación de los usuarios actualmente conectados.
Si ese es el caso, haremos una cosa.
De lo contrario, haremos algo más.
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
camping encontrado.
De lo contrario, haremos un resto.
No tiene permiso para hacerlo, por supuesto, esto cambiará con el tiempo o no será un punto rojo,
pero tendremos un mensaje real que se mostrará.
a intentar ir
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.
Así que vamos
Ahora bien, si me conecto o me suscribo como alguien que no sea Potato Head, lo
haré con cabeza de tomate y lo intentaré y lo editaré con suerte.
Ahí vamos, te entiendo, no tienes permiso para hacer eso.
Ahora si volvemos y desconectamos y volvemos a iniciar sesión como Potato
Head y lo intentamos todo de nuevo, intento y edito.
Yo tengo permiso.
Y termino aquí.
Entonces está funcionando.
Lo cual es genial.
Ahora lo que haremos es refactorizar esto en una función separada.
La mayor parte de esta lógica lo llamará algo así como.
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
está conectado actualmente coincide con este campamento en particular.
Y la razón por la que pasaremos eso al middleware es que lo usaremos en edición.
También queremos usarlo en la actualización.
No deseamos que alguien pueda enviar una solicitud si no está conectado.
Así que aunque solo sea usando el navegador.
La única forma de llegar a la actualización para enviar datos es utilizando este formulario.
Podría usar cartero, podría enviar una solicitud del cartero y no ser autenticado.
Entonces queremos la misma lógica aquí y queremos hacer lo mismo para eliminar.
Por lo tanto, no queremos que puedas eliminar algo de un campamento si no estás conectado.
Y si no eres el propietario
Entonces, lo que haremos es escribir un middleware, copiaremos este código por ahora.
Lo dejaré allí, pero vamos a bajar por ahora solo con nuestro otro middleware.
Bueno, el último llamado propiedad de check camp justo así.
Y luego pegaremos este código y tendremos un poco de trabajo que hacer aquí.
Pero el objetivo final es que en nuestra edición podamos agregar nuestro middleware aquí, verificar la propiedad del camping.
Deberíamos poder actualizarlo.
Y también en eliminar pero comenzaremos con esto y lo que queremos hacer es verificar.
Primero debe agregar una respuesta de solicitud y luego recordar que el middleware está configurado para la respuesta de solicitud
a continuación.
Entonces, si el usuario está actualmente conectado.
Sigue moviéndote si no estás conectado en lugar de descansar.
Por ahora vamos a hacer un redireccionamiento de restaurante y aún no hemos visto esto.
Podemos redireccionar redireccionar hacia atrás y eso llevará al usuario a donde vinieron más.
La página anterior en la que estaban y muy pronto te mostrarán cómo podemos enviar un mensaje.
Bueno, el mensaje que queremos enviar es algo así como No estás conectado o debes permitirte
hacerlo, pero lo dejamos así por el momento.
Entonces, si están conectados, vamos a encontrar el campamento.
Si hay un error, también lo redirigiremos nuevamente.
De nuevo, este error podría ocurrir si el camping no se puede encontrar por algún
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
el ID de usuario de las solicitudes.
Entonces, si el usuario que le gusta es dueño de esto entonces, en lugar de renderizar campgrounds edit
porque no siempre queremos que este middleware renderice edit, lo que queremos es movernos al resto del código en
delete o pasar al código una actualización o una edición.
Así que ahí es donde lo haremos a continuación.
De lo contrario, si no lo poseen, haremos un redireccionamiento de rez.
Estupendo.
Probemos esto, guárdelo y vamos a actualizar nuestra ruta de edición aquí.
Podemos reducir esto mucho, así que no tenemos que hacer nada de esto realmente, excepto que queremos encontrar el
campamento y todo lo que haremos es si encontramos un campamento, no necesitamos verificar si coincide más porque estamos haciendo eso en
el medio, así que todo lo que queremos hacer es encontrar un camping que nos deshaga
de todo esto.
un poco.
Casi todos los formatos de Office son correctos así que saldrán
Aquí vamos.
Entonces, debido a que agregamos la tasa de propiedad del camping de Scheck, todo lo que estamos haciendo ahora es que
si llegamos a este punto, significa que ya verificamos la propiedad del camping y que lo logramos.
De lo contrario, si hay un problema que habríamos redirigido que ver con el error que estoy
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
se queja de que no estamos manejando el error que podríamos manejar
que, si llegamos a este punto, no debería haber un error al encontrar PI ID porque lo hicimos aquí.
Pero la cuestión es
Y si funciona aquí, entonces deberíamos irnos de todos modos.
Así que probémoslo, veamos si tenemos algún problema.
Básicamente, simplemente cambiamos nuestro código a una función separada.
Y recuerda que se llama un middleware antes de llegar al manejador de la derecha.
DE ACUERDO.
Entonces, demos una oportunidad.
Primero, volvamos y digamos intentemos hacer clic en editar.
No estoy conectado.
Debería redirigirme a donde estaba