Desarrollo de un blog con manejo de roles y permisos

Desarrollo de un blog con manejo de roles y permisos

81 lecciones 9h 14m

Aprende a desarrollar un blog completamente funcional, autoadministrable, con manejo de roles y permisos de usuario con Laravel.

FREE
08:36

1. Integrando la plantilla HTML

En esta serie de videos vamos a desarrollar un blog completamente funcional con laravel, donde podremos publicar posts, categorizarlos, etiquetarlos, agregar imágenes, videos, audios, comentarios, manejo de permisos de usuarios y más

FREE
07:25

2. Creando la tabla posts

Configuramos la conexión a base de datos, y creamos la tabla para los posts, utilizando las migraciones en Laravel. También creamos el modelo de Eloquent para interactuar con los posts en la base de datos.

FREE
05:58

3. Mostrando los posts desde la base de datos

Utilizando el modelo Post, hacemos un foreach para imprimir en pantalla todos los posts que tenemos en la base de datos.

FREE
02:58

4. Mostrando la fecha de publicación de los posts

Eloquent reconoce las fechas de creación y actualización com instancias de Carbon para manejar las fechas más eficientemente, sin embargo, hemos creado un campo para almacenar la fecha de publicación del post y debemos informarle a Eloquent sobre esto

FREE
08:37

5. Creando las Categorías

Creamos el modelo y la migración para las categorías y utilizamos Eloquent para definir la relación con el modelo Post que nos permitirá asociar posts con categorías.

PRO
09:29

6. Qué son y cómo utilizar Seeders

Cuando estamos desarrollando y probando nuestras aplicaciones, es necesario tener datos de prueba en la base de datos, para ir verificando el comportamiento de la aplicación, y llenar estos datos manualmente puede consumir gran cantidad de nuestro tiempo, sin embargo, con Laravel, tenemos a disposición los Seeders que nos ayudan con esta tarea.

PRO
06:31

7. Creando las Etiquetas

Creamos el modelo y la migración para las Etiquetas, y definimos la relación de “muchos a muchos” con el modelo Post. De esta forma, podremos asociar varias etiquetas a un mismo post, y cada etiqueta podrá tener varios posts asociados.

FREE
04:07

8. Integrando la plantilla de administración AdminLTE

En esta lección comenzamos con la creación de un panel de administración. Para la interfaz gráfica utilizaremos la plantilla gratuita de administración AdminLte. Esta vez la integraremos de forma manual.

PRO
07:00

9. Integrando el login - Parte I

Utilizamos el login básico que viene con laravel y lo adaptamos a la plantilla de administración AdminLTE.

PRO
08:39

10. Integrando el login - Parte II

Traducimos al español el texto del login y los mensajes de validación del formulario. También creamos el primer usuario y restringimos el acceso a la administración.

PRO
11:35

11. Personalizando el menú y utilizando controladores

Agregamos los primeros links de navegación de la administración, y con el fin de mejorar la estructura de nuestro código comenzamos a utilizar controladores.

PRO
06:00

12. Mostrando los posts con DatatablesJs

Agregamos una vista en la administración para ver todos los posts utilizando el plugin de JQuery llamado Datatables.

PRO
05:52

13. Reestructuración de código y activación de links

Cambiamos la redirección de la url “home” a “admin” para las páginas de administración Y agregamos la clase “active” a los links de navegación para que nos indique en qué página estamos

PRO
07:44

14. Creación del formulario para ingresar posts

Cambiamos la redirección de la url “home” a “admin” para las páginas de administración. Y agregamos la clase “active” a los links de navegación para que nos indique en qué página estamos.

PRO
05:55

15. Implementación de un selector de fechas 'datepicker'

En esta lección integramos un datepicker para permitir al usuario seleccionar fechas a través de un calendario. También optimizamos la carga de las páginas de administración utilizando la directiva de BLADE llamada STACK.

FREE
04:13

16. Integrando un editor de contenido y un selector múltiple

En esta lección vemos cómo integrar CKEDITOR un editor WYSIWYG para poder ingresar contenido HTML fácilmente, también implementaremos el plugin select2 para la selección de etiquetas.

PRO
07:42

17. Guardando las publicaciones

En esta lección vemos finalmente cómo guardar la publicación en la base de datos, incluida la relación con las etiquetas que se guarda en una tabla aparte.

PRO
09:10

18. Validando el formulario

En esta lección validamos los campos del formulario, mostramos los mensajes de error de validación y hacemos que los campos que pasan la validación permanezcan con la información que ingresó el usuario, y de esa forma evitar que se tenga que volver a ingresar la información.

