Saludos, compañeros! (0,0)/
Aquí les comparto mi progreso del curso y los retos aplicados. Si alguien le sirve de referencia o si alguien gusta proporcionar algo de feedback, ya sea en buenas practicas o sugerencias, se agradece y mucho.
Advierto que sólo trabajé funcionalidad, por lo que no esperen un trabajo estético xD.
Los usuarios admin del sistema son: Irisval, RetaxMaster, freddier, alex. Los usuarios “normales” son juandc, nameless.
Hardcoded data.
-
Para manejar los datos “hardcodeados” opté por crear archivos para la información del usuario (user.js), blogs (blogdata.js) y los roles de usuario (roles.js). Todos ubicados en src/data/.
-
Inspirandome en aportaciones dadas por compañeros en clases anteriores, removí la lista de Admins y agregué nuevas propiedades como phonenumber, description y roles, este último siendo un objeto el cual guarda un arreglo de roles.
-
Para el manejo de roles implementé el uso de constantes. En este caso sólo creé dos roles: ADMIN (admin) y USER (user).
-
Agregué a los blogs una propeidad comments el cual, obviamente, guarda un arreglo de comentarios.
-
La estructura de un comentario es la de un objeto con las propiedades content y author.
Services.
-
Las funcionalidades de Auth del archivo auth.js visto en el curso las trabajé como un servicio. Por lo que creé la carpeta src/services/.
-
Por comodidad creé un servicio user.js. Esto con el fin de manipular la data del usuario y desarrollar funciones acorde a este. Buscando mantener auth.js lo más posible a sólo cosas relacionadas a funciones de autentificación.
-
Creé un servicio que funciona como la BD de usuarios. usersDB.js. Esto con el fin de servir de apoyo para las funciones de actualización de usuarios.
-
Para la manipulación de los blogs opté por crear un servicio al igual que auth: blog.js. Siendo este una copia del auth.js ya que utilizo la mismas funciones o características. Un provider, un useBlog y BlogRoute (ojo en este último).
-
BlogRoute. Durante el proceso me di cuenta que si accedía a un blog que no existe la app truena. Por lo que redirecciono al usuario en caso de que no exista el blog que indica en la url.
-
BlogProvider/BlogContext. Además de gestionar los blogs, también sus comentarios. Dejé todos los métodos dentro de este servicio, aunque otra opción sería crear un servicio de comentarios para manipularlos desde ahí utilizando useBlog. Algo parecido a useUser.
Gestión de blogs.
-
Habilité las funciones de eliminar blogs. Permitiendo dicha función unicamente al propietario del blog o los usuarios admin.
-
Añadí un formulario para la creación de nuevos blogs (sólo para usuarios con una sesión iniciada).
-
Añadí una sección de comentarior en el detalle de un blog y la función de agregar un nuevo comentario (sólo para usuarios con una sesión iniciada).
-
Al igual que los blogs, los usuarios pueden borrar sus comentarios. Pero un usuario admin puede cualquier comentario.
UX login.
-
En caso de no tener una sesión iniciada, la vista blog cuenta con un botón para dirigir al usuario a la vista de login. Una vez iniciada la sesión, el usuario volverá a la vista de blog.
-
La funcionalidad anterior también fue implementada desde la sección de comentarios de un blog.
Editar perfil de usuario.
-
Además de agregar más datos para el perfil de los usuarios, también agregué la posibilidad de cambiar estos datos.
-
Únicamente permito actualizar el número de teléfono y la descripción del usuario.
-
username no es un campo válido a modificar (al menos en este proyecto) debido a que funciona como el identificador del usuario y los blogs y comentarios los relaciono a partir de este.
-
Es posible ver el perfil de otros usuarios ingresando su username en la ruta: e.j. profile/juandc.
-
Los usuarios admin pueden modificar el perfil de otros usuarios.
Posibles mejoras.
-
Agregar estilos (por supuesto xD).
-
Implementar función de Editar (blogs y comentarios).
-
Guardar comentarios con algún identificador y/o datetime para facilitar la gestión de estos.
-
El propietario del blog sea capaz de eliminar u ocultar comentarios de sus blogs.
-
Uso de algún ID para los usuarios (number, hash, etc.).
-
Editar roles de usuario.
-
Ajustes en los servicios.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?