IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Jasperserver Discussion :

[JasperServer] Gestion des rôles/droits


Sujet :

Jasperserver

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut [JasperServer] Gestion des rôles/droits
    Bonjour,

    Je souhaiterais qu'un end user puisse se connecter à JasperServer, et avoir une liste de rapports qu'il puisse éxecuter, uniquement.
    C'est à dire que je voudrais si possible supprimer les menus, mais surtout lui enlever la possibilité de modifier le rapport via le concepteur et autres.

    Je me suis créé un utilisateur et un rôle. J'ai associé tous les droits proposés, un par un, à ce rôle pour un rapport donné mais il n'y a aucun effet, l'utilisateur à toujours des accès en modification même pour un droit "aucun accès".

    J'utilise la dernière version de JasperServer, la 3.5.
    Merci d'avance,

    Julien

  2. #2
    Membre averti

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2007
    Messages : 293
    Points : 440
    Points
    440
    Par défaut
    J'ai personnellement fait une "customisation" de l'environnement Jasperserver qui semble aller dans le sens que tu souhaites.
    Tout d'abord, j'ai fait en sorte que sur le login d'entrée on arrive non pas sur l'arbre à merveilles mais sur un rapport. C'est piloté par le rôle de l'utilisateur.
    Ce rapport - je l'appelle page d'accueil du "service" - lit les metadata de jasper, et en fonction du nom loggué et de ses droits en tant qu'user sur les répertoires, liste les rapports auquel l'utilisateur peut accéder. Ces rapports affichent en général les données intéressantes donc les bases statistiques ou autres.On peut les activer grace aux hyperliens qui pointent dessus.
    Voilà l'idée. C'est pas compliqué à faire.
    J'ai fait des sous-arborescences basées sur les services et les droits des utilisateurs : en jouant sur les Read, Read+Delete, Read+Delete+Write on peut faire 3 niveaux qui filtrent les rapports disponibles.

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Merci Gabriel,

    Ta solution semble correspondre à ce que je souhaite faire.
    L'utilisateur "toto" du rôle "tata" se connecte et arrive directement sur la page qui liste les rapports (flow.html?_flowId=listReportsFlow). Il peut uniquement les afficher en cliquant sur le lien.

    Ca, c'est la théorie ! Mais je n'ai aucune idée de la façon de la mettre en place.
    J'ai essayé de modifier WEB-INF/jasperserver-servlet.xml qui définit la page d'accueil selon les roles (http://jasperforge.org/plugins/espfo...&topicid=15545) mais aucun effet ....

    Peux tu me détailler ta méthode stp.
    Merci d'avance,

    Julien

    ps: tu as fait un rapport qui liste tes rapports ??

  4. #4
    Membre averti

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2007
    Messages : 293
    Points : 440
    Points
    440
    Par défaut
    Je te met un pointeur vers un texte que j'ai posté il y a quelques temps sur le forum anglais de jasperforge et dans lequel j'explique comment je fais.
    C'est très "bourrin" comme méthode mais çà marche à tous les coups.

    lien vers forum

    Attention, il me semble que lors de mes tests j'avais "trouvé" qu'il fallait que le nom du role choisi commence par "ROLE_".

    Tu verras dans l'exemple que je donne j'utilise les roles : ROLE_EVADE,ROLE_KIMOCE,...

    Pour la requête associée à la page d'accueil, qui liste les "sous-divisions autorisées"(voir plus loin), j'utilise celle-ci (vs database mysql jasperserver):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Select case when T2.name='EVADE' then T1.label end as MenuEvade,
    case when T2.name='RestauMuni' then T1.label end as MenuRestau,
    case when (T2.name!='RestauMuni' and T2.name!='EVADE') then T1.label end as MenuOthers,
    T1.id as FolderId from jasperserver.JIResourceFolder
    inner join jasperserver.JIResourceFolder T1 on jasperserver.JIResourceFolder.id=T1.parent_folder
    inner join jasperserver.JIResourceFolder T2 on T2.id=jasperserver.JIResourceFolder.parent_folder
    where jasperserver.JIResourceFolder.uri in (
    Select concat(substr(jasperserver.JIObjectPermission.uri,6),'/Queries') as uripath from jasperserver.JIObjectPermission
    inner join jasperserver.JIUser on jasperserver.JIUser.id=jasperserver.JIObjectPermission.recipientobjectid
    where jasperserver.JIUser.fullname=$P{FullUserName}
    and jasperserver.JIObjectPermission.recipientobjectclass like '%RepoUser'
    and jasperserver.JIObjectPermission.permissionMask=2)
    and T1.uri in (
    Select substr(jasperserver.JIObjectPermission.uri,6) as uripath from jasperserver.JIObjectPermission
    inner join jasperserver.JIUser on jasperserver.JIUser.id=jasperserver.JIObjectPermission.recipientobjectid
    where jasperserver.JIUser.fullname=$P{FullUserName}
    and jasperserver.JIObjectPermission.recipientobjectclass like '%RepoUser'
    and jasperserver.JIObjectPermission.permissionMask=18)
    Ca paraît complexe. Quelques explications :

    - j'utilise une arborescence de répertoires de "répartition" à partir de "/reports" de jasperserver constituée :
    - au niveau 0 le nom du "Service" (=département,division,organisation,société,...)
    - ensuite en dessous un niveau de nom "Queries"
    - ensuite un niveau "sous-division" qui ne contient aucun report "listable" (mais qui peut contenir des rapports utilitaires appelés, des ressources, des listes,..)
    - enfin un niveau "Chapitre" ou "paquet de requêtes", qui contient les rapports proprement dits.

    Cette requête découpe les sous-divisions autorisées selon 3 colonnes ("EVADE","RestauMuni" (restauration municipale),"Others" (autres))
    pour des raisons de présentation : pas forcément utile dans ton cas.

    Les "droits" sont gérés en utilisant le mécanisme des droits "utilisateurs" (et non pas "ROLE" de jasperserver :
    - personne n'a de droits sur /reports (=No Access *)
    - les users autorisés du niveau 0 ont les droits "Read" sur ce niveau
    - les users autorisés du niveau 1 ont les droits "Delete + Read" sur ce niveau
    - les users autorisés du niveau 2 ont les droits "Write + Delete + Read" sur ce niveau.
    Pour atteindre un report il faut donc avoir les droits sur les niveaux 0,1 et 2.

    Attention il faut mettre les bons droits par ROLE pour les nouveaux roles définis sur les répertoires adéquats : ce sont eux qui vont prévaloir. Les droits par utilisateur , dans mon cas, ne sont utilisés que comme "support véhicule" des droits et m'évitent d'avoir à écrire un outil séparé de gestion des droits.

    Ce rapport "d'accueil" liste les sous-divisions accessibles et appelle un autre rapport qui liste les chapitres et requêtes en dessous. La requête utilisée est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    select name,classe,uri,label,description from
    (Select JIResource.name,T2.label as classe,T2.uri ,JIResource.label,JIResource.description
    from JIResource
    inner join JIResourceFolder T2 on T2.id=JIResource.Parent_Folder
    inner join JIResourceFolder T1 on T1.id=T2.parent_folder
    where JIResource.id in (
    Select id from JIReportUnit) and T1.id=$P{UriId}
    and T2.uri in (
    Select substr(jasperserver.JIObjectPermission.uri,6) as uripath from jasperserver.JIObjectPermission
    inner join jasperserver.JIUser on jasperserver.JIUser.id=jasperserver.JIObjectPermission.recipientobjectid
    where jasperserver.JIUser.fullname=$P{FullUserName}
    and jasperserver.JIObjectPermission.recipientobjectclass like '%RepoUser'
    and jasperserver.JIObjectPermission.permissionMask=30)
    order by T2.label) T3
    Le paramètre $P{UriId} est celui fourni par la requête précédente et donc passé dans l'URL de l'hyperlink.

    Ca peut paraître compliqué mais le principe est simple et tu dois pouvoir t'en inspirer pour faire à ta façon.

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Gabriel,

    Merci pour ta solution.
    Elle me semble néanmoins compliquée par rapport à ma compréhension de jasperserver d'une part, et par rapport à ce que je veux faire d'autre part !!

    Modifier le fichier jasperserver-servlet.xml semble être approprié au regard du nom de la balise (<property name="homePageByRole">). Je comprends ça comme "l'utilisateur qui a ce rôle arrivera ici au login".

    Mais rien n'y fait ...

    Julien

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    J'ai enfin un début de solution :
    Si on utilise la version pro, il faut aussi éditer les fichiers *-pro.xml.

    Pour la home page d'un utilisateur, il faut donc modifier jasperserver-servlet-pro.xml qui va surcharger le fichier jasperserver-servlet.xml.

    J'ai, par contre, toujours le problème de gestion des rôles (cf 1er post de la discussion). Je n'arrive pas à faire en sorte qu'un utilisateur puisse uniquement ouvrir un rapport en lecture, sans avoir accès au menu "Ouvrir dans le concepteur". Soit il n'a aucun accès du tout et ne peut même pas afficher le rapport, soit il peut tout faire ...

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 19
    Points : 22
    Points
    22
    Par défaut Suppression de l'arborescence (partie gauche) ROLE_USER
    Bonjour,

    J'ai fait quelques investigations, lu ce qui est proposé mais je n'arrive pas à supprimer l'arborescence de gauche en cas de role ROLE_USER

    J'ai sans doute mal compris qqchose ...

    Est-ce possible de façon simple, accessible pour un novice ?

    Merci
    Jean-Paul

Discussions similaires

  1. [JasperServer] Gestion des rôles/droits
    Par jsloubet dans le forum Jasper
    Réponses: 6
    Dernier message: 11/01/2011, 00h15
  2. Réponses: 1
    Dernier message: 03/07/2010, 18h47
  3. [JasperServer] gestion des utilisateurs
    Par anayathefirst dans le forum Jasperserver
    Réponses: 7
    Dernier message: 18/04/2008, 10h44
  4. Gestion des rôles avec Active Directory ?
    Par Mandotnet dans le forum ASP.NET
    Réponses: 4
    Dernier message: 11/12/2007, 11h23
  5. Gestion des rôles sous forms
    Par gege87270 dans le forum Forms
    Réponses: 0
    Dernier message: 26/09/2007, 16h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo