Muy buenas,
Desde un programador anclado en el Request -> Response del PHP tradicional, en el que quien decide que se muestra en pantalla es el PHP de forma transparente para el usuario (incluyendo peticiones en segundo plano, no soy un ermitaño). Por cuestiones de supervivencia debo evolucionar y usar librerias/framework de frontend (React, Vue, Angular, etc...).
El objetivo es llegar a una programación hexagonal. Pasar a microservicios (estoy en un bypass entre un sistema monolítico y microservicios con un sistema monolítico dockerizado en servicios separados... Ya lo se... un show...).
Me considero un programador todo terreno y me cuesta 0 absolver código ya escrito (gracias por los aplausos y los pines), pero hay ciertas cosas que me traen de culo y me encuentro en un punto en el que antes de picar 0 líneas necesito solucionar y no encuentro la manera de encajar las piezas.
Os pongo el ejemplo de como lo tengo ahora o como debería funcionar (de forma simplificada para dummies) y luego matizamos:
- Entra usuario (autentificado en sesión) con unos permisos específicos de un perfil definido en base de datos. Estos permisos permiten acceder a las secciones B, D y H.
- Los accesos a esta secciones se muestran y los demás no.
- El usuario no tiene constancia de la existencia de las demás secciones y no son visibles desde código.
- Aunque tuviese constancia, al acceder a la url le aparecería 403 o 404 a discreción del programador (mucha suerte).
Ahora bien, pongamos que me paso a frontend y he sido capaz de sustituir node por un listener en PHP que he buscado en google y le he dado a voy a tener suerte: ReactPHP.
Esto para la comunicación a tiempo real genial, pero en el tema de permisos y teniendo en cuenta que los templates están en el JS por lo tanto en el cliente. No se como notificar a React (en este caso) de que ese usuario no puede ver las 200 secciones que no tiene acceso sin que pueda ser manipulable desde el cliente. Porque sinceramente, se que podría denegar el permiso cuando realice la petición, pero es que no quiero darle la información si no la necesita. No quiero que un usuario avanzado, pueda realizar una petición a la api y le diga los permisos que tiene, porque no tengo ganas de que sepa la estructura interna.
Me niego a pensar que a estas alturas esto no está solucionado. Y también me niego a pensar que por cada elemento de la pantalla tengo que hacer una petición al servidor. Y aquí ya me da igual que sea Node, PHP, Python, o MyGoodluckGoogleServer ya me entendéis.
Puesto encima de la mesa el "percal":
- ¿Vale la pena intentar mantener PHP como backend? (Intentar ser objetivos y ahorraros el hate a PHP que nos conocemos)
- Independientemente del Backend, ¿Cómo gestiono los permisos de visualización del usuario sin darle esa información al frontend?
- ¿Estoy mal organizado en mi cabeza y eso no funciona así? Es una posibilidad muy probable...
Pregunta extra como opinión personal:
Estoy casi seguro que me voy a poner con React pero me tiene intrigado Vue, cual es vuestra experiencia?
Falta decir que cualquier consejo es bienvenido.
Gracias por la ayuda.