chairemobilite / transition

Transition is a modern new approach to transit planning. It's a web application to model, simulate and plan public transit and alternative transportation.
http://transition.city
MIT License
20 stars 13 forks source link

Basic endpoints and authentication for public API #845

Closed shymkom45 closed 3 months ago

shymkom45 commented 5 months ago

Public REST endpoints are defined in transition-backend in order to access basic transition objects (specifically: paths, nodes, scenarios and available routing modes). There is also a new authentication mode (bearer token authentication) defined in chaire-lib-backend. Here are a few things to note:

shymkom45 commented 5 months ago

L'approche est bonne! Vous pouvez continuer dans cette direction. Pour l'authentification, il faudrait voir s'il y a autre chose à faire ou une autre approche, si ça fonctionne pour l'instant ok. Vous pouvez regarder du côté des plugins passport s'il y a en a un qui pourrait être utilisé pour une auth avec api token genre. (https://www.passportjs.org/packages/)

Tel que mentionné dans la description du PR, on y travaille déjà! On n'a cependant pas quelque chose de complètement fonctionnel pour l'instant (c'est pour cela qu'on ne l'a pas encore inclus dans le PR), mais on a déjà fait du bon progrès pour implémenter les jetons dans notre système d'authentification.

shymkom45 commented 4 months ago

Côté logique et code, c'est bien beau, il y a quelques petits détails à fixer et des tests à ajouter.

Savez-vous comment je pourrais tester la fonctionnalité sans frontend, genre avec curl. J'ai essayé curl -d "username=u&password=p" -X POST http://localhost:8080/token, mais j'ai un bad request (quoique j'ai pas roulé les migrations, je vais attendre vos modifications, mais je me serais attendu à un 500 et non 400).

@tahini Il faut plutôt faire la commande curl -d "usernameOrEmail=u&password=p" -X POST http://localhost:8080/token, c'est de cette manière que le corps de la requête a été défini dans la stratégie local-login de passport.

tahini commented 4 months ago

En fait, avant de pouvoir merger, pourriez-vous faire un rebase de votre branche sur les changements les plus récents pour vous assurer qu'il n'y a pas de conflits?

Pour faire un rebase sur main:

git checkout main
git pull (en vous assurant que ça pull bien d'upstream et non de votre repo)
git checkout basic-endpoints
git rebase main
git push -f <remote> basic-endpoints