-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reservation system integrated in status webpage #4
Comments
From asrob-uc3m/impresoras-asrob#8
|
Ahora que tenemos una página de operadores generada automáticamente, podríamos ir un paso más allá y utilizar la información de esta página para generar una base de datos de operadores autorizados. Utilizando una autenticación basada en GitHub (similar a esta), se podría filtrar que únicamente los usuarios de GitHub que han obtenido el título de operador puedan realizar reservas. |
Ayer y hoy he estado pegándome con XAMPP, HTML, PHP, SQL y demás, y además de servirme para refrescar cosas que había dejado olvidadas, he parido una página que podría hacernos las veces de sistema propio de reservas. La página está en html con php incrustado. Utilizo el siguiente schema: Y esta es una captura de la web. En la parte superior tiene algunos logs de depuración. He estado hablando con @David-Estevez y creemos que esta estructura se podría explotar para conseguir algo funcional, aunque parece que estaríamos limitados por el tema del https (asrob-uc3m/actas#88)... Opiniones? |
De cara a la experiencia del usuario final, no veo que haga diferencia http/https (aunque sea recomendable https siempre que hayan cuentas y contraseñas). ¿Cómo podría casar esto con la idea de autenticación basada en GitHub? |
Según he visto, se podría dar de alta la aplicación en la cuenta de GitHub de ASROB, y usar la API de GitHub para recuperar la información del usuario (con el nombre de usuario sería suficiente) una vez logueado. Por tanto, de la captura anterior, el campo de nombre de usuario no sería necesario. Más info: https://developer.github.com/v3/guides/basics-of-authentication/ Por otra parte, @David-Estevez me habló de Flask, que según he entendido, se podría usar para algo similar: https://github-flask.readthedocs.io/en/latest/ |
Usar https es IMPRESCINDIBLE, ya que se necesita hacer autenticación de usuarios y, una vez autenticados, mandar credenciales al servidor. Tendríamos un agujero enorme de seguridad si lo hacemos por http. Por otro lado, @Siotma y yo estuvimos hablando de montar el backend de la aplicación en Flask, que es un framework de Python que tiene muchas de las cosas necesarias para una web moderna y segura ya implementadas y testeadas. Como ejemplo, el módulo que comenta @Siotma (https://github-flask.readthedocs.io/en/latest/) permite autenticar usuarios usando GitHub de manera similar a como lo hace Gitbook, usando OAuth y sin tener que trampear nada con la cuenta de ASROB. Por otro lado, la mayor dificultad de la web tal y como yo lo veía era la interfaz de usuario para llevar a cabo la reserva, y esto lo ha solucionado @Siotma perfectamente con su interfaz basada en tablas y checkboxes. Una vez se tiene eso, que es lo más chungo, diseñar el resto de la arquitectura me parece bastante sencillo. |
Hoy, @David-Estevez y yo hemos hablado de la posibilidad de montar la aplicación de reservas (y eventualmente, la de impresoras y la de operadores) sobre un framework de Flask. De esta forma se podrían dinamizar las consultas, respetando prácticamente intacta sus estructuras y plantillas. La estructura de la página sería similar a la expuesta en las capturas de más arriba, pero aprovechando bootstrap para darle un aspecto acorde con el de resto de páginas. Además, como ya comenté, se dispone de una extensión para dar soporte a autenticación basada en GitHub: https://github-flask.readthedocs.io/en/latest/ @David-Estevez valora la posibilidad de incorporar javascript y/o AngularJS para dotar a la página de refresco en tiempo real. Por otro lado, hemos revisado el concepto de webhooks y parece que encajarían bien con Flask en tanto en cuanto hacen POST a una url predesignada que Flask podría estar escuchando; de manera que al realizar este desarrollo obtendríamos al mismo tiempo una base con la que implementar fácilmente actualizaciones en tiempo real para nuestras páginas que actualmente son refrescadas periódicamente. |
@David-Estevez se ha ofrecido a iniciar un nuevo repo para este desarrollo y dotarlo de una estructura compatible con Flask, así como los ficheros necesarios para comenzar a desarrollar la web. En caso de que no le sea posible realizarlo, lo comunicará por si se puede encargar otra persona. |
Voy a intentar ampliar y/o clarificar las ideas que han surgido esta tarde también en esta issue. Básicamente es lo que comenta @Siotma, diseñar un sistema basado en Flask, que nos permita a largo plazo unificar los esfuerzos de la web de impresoras la web de operadores y la futura web de reservas, así como sentar las bases de otras posibles futuras aplicaciones que se puedan necesitar (ejem, inventario, ejem). Flask es idóneo para esto porque:
Respecto a cómo funcionaría el sistema, existen dos posibilidades.
La solución 1 tiene la ventaja de ser más sencilla de implementar. La 2, pese a ser algo más complicada, tiene la ventaja de ser más rápida e interactiva. Con la solución 2 también tenemos la posibilidad (si se demuestra su factibilidad) de alojar la web como parte de la web de asrob, usando javascript para hacer peticiones a nuestro backend. Además, con un backend podríamos modificar nuestro sistema actual de refresco de las webs de impresoras y operadores para que en lugar de por polling, se generen por eventos. Estos eventos serían hooks de GitHub que se configurarían para actúar cada vez que se modifique o cree una issue. Por último, un backend nos permitiría tener un ASROBot interactivo, aunque no sé si eso es algo bueno o malo 😅 Como dice @Siotma , ya que yo tengo algo de experiencia montando proyectos de Flask, me he ofrecido a crear el esqueleto de un proyecto "Hola mundo" que sirva como base para que podamos construir esta web de reservas, sea cual sea el método elegido. |
He creado el repo que alojará el proyecto en https://github.com/asrob-uc3m/printers-management-system. Como primera issue del mismo (asrob-uc3m/printers-management-system#1) está el añadir el esqueleto del proyecto en Flask. |
Context
From #8:
Objectives
References for future development
The text was updated successfully, but these errors were encountered: