3

J'ai une application web utilisant Rails comme backend et AngularJS comme frontend et il a un système d'autorisation plutôt compliqué qui doit cacher/montrer les boutons dans le frontend en conséquence. Par exemple, imaginez quelque chose comme ebay, si j'ai créé un produit, je peux éditer, supprimer, etc. mais quelqu'un peut partager un produit avec moi et je peux aussi éditer, mais pas supprimer. L'autorisation est donc calculée par ressource et n'utilise pas de rôles.Comment utiliser les autorisations dorsales dans le frontend

Je pensais que l'ajout d'un attribut « permissions » à chaque objet JSON, quelque chose comme:

[{ 
    id: 1, 
    name: "product 1", 
    permissions: { 
     canEdit: true, 
     canDelete: false 
    } 
}, 
{ 
    id: 2, 
    name: "product 2", 
    permissions: { 
     canEdit: true, 
     canDelete: true 
    } 
}] 

Y at-il meilleure pratique d'envoyer chaque autorisations de ressources au frontend?

Pour être clair, ces autorisations ne sont utilisées que pour afficher/masquer boutons, le backend bloque toujours cette ressource même si la personne change les valeurs du frontend

+0

Vous ne devriez pas gérer des permissions comme celle-ci sur le front comme quelqu'un pourrait facilement le modifier ... –

+0

ces permissions sont seulement utilisées pour montrer/cacher les boutons, le changer ne permettra pas à la personne d'effectuer des actions –

Répondre

0

Comme la logique de comprendre ce qu'est un l'utilisateur peut faire avec chaque élément est déterminé sur le côté serveur, je suppose qu'il est redondant de transmettre les autorisations associées à ces éléments à côté client, sauf si le traitement supplémentaire est effectué sur le client en fonction de l'interaction de l'utilisateur. Dans votre cas, vous pouvez simplement renvoyer différentes collections d'objets, par exemple une liste modifiable et une liste en lecture seule au client, en fonction des autorisations associées, puis afficher les actions en fonction de la collection à laquelle appartient l'élément?

+0

Curieux de savoir si cela a aidé? –

+0

Un point de terminaison peut recevoir l'identificateur d'utilisateur, vérifier ses permissions et sa réponse avec un groupe de clés avec des valeurs booléennes liées à tous les composants show/hide pour et frontend spécifique (dans ce cas, un angulaire). –