Introducción

1

Desarrollo de Aplicaciones en Laravel con TDD y PHP Unit

2

Desarrollo de Proyectos con TDD en Laravel y Testing PHP

Proyecto

3

Instalación y configuración inicial de proyectos en Laravel

4

Configuración de Relaciones y Pruebas Unitarias en Laravel

5

Configuración de Relaciones en Laravel usando Testing

6

Protección de Rutas en Laravel con Middleware de Autenticación

7

Pruebas Automatizadas para Registro y Redirección en Base de Datos

8

Configuración de Actualización de Registros con Pruebas en PHP

9

Validación de Datos en Controladores: Configuración y Pruebas

10

Eliminación de Registros en Base de Datos con PHP y Tests

Póliticas de Acceso

11

Configuración de Políticas de Acceso en Repositorios

12

Políticas de Acceso y Eliminación de Repositorios en PHP

13

Configuración de Acceso a Repositorios Propios en Aplicaciones Web

14

Configuración del Método Show en Controladores PHP

Vistas del proyecto

15

Formulario de Edición con Diseño y Tests en Laravel

16

Testing de Formularios en PHP: Creación y Validación de Vistas

17

Configuración de Controladores y Vistas en Laravel para el Área Pública

18

Diseño Web con Tailwind CSS: Mejora de Apariencia y Formato

19

Pruebas y Configuración de Seeders en Proyectos Laravel

Refactorización

20

Refactorización de Código con Validación en PHP

21

Refactorización de Políticas de Acceso en Laravel

22

Configuración de Botones para Repositorios en Proyectos Web

Conclusión

23

Importancia de las Pruebas en Desarrollo de Software

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Políticas de Acceso y Eliminación de Repositorios en PHP

12/23
Recursos

¿Qué es una política de acceso?

Una política de acceso es crucial en cualquier sistema, ya que actúa como una regla obligatoria que debe cumplirse para garantizar la seguridad y operación adecuada de los datos. En un entorno de programación y gestión de repositorios, como el que estamos explorando aquí, la política de acceso define quién puede modificar, eliminar o interactuar con un repositorio. Esta implementación es similar a la configuración previa que realizamos durante la actualización, resaltando la importancia de establecer reglas claras y precisas.

¿Cómo crear y probar la configuración de eliminación?

Al gestionar repositorios y la funcionalidad de eliminar, es esencial basarse en un proceso meticuloso, asegurando que solo los propietarios del repositorio puedan llevar a cabo esta acción. Vamos a explorar este proceso:

  1. Crear el usuario y el repositorio:
    • Cuando creamos un usuario, se le asigna un ID, comenzando generalmente por 1. De igual forma, al crear un nuevo repositorio, se asocia dicho ID al propietario.
  2. Configurar la eliminación:
    • Intentamos eliminar un repositorio actuando como su propietario. Buscamos el método correcto ya preconfigurado y ajustamos para relacionar correctamente los métodos de "actualizar" con "actualizar" y "eliminar" con "eliminar".
  3. Pruebas y condicionales:
    • Al intentar borrar un repositorio, se espera que el sistema, si el repositorio no pertenece al usuario actual, responda con el estado 403, impidiendo la acción. Esto se verifica mediante pruebas controladas y ajustes del código.

Implementación de pruebas para eliminación

La efectividad de nuestras políticas de acceso se puede asegurar mediante:

  • Probar la opción de eliminación: Al ejecutar pruebas, usamos herramientas como phpArtisan para confirmar que las acciones de eliminación solo son permitidas si se cumplen los criterios de acceso correctos.
  • Configuración del UserId: Ajustar y comprobar el UserId en las pruebas nos permite verificar que solamente los dueños pueden interactuar con sus elementos sin restricciones.

¿Cómo abordar errores y mejoras?

El sistema que hemos desarrollado es funcional y está respaldado por pruebas robustas. No obstante, siempre existen oportunidades de mejora en el código para potenciar la eficiencia y reducir posibles vulnerabilidades o errores no detectados en implementación inicial.

  • Respuesta a errores: Actualmente se implementa un condicional que gestiona los errores al intentar eliminar un repositorio ajeno. Sin embargo, mediante mejoras en el código, podemos optimizar no solo la funcionalidad sino también la legibilidad.
  • Revisiones futuras: Identificar áreas del código que podrían refinarse y programar revisiones periódicas permite mantener un sistema actualizado y seguro.

Este enfoque proactivo en la creación y gestión de políticas de acceso no solo mejora la seguridad del sistema, sino que también optimiza la experiencia del usuario. Recuerda, cada pequeña mejora hecha ahora preparará el sistema para manejar desafíos futuros con mayor eficacia. ¡Sigue adelante, cada paso es parte de un proceso continuo de aprendizaje y crecimiento!

Aportes 3

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Me parece muy importante cada prueba que realiza el profesor y la forma tan clara de explicar.
Para que el desarrollo sea profesional debemos pensar en cada caso de uso y hacer la respectiva prueba.

php artisan test

Modificados:

  • tests/Feature/Http/Controllers/RepositoryControllerTest.php
    • test_destroy_policy
    • test_destroy
  • app/Http/Controllers/RepositoryController.php

Tests:

  • Crear usuario y repositorio(diferente user_id), intentar eliminar el repositorio siendo otro usuario(no dueño), retorna status 403

En esta clase si utilice el facades Auth para no inyectar el Request en el metodo destroy (esto no me parece muy buena practica, por eso me fui por esa via). Sin embargo, si se trabaja con un API creo que el camino de Italo es mejor…nunca he probado el facades Auth con un API.

Les dejo mi commit de esta clase:
https://github.com/jlbousing/practica-tdd/commit/98e7f0d4a749552453aed456dafd2e4f05af14e6