PRO
05:05

19. Query scopes

En esta lección agregamos restricciones para que únicamente se muestren los posts públicos, y utilizamos query scopes locales para que nuestro código sea más limpio y reutilizable.

PRO
07:46

20. Mostrando los posts individuales

En esta lección implementamos la vista individual de los posts, utilizando la plantilla que descargamos en la primera lección.

PRO
05:25

21. Urls amigables

En esta lección vemos cómo implementar urls amigables utilizando model bindings

PRO
03:22

22. Título y descripción para SEO

En esta lección definimos el título y el descripción de nuestro sitio web dependiendo de la página en la que estemos, con el fin de controlar el contenido que se muestra en los buscadores.

PRO
05:03

23. Social Links

En esta lección generamos los links para compartir las publicaciones en redes sociales.

PRO
06:52

24. Actualizar posts - Parte 1

En esta lección vemos un enfoque diferente en la forma en la que se crean y actualizan recursos convencionalmente. Solo tendremos una vista para actualizar y una ventana flotante para crear posts con la mínima cantidad de datos necesarios.

PRO
07:14

25. Actualizando posts - Parte 2

En esta lección terminamos la funcionalidad para crear y actualizar publicaciones.

PRO
07:26

26. Cómo subir imágenes con DropzoneJS

En esta lección vemos cómo subir imágenes con DropzoneJS, una librería de Javascript que nos permite arrastrar y soltar archivos, subir múltiples archivos a la vez, validación, entre otras funcionalidades.

PRO
06:44

27. Validando las imágenes

En esta lección nos aseguramos de que los archivos que se suban sean de tipo imagen y que no pesen más de 2mb. Hacemos la validación del lado del cliente con DropzoneJS y también validamos del lado del servidor.

PRO
07:52

28. Almacenando las imágenes en el servidor

En esta lección vemos cómo guardar las imágenes en el servidor de una forma muy sencilla. También vemos cómo configurar el sistema de archivos que viene con Laravel.

PRO
05:52

29. Mostrando las fotos

En esta lección mostramos las fotos de los posts en la página principal y en la vista individual de las publicaciones

PRO
04:41

30. Galería de fotos

En esta lección implementamos una galería de imágenes utilizando el carousel de twitter bootstrap.

PRO
05:24

31. Eliminando fotos | Parte 1

En esta lección agregamos la funcionalidad par que el usuario pueda eliminar las fotos de las publicaciones.

PRO
04:42

32. Eliminando fotos | Parte 2

En esta lección escribimos la funcionalidad necesaria para que la imagen se elimine del servidor automáticamente después de ser eliminada de la base de datos.

PRO
05:21

33. Posts con video y audio

En esta lección permitiremos al usuario insertar videos y audios a las publicaciones en forma de 'iframe'.

FREE
04:54

34. Paginación personalizada

En esta lección veremos cómo utilizar la paginación que nos provee Laravel y adaptarla a la estructura HTML de nuestra plantilla.

PRO
05:52

35. Filtrar posts por categoría

En esta lección vemos de forma sencilla cómo podemos filtrar los posts por categoría, es decir, que al darle click a una categoría nos muestre un listado de posts que pertenezcan a dicha categoría.

PRO
05:04

36. Filtrar posts por etiqueta

En esta lección creamos un controlador par manejar las etiquetas y mostrar todos los posts relacionados a una etiqueta específica.

PRO
06:32

37. Accesores y mutadores de Eloquent

En esta lección revisamos los accesores y mutadores de Eloquent y cómo nos pueden ayudar en nuestra aplicación.

PRO
04:07

38. Creando etiquetas sobre la marcha

En esta lección permitimos que el usuario pueda crear y asignar categorías y etiquetas desde la misma vista para editar las publicaciones, sin tener que ir a otro formulario para hacerlo.

PRO
10:14

39. Reestructuración del PostsController

En esta lección vamos a reestructurar el controlador de las publicaciones utilizando form requests, mutadores, colecciones y métodos en el modelo.

PRO
06:47

40. Reestructuración del PhotosController

En esta lección vamos a reestructurar un poco la forma en la forma en la que estamos guardando y mostrando las fotos de los posts y por ende, cómo las eliminamos. También vemos una forma de vaciar la carpeta de fotos de prueba cuando ejecutamos los seeders.

PRO
08:51

41. Eliminar posts y sus relaciones

