‫Narrador: Entonces, actualmente estamos en
‫el proceso de dar algunos toques finales a nuestra
‫API, y una de las cosas que
‫debemos hacer ahora es corregir parte
‫de la autenticación y autorización en todos nuestros recursos.
‫Y comenzaremos aquí con nuestro recurso de gira.
‫Y dado que todas las
‫cosas de autenticación y autorización siempre se definen en
‫las declaraciones de ruta,
‫bueno, trabajaremos aquí en el archivo de rutas de viaje.
‫Entonces, esta API de gira que tenemos
‫aquí es básicamente lo que queremos exponer al mundo.
‫Por ejemplo, es posible que queramos
‫permitir que otros sitios de viajes integren nuestros viajes
‫en su propio sitio web.
‫Y para eso es básicamente esta API.
‫Y por lo tanto, no tendremos ninguna autorización para
‫obtener solicitudes de tours.
‫¿Derecha?
‫Y entonces deberíamos deshacernos del que
‫tenemos actualmente.
‫¿Derecha?
‫Entonces, este.
‫Entonces, al obtener todos
‫los recorridos, ahora mismo tenemos que
‫protegerlo, por lo que solo los usuarios autenticados pueden usar eso.
‫¿Okey?
‫Pero nuevamente, eso no
‫tiene mucho sentido, porque desea
‫exponer esta parte de la API a todos.
‫Entonces, deshagámonos de eso.
‫Sin embargo, las acciones de crear o editar recorridos, solo
‫queremos permitir que los
‫guías principales y los administradores realicen estas acciones.
‫Entonces, por supuesto, no hay usuarios normales
‫y tampoco guías normales.
‫Entonces, solo administradores y guías de clientes potenciales.
‫Y pongamos eso aquí en realidad.
‫Authcontroller. proteger
‫y authcontroller. restringir a.
‫Administrador
‫y guía principal.
‫Salvarlo aquí,
‫y se ve muy bien.
‫Y a continuación queremos hacer lo mismo con la edición.
‫¿Derecha?
‫Así que ya hicimos eso en el
‫líder, así que copiemos lo que tenemos aquí para parchear también.
‫Salvarlo, y ahora realmente se ve perfecto.
‫¿Okey?
‫Entonces, todo
‫lo demás, incluso obtener un solo
‫recorrido aquí, es gratis para todos, ¿de acuerdo?
‫Y lo mismo ocurre con los mejores recorridos y
‫también con las estadísticas del recorrido.
‫Ahora, aquí, sobre el plan mensual
‫de obtención, bueno, también podríamos querer restringir eso.
‫Solo, por ejemplo, para todos excepto para los usuarios normales.
‫¿Okey?
‫Entonces eso es copiar este
‫aquí también, guardarlo y luego agregar también las guías normales.
‫¿Bien?
‫Y entonces, eso se ve perfecto en este punto, creo.
‫¿Okey?
‫Básicamente, nuestro enrutador de gira ahora está completo.
‫Perfecto.
‫Y no voy a
‫probar todo esto porque ya sabemos que funciona.
‫¿Bien?
‫Entonces, cerremos
‫este y pasemos directamente al siguiente.
‫Entonces, estas primeras rutas
‫aquí, por supuesto, están abiertas a todos.
‫Por lo tanto, registrarse, iniciar
‫sesión, olvidar la contraseña y restablecer la contraseña.
‫Para ninguno de estos, debe iniciar sesión.
‫¿Derecha?
‫Pero, debe iniciar sesión
‫para estar autenticado para actualizar su contraseña, obtener su
‫propia información, actualizar o
‫eliminar su propia cuenta, y realmente para
‫todas estas otras operaciones aquí
‫también.
‫Por eso, no queremos que el público obtenga básicamente información
‫sobre todos los usuarios.
‫Tampoco queremos que nadie elimine usuarios
‫o actualice usuarios, y realmente ninguna de estas operaciones
‫aquí debería ser gratuita para el público.
‫¿Okey?
‫Entonces, para todas estas
‫rutas aquí, a partir de
‫este punto, siempre tendrá que estar autenticado.
‫¿Bien?
‫Y entonces, ahora podríamos seguir adelante
‫y agregar este authcontroller. proteger a todas estas rutas,
‫pero en realidad podemos hacerlo mejor que eso, ¿verdad?
‫Entonces, para hacer eso,
‫tengamos en cuenta que esta función de protección aquí
‫es realmente solo un middleware.
‫Y recuerde también que el
‫middleware se ejecuta siempre en secuencia, ¿verdad?
‫Ahora, con este enrutador que tenemos
‫aquí, que creamos al
‫principio, es como una mini aplicación.
‫¿Recuérdalo?
‫Y así, al igual que con
‫la aplicación normal, también podemos usar middleware en este enrutador.
‫¿Okey?
‫Entonces, podemos hacer algo como esto.
‫Enrutador. use,
‫y ahora authcontroller. proteger, y eso es
‫todo.
‫Y lo
‫que hará es proteger básicamente todas las
‫rutas que vienen después de este punto.
‫¿Okey?
‫Y nuevamente, eso se debe a que el
‫middleware se ejecuta en secuencia.
‫Y luego de estas cuatro funciones de
‫middleware, porque recuerde que técnicamente
‫esto también es middleware,
‫entonces el siguiente middleware en la pila es este protect.
‫Y esto solo llamará al siguiente middleware
‫si el usuario está autenticado.
‫Y el próximo middleware en este caso es este parche aquí.
‫¿Okey?
‫Y entonces, nuevamente, lo que
‫esto significa es
‫que todas estas rutas a todos estos
‫middlewares, técnicamente, que vienen después de este, ahora están protegidas.
‫Y así, podemos seguir adelante y eliminar esta protección
‫de todos ellos.
‫¿Okey?
‫Y solo para demostrarle que esto
‫todavía funciona, sigamos adelante y obtengamos la información sobre mí.
‫Básicamente, el usuario actual.
‫Entonces, si ejecuto
‫esto, verá que todavía funciona.
‫Y si elimino la autenticación,
‫entonces dice que no hemos iniciado sesión.
‫Y eso es exactamente lo que hace el middleware de protección.
‫¿Derecha?
‫Entonces, ahora volverá a funcionar.
‫¡Tan perfecto!
‫Ese es un pequeño truco para proteger todas
‫las rutas al mismo tiempo, generalmente mediante
‫el uso de un middleware
‫que viene antes que todas estas otras rutas.
‫¿Okey?
‫Y, por ejemplo, si
‫ahora lo movemos un poco hacia arriba, como este,
‫por ejemplo, también tendríamos que iniciar
‫sesión para poder usar la contraseña olvidada.
‫¿Derecha?
‫Entonces, déjame demostrarte eso.
‫¿Okey?
‫Y por lo general, por supuesto, no necesitamos iniciar
‫sesión para olvidar nuestra
‫contraseña, porque eso no tendría ningún sentido, ¿verdad?
‫Pero ahora mismo, dado que subimos
‫un poco ese middleware, dice "no ha iniciado sesión".
‫¿Okey?
‫Y realmente, eso prueba que este authcontroller aquí está haciendo
‫su trabajo.
‫Por lo tanto, proteja todas las rutas, después
‫de este middleware.
‫Bueno.
‫Ahora también recuerde cómo dijimos que
‫todas estas acciones aquí solo deberían ser
‫ejecutadas por administradores,
‫por lo que ahora podemos usar exactamente la misma
‫técnica que usamos aquí para proteger todas estas rutas.
‫Entonces, enrutador.
‫use, authcontroller. restrictto, admin.
‫¿Okey?
‫Y ahora, solo los administradores podrán obtener
‫todos los usuarios, crear nuevos usuarios, obtener usuarios nuevamente
‫y parchear y eliminar usuarios.
‫¿Bien?
‫Y así, a partir de
‫este punto, todas las rutas no solo están
‫protegidas, sino que también están restringidas solo al administrador.
‫Pero, por supuesto, los que vienen antes que todos
‫los que están conectados pueden acceder a ellos, ¿de acuerdo?
‫Así que déjame demostrarte eso.
‫Entonces, voy a iniciar sesión, no con el administrador, sino con
‫el usuario de prueba.
‫¿Okey?
‫Y así iniciamos sesión
‫correctamente, ahora intentemos ver a todos los usuarios.
‫Y ahora dice que no ha iniciado sesión.
‫Bueno, en realidad estamos conectados,
‫pero olvidamos agregar la autorización aquí.
‫Entonces, token de portador, envíalo de nuevo, y ahora
‫vemos que no tienes permiso para realizar.
‫Pero ahora, cuando cambiamos esto al administrador, entonces iniciamos sesión
‫como administrador ahora, y
‫ahora cuando obtenemos todos los usuarios, entonces, por
‫supuesto, funciona.
‫¡Tan perfecto!
‫Y eso también finaliza
‫la autenticación y autorización para estos usuarios.
‫Pero solo para
‫reflejar eso en Postman, retrocedamos y, básicamente, pongamos la
‫autorización aquí, en todas partes.
‫¿Okey?
‫Y nuevamente, eso es
‫porque más adelante crearemos una documentación
‫de API basada en la colección que creamos aquí.
‫Y luego, es importante que marquemos este
‫aquí como protegido.
‫Guárdalo.
‫Guarde este también.
‫Y lo mismo para actualizar y eliminar usuario.
‫Entonces, token de portador, guardar y
‫lo mismo para actualizar.
‫Muy bien, y ya que estamos haciendo eso, hagamos lo
‫mismo con todos los demás.
‫Entonces, no las reseñas, esa
‫es para un poco
‫más tarde, pero realmente para los tours.
‫Así que aquí ya no necesitamos ninguna autenticación,
‫así que guardémoslo.
‫Olvidando tampoco necesitamos ninguna autorización,
‫pero para crear ahora necesitamos el token de portador.
‫¿Okey?
‫También para actualizar, por lo
‫que tiene sentido protegerlos también aquí en Postman.
‫Ahora bien, este ya lo tenía,
‫porque en realidad usamos este para probarlo en
‫primer lugar.
‫Así que este no lo tenía, pero el plan mensual de
‫obtención, también lo protegemos.
‫Agregue el token de portador aquí
‫también, y creo
‫que con esto estamos realmente completos ahora, con estos también.
‫Entonces, lo que tenemos que hacer para terminar ahora
‫que esta parte está aquí, arreglar lo mismo en las revisiones también.
‫Y lo primero que quiero
‫hacer es proteger básicamente todas las rutas
‫que tienen que ver con las reseñas.
‫Por lo tanto, no queremos
‫que nadie que no esté autenticado obtenga, publique, cambie o elimine reseñas.
‫¿Okey?
‫Decimos enrutador. uso,
‫controlador de autenticación. proteger.
‫¿Okey?
‫Y eso significa que desde este
‫punto nadie puede acceder a ninguna de
‫estas rutas sin estar autenticado.
‫Pero podemos quitar esta parte de aquí, ¿de acuerdo?
‫Y ahora, con la autenticación fuera del
‫camino, pensemos en la autorización.
‫Entonces, en primer lugar, solo los usuarios
‫deberían poder publicar reseñas.
‫Sin guías y tampoco administradores.
‫Y esta parte, ya la tenemos aquí.
‫¿Okey?
‫Luego, los administradores deberían poder actualizar o eliminar
‫reseñas, al igual que los usuarios habituales, por
‫supuesto, para que luego puedan editar
‫o eliminar sus propias reseñas.
‫Y finalmente, los guías no pueden agregar, editar ni eliminar reseñas.
‫Dado que los guías son los que están realizando el trabajo,
‫sería extraño si ellos mismos pudieran
‫publicar reseñas o editar las reseñas de otras personas, ¿verdad?
‫Así que pongamos en código lo que acabamos de describir.
‫Entonces, básicamente parchear y eliminar están
‫restringidos a los usuarios,
‫o en
‫realidad solo al usuario y al administrador.
‫Y luego lo mismo para borrar.
‫¿Okey?
‫Y entonces ve que ahora las guías y
‫guías principales no tienen nada que ver con las reseñas.
‫Todo lo que pueden hacer es realmente
‫obtener reseñas, pero no cambiarlas ni publicarlas en absoluto, ¿de acuerdo?
‫Y entonces, rápido ahora en Postman,
‫pongámoslo aquí también.
‫Así que crear nuevas revisiones ya tiene la autorización, obtener todas
‫las revisiones también la necesita ahora.
‫Entonces, con la ficha de portador, guarde eso, aquí,
‫la ficha de portador también.
‫Ahora escriba y obtenga también una sola reseña.
‫En realidad, ordenemos esto también muy bien,
‫de modo que todos estén en el mismo orden.
‫Y ahora sobre estos dos aquí,
‫en realidad también están protegidos.
‫¿Derecha?
‫Porque, en última instancia, son los controladores
‫de revisión los que realmente se llaman para ambos.
‫Y aquí también necesitamos agregar ese token de portador.
‫¿Okey?
‫Así que ahora, básicamente, la única
‫forma de acceder a los datos sobre las reseñas es llamar a todos los recorridos.
‫¿Derecha?
‫Al menos para las personas que no están autenticadas.
‫¿Okey?
‫Entonces, cerremos todo esto, y creo que
‫ahora estamos listos para comenzar, y de
‫hecho también terminamos esta parte.
‫Limpiemos un poco aquí.
‫Y sí, creo que eso es todo.
‫Entonces, con esto, terminamos las partes de
‫autenticación y autorización de nuestros tres recursos, por lo que
‫estamos muy cerca de terminar nuestra API aquí.
‫Solo queda una pequeña cantidad de cosas por hacer, por
‫lo que haremos todo eso en
‫el resto de esta sección.