EthicApp-Development / casevault-main

CaseVault is a content repository for case-based learning
MIT License
1 stars 2 forks source link

[main] Control de acceso a casos #28

Closed claudio-alvarez closed 2 months ago

claudio-alvarez commented 4 months ago

Necesitamos implementar control de acceso a los casos, de modo que un usuario solamente pueda editar los casos de los cuales es dueño. Además, necesitamos la funcionalidad que permita que un caso pueda ser compartido por varios usuarios.

Desde el punto de vista del backend, Cancancan es una solución robusta al problema clásico de control de acceso.

En frontend implementar el control de acceso es sencillo si desde el backend ya se hace el control de acceso. La respuesta del backend cuando se realiza control de acceso y el acceso no es válido tendría que ser:

Esto es preferible a una respuesta 403, pues dicha respuesta es ambigua en cuanto a que puede ser que el error se debe a que el acceso endpoint no está autorizado, o bien, que el acceso al recurso no está autorizado.

Aquí hay una explicación sobre cómo usar Cancancan para permitir que la autoría de un caso pueda ser compartida entre varios autores:

https://chat.openai.com/share/ff07bf27-087b-4202-acb9-e03eafcdedaa

Sin embargo, tendría que funcionar como en Google Docs, en donde hay un usuario que es el dueño, y los otros tienen distinto tipo de permisos (edición/lectura).

Partamos por lo simple. Implementemos primero la funcionalidad de control de acceso básica sin compartir casos.

claudio-alvarez commented 4 months ago

IMG_20240502_102010

claudio-alvarez commented 2 months ago

Se implementó un control de acceso manual, sin uso de Cancancan, que al momento de hacer queries verifica manualmente que el usuario no esté invadiendo recursos de otro.

Queda la solución aceptada como está, se creará issue para perseverar con Cancancan.