En esta lección implementamos el botón para eliminar posts y en el proceso que se eliminen las etiquetas asignadas, las referencias a las fotos en la base de datos y los archivos que se encuentran en el servidor.

FREE
04:42

42. Actualizando a Laravel 5.5

En esta lección actualizamos nuestra aplicación de Laravel 5.4 a Laravel 5.5. siguiendo las instrucciones de la documentación. En el proceso actualizamos Composer y el instalador de Laravel.

PRO
10:32

43. Mantener el modal si hay errores

En esta lección veremos cómo mantener el modal de creación de un post abierto en caso de haber errores de validación. Ya que actualmente, el modal desaparece cuando falla la validación.

PRO
09:48

44. URLs únicas

En esta lección vemos cómo permitir que se creen publicaciones con el mismo título pero que la url sea única para poderla diferenciar. En el proceso vemos varias formas de hacerlo, sus pros y sus contras.

PRO
07:09

45. Activando la navegación

En esta lección activamos los links de navegación basándonos en la ruta actual, en lugar de la url como lo hicimos con la administración. También creamos un archivo de 'helpers' para almacenar este tipo de lógicas reutilizables.

PRO
03:14

46. Agregando las páginas estáticas

En esta lección agregamos rápidamente las páginas estáticas del blog, y arreglamos unos links y unos estilos que no están funcionando.

PRO
05:32

47. Acceso a posts no públicos

En esta lección permitimos a los administradores revisar los posts no públicos para que puedan ser revisados antes de su publicación. También personalizamos la página de error 404, que aparece cuando un usuario intenta acceder a una página que no existe.

PRO
04:41

48. Asignar posts a usuarios

En esta lección definimos las relaciones entre los posts y los usuarios con el fin de saber qué usuario publicó tal post. Un usuario podrá tener muchos posts asociados y un post solo podrá pertenecer a un usuario.

PRO
06:59

49. Vistas polimórficas

En esta lección reestructuramos un poco las vistas para simplificar su contenido y poder leerlas más fácilmente en el futuro. Utilizamos polimorfismo para incluir dinámicamente la vista adecuada según el tipo de post, que puede ser de tipo texto, de tipo imagen, de tipo galería o de tipo video/audio.

PRO
13:06

50. Políticas de acceso a publicaciones

En esta lección vamos a restringir el acceso a las publicaciones desde la administración. Los usuarios autenticados, solamente podrán ver las publicaciones que ellos han creado y no las publicaciones de otros.

FREE
05:20

51. Instalando el paquete laravel-permission

En esta lección instalamos el paquete spatie/laravel-permission que nos ayuda con el manejo de roles y permisos en nuestras aplicaciones de Laravel.

PRO
07:39

52. Roles y Usuarios

En esta lección agregamos los roles de administrador y escritor en la base de datos y los asignamos a los 2 usuarios existentes. Luego modificamos las políticas de acceso para que el administrador pueda realizar todas las acciones.

PRO
09:15

53. Permisos de usuario

En esta lección agregamos los permisos para ver, crear, actualizar y eliminar todos las publicaciones, de esta manera tenemos más flexibilidad al momento de asignar permisos a usuarios.

PRO
04:56

54. Mostrando el listado de usuarios

En esta lección creamos una sección en la administración para ver todos los usuarios del blog con sus respectivos roles.

PRO
10:29

55. Creando el perfil de usuario

En esta lección creamos una sección para mostrar el perfil de usuario con sus modelos relacionados, es decir, sus publicaciones, sus roles y permisos adicionales.

PRO
07:19

56. Editar usuarios

En esta lección creamos el formulario para editar usuarios y agregamos la validación para impedir que existan correos electrónicos repetidos en la base de datos.

PRO
09:46

57. Editar contraseña

En esta lección agregamos dinámicamente las reglas de validación para la contraseña para permitir que el usuario pueda cambiarla cuando lo necesite.

PRO
07:37

58. Agregar y quitar roles de usuario

En esta lección agregamos el formulario para seleccionar y deseleccionar roles de un usuario específico con la ayuda del paquete laravel-permission

PRO
06:02

59. Agregar y quitar permisos de usuario

En esta lección permitimos agregar y quitar permisos a usuarios desde la administración. También permitimos que se puedan quitar todos los roles y todos los permisos al usuario.

PRO
05:53

60. Activando rutas anidadas

En esta lección mostramos los permisos asociados a los roles al momento de asignarlos al usuario, agregamos los links de navegación para el manejo de usuarios y activamos las rutas anidadas utilizando el helper que creamos varias lecciones atrás.

