Skip to content

Liens de partage avec filtres intégrés

Killian Kemps requested to merge filters-link into main

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écifique report: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 :

  1. Aller sur la page de l'api /api/docs
  2. 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 »)
  3. 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"
      ]
    }
  ]
}
  1. Exécuter la requête et copier l'access token qui est dans le response body
  2. 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

Screenshot_from_2022-10-12_12-06-16

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

Merge request reports