Liens de partage avec filtres intégrés
Détails
-
API : Implémentation POST /login/token pour autoriser les prochaines requêtes avec un JWT en retour lorsque mot de passe est égal au mot de passe root qui est enregistré en variable d’environnement. -
API : Création d’une vue SQL pour chaque rapport nouvellement créée et suppression de la vue lorsque son rapport qui est lié est aussi supprimé -
API : Implémentation de la route POST /shares/ pour générer un JSON Web Token contenant le policy_group_id pour un ou plusieurs rapports avec prise en compte des permissions. Implémentation des policies_groups en BDD et la création des vues SQL filtrées pour chaque permission -
API : Mise en place des scopes sur les routes qui équivaut aux actions dans les policies_groups de la BDD -
API : Implémentation du système d’autorisation qui prend en compte les scopes des routes et les policies_groups en BDD -
API : Chargement par défaut d’une permission avec action « report :* » et ressource « * » qui est attribué à l’utilisateur par défaut root -
Front : Lecture de l’URL de partage de la forme « https://petit-rapporteur.cemea.org/s/JSON-WEB-TOKEN » et importer le JWT pour les prochaines requêtes -
API : Filtrer automatiquement les vues en fonctions des permissions -
API : Implémentation de la route GET /shares/ pour lister les groupes de permissions existants -
API : Implémentation de la route GET /shares/{share-id} pour lire un groupe de permissions existant -
API : Implémentation de la route PUT /shares/{share-id} pour éditer un groupe de permissions existant -
API : Implémentation de la route GET /shares/{share-id}/token pour récupérer le JWT d’un groupe de permissions existant -
API : Permettre de multiples filtres qui s'additionnent sur la vue tableau -
API : Limiter la liste des rapports à seuls ceux qui sont autorisés par report:read
ou une permission spécifiquereport:list
-
Front : Enregistrer le lien de partage en localStorage pour persister à travers les rafraichissement -
Front : Afficher les caractéristiques du lien de partage courant -
API : Rendre les noms des rapports uniques -
Front : Bouton de déconnexion -
Front : Désactivation des filtres lorsque déjà configurés par le jeton d'accès -
API : Empêcher la spécification du même report_id dans un policies_group -
Front : Empêcher l'accès à la page d'édition s'il n'y a pas les permissions -
Ajouter une documentation dans le code pour l'utilisation des liens de partage
Pourquoi
Pouvoir partager des liens d'accès
Notes
Pour créer un lien de partage :
- Aller sur la page de l'api
/api/docs
- Cliquer sur le bouton « Authorize » à droite et s'authentifier avec l'utilisateur « root » (le mot de passe est inscrit en dur dans la configuration de l'application. Pour l'instant ce mot de passe est « lepetitrapporteurcestbien »)
- Déplier la route POST
/v1/reports/share/token
et définir son groupe de permission. Lire les spécifications techniques pour plus de détails. Par exemple le JSON ci-dessous :
{
"comment": "Le nom de mon groupe de permissions",
"policies": [
{
"actions": [
"report:list"
]
},
{
"report_id": "1",
"actions": [
"report:read",
"report:write"
],
"filters": [
{
"field_name": "AT",
"field_data": "01"
}
]
},
{
"report_id": "66",
"actions": [
"report:read"
]
}
]
}
- Exécuter la requête et copier l'access token qui est dans le response body
- Ouvrir l'URL du petit rapporteur sous cette forme
https://URL-du-petit-rapporteur.fr/s/ACCESS-TOKEN
. Exemple:http://localhost:8080/s/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6bnVsbCwicG9saWNpZXNfZ3JvdXAiOnsiY29tbWVudCI6IkxlIG5vbSBkZSBtb24gZ3JvdXBlIGRlIHBlcm1pc3Npb25zIiwiaWQiOjM4LCJwb2xpY2llcyI6W3sicmVwb3J0X2lkIjoiKiIsImZpZWxkX2lkIjoiKiIsImFjdGlvbnMiOlsicmVwb3J0Omxpc3QiXSwiZmllbGRfbmFtZSI6IioiLCJmaWVsZF9kYXRhIjoiKiIsImlkIjozOH0seyJyZXBvcnRfaWQiOiIxIiwiZmllbGRfaWQiOiIqIiwiYWN0aW9ucyI6WyJyZXBvcnQ6cmVhZCIsInJlcG9ydDp3cml0ZSJdLCJmaWVsZF9uYW1lIjoiKiIsImZpZWxkX2RhdGEiOiIqIiwiaWQiOjQyfSx7InJlcG9ydF9pZCI6IjY2IiwiZmllbGRfaWQiOiIqIiwiYWN0aW9ucyI6WyJyZXBvcnQ6cmVhZCJdLCJmaWVsZF9uYW1lIjoiKiIsImZpZWxkX2RhdGEiOiIqIiwiaWQiOjMzfV19LCJpc3MiOiJwZXRpdC1yYXBwb3J0ZXVyIiwiYXVkIjoicGV0aXQtcmFwcG9ydGV1cjphdXRoIiwiaWF0IjoxNjY4MTAxMjcyLjI4ODY4NiwiZXhwIjoxNjY4NzA2MDcyLjI4ODY5NX0.i_E8aea5DI4QnKTNS4DCG5u5mcBYVjpR39IyjAsixr4
Capture d'écran
Références
https://taches.cemea.org/b/bJJXFZxe6pRHN8uHy/dev-web/tEWjJjbfxf3GsP93m
Dépendances
https://gitlab.cemea.org/cemeainterne/petit-rapporteur/-/merge_requests/19 https://gitlab.cemea.org/cemeainterne/petit-rapporteur/-/merge_requests/20 https://gitlab.cemea.org/cemeainterne/petit-rapporteur/-/merge_requests/22
Edited by Killian Kemps