PRO
06:33

61. Crear usuarios - Parte 1

En esta lección creamos el formulario para crear usuarios y en el proceso reestructuramos les checkboxes de los roles y los permisos para poder reutilizarlos.

PRO
03:45

62. Crear usuarios - Parte 2

En esta lección validamos el formulario, generamos la contraseña, creamos el usuario, le asignamos los roles y permisos y regresamos una respuesta exitosa al usuario.

PRO
05:52

63. Eventos y Listeners

En esta lección revisamos cómo funcionan los eventos y listeners en Laravel y cómo nos puede ayudar a organizar mejor nuestras aplicaciones.

PRO
07:34

64. Enviar credenciales

Ahora que ya tenemos el evento en su lugar, vamos a crear el mailable y la vista markdown con las credenciales de acceso que enviaremos al usuario recién creado.

PRO
07:09

65. Políticas de acceso a usuarios

Actualmente cualquier usuario puede editar a cualquier usuario, para evitarlo, creamos las políticas de acceso a usuarios y las implementamos en el UsersController de la administración.

PRO
05:23

66. Eliminar usuarios

En esta lección implementamos la eliminación de usuarios y discutimos las restricciones en base de datos (db constraints) y el evento deleting de Eloquent.

PRO
05:48

67. Permisos para asignar roles

En esta lección restringimos la habilidad de asignar y quitar roles y permisos utilizando los middlewares que trae el paquete laravel-permission. Hacemos uso también de las directivas de blade de este paquete.

PRO
02:41

68. Mostrando el listado de roles

En esta lección creamos una sección para mostrar el listado de roles que existen en nuestra aplicación.

PRO
10:00

69. Formulario para crear roles

En esta lección crearemos un apartado para permitir al usuario crear nuevos roles con permisos, para luego poder asignar estos nuevos roles a los usuarios.

PRO
05:23

70. Formulario para editar roles

En esta lección creamos el formulario para editar roles, es decir, que podamos cambiarle el nombre y asignar o quitar permisos.

PRO
09:44

71. Formulario para editar roles - parte 2

En esta lección terminamos el formulario para editar roles y agregamos un campo adicional a los roles y permisos para poder asignar un nombre más descriptivo que podamos mostrar en la interfaz web

PRO
11:45

72. Mensajes de validación personalizados

En esta lección personalizamos los mensajes que aparecen cuando ocurre un error de validación al intentar crear un y actualizar un role, utilizando un form request.

PRO
03:55

73. Eliminar roles

En esta lección permitimos que el usuario pueda eliminar roles, menos el role 'admin' ya que nos dejaría sin los permisos principales de nuestra aplicación. Por esta razón el role 'admin' no se podrá eliminar desde el panel de administración.

PRO
09:04

74. Políticas de acceso a roles

En esta lección creamos las políticas de acceso a los roles para que solamente los administradores y/o los usuarios con los permisos correctos puedan crear y modificar roles

PRO
07:26

75. Ver y editar permisos

En esta lección implementamos la funcionalidad para ver y editar permisos solamente, y veremos cómo crear permisos desde la terminal.

PRO
03:46

76. Políticas de acceso a permisos

En esta lección implementamos las políticas de acceso a los permisos, para que solo los usuarios con los permisos correctos puedan ver y actualizar permisos.

PRO
09:43

77. Mostrar y ocultar botones

En esta lección mostramos y ocultamos botones y links de navegación según los permisos que tenga el usuario actualmente autenticado.

PRO
05:03

78. Implementando la página de archivo

En esta lección hacemos que el contenido de la página archivo refleje la información que tenemos en la base de datos. Mostramos algunos escritores, categorías y las últimas publicaciones.

PRO
07:21

79. Agrupar posts por mes y año

En esta lección agrupamos las publicaciones según el més y el año en el que fueron creadas; también mostramos la cantidad de publicaciones creadas en cada mes.

PRO
06:24

80. Filtrar posts por mes y año

En esta lección mostramos los posts según su fecha de publicación y permitimos paginar estos resultados. También traducimos al español las fechas que nos devuelve la base de datos.

PRO
11:44

81. Optimización de consultas en Eloquent

En esta lección veremos cómo optimizar las consultas sql que realizamos a través de Eloquent; para ello vamos a instalar un paquete llamado Laravel Debugbar que nos permite, además de otras cosas, inspeccionar las consultas realizadas en nuestras aplicaciones.

Otros cursos que te pueden interesar