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

QlikView Discussion :

Création d’une variable d’accès pour un groupe


Sujet :

QlikView

  1. #1
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 112
    Points : 54
    Points
    54
    Par défaut Création d’une variable d’accès pour un groupe
    Bonjour,

    J’ai une application qui va être utilisée par plusieurs sociétés, j’ai créé mon script de sécurité et attribué aux differents utilisateurs des groupes :


    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    SET vApplication='COMMERCIAUX';
     
     
    SECTION Access;
     
    LOAD UPPER(ACCESS) as ACCESS, 
         UPPER(USERID) as USERID, 
         UPPER(PASSWORD) as PASSWORD, 
         UPPER(NTNAME) as NTNAME, 
         UPPER(GROUPE) as GROUPE
     
    FROM
    C:\QLIKVIEW\03_SOURCES_EXTERNES\Securite\Securites_QlikView.xlsx
    (ooxml, embedded labels, table is ACCESS)
    WHERE APPLICATION='$(vApplication)';
     
    STAR is *;
     
     
    FILTRAGE:
    LOAD UPPER(GROUPE) as GROUPE, 
         PrjSociete
     
    FROM
    C:\QLIKVIEW\03_SOURCES_EXTERNES\Securite\Securites_QlikView.xlsx
    (ooxml, embedded labels, table is FILTRAGE)
    WHERE APPLICATION='$(vApplication)';
     
     
    SECTION Application;
    Avec:
    ACCESS, NTNAME,GROUPE
    ADMIN, ADMIN,ADMIN
    USER,RespSociete1,Societe1
    USER,RespSociete2,Societe2

    Le script fonctionne très bien.



    Ensuite j’ai voulu créer une variable permettant d’identifier l’utilisateur en tant qu’admin. Je me sers de cette pour conditionner l’affichage de certaines feuilles/objets.

    Pour faire cette variable j’ai rajouter à la suite du script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ADMIN:
    LOAD UPPER(ACCESS) as ACCESS, 
         UPPER(GROUPE) as GROUPE,
         if(USERID='*',NTNAME,if(NTNAME='*',USERID)) as Admin_User_Name
    FROM
    C:\QLIKVIEW\03_SOURCES_EXTERNES\Securite\Securites_QlikView.xlsx
    (ooxml, embedded labels, table is ACCESS)
    WHERE APPLICATION='$(vApplication)'and ACCESS='ADMIN';

    Puis pour ma variable j’ai trouvé ce code sur un forum qui fonctionne assez bien :
    vAdmin=concat(chr(39) & Admin_User_Name & chr(39),',')
    IsAdmin=WildMatch(OSUser(),$(vAdmin))

    Quand je veux conditioner l’affichage d’un objet j’ai simplement a placer =$(IsAdmin) c’est parfait.

    Maintenant je voudrais pouvoir faire la meme chose au niveau des groupes :
    Si un utilisateur de la societe 1 se connecte je veux pouvoir conditionner l’affichage des indicateurs de la societe 2 uniquement pour les utilisateurs de la societe 2 et les admin et inversement…)

    Je pourrais dupliquer ma précédente table en créant autant de table qu’il y a de groupe et en modifiant mon WHERE pour faire une requete par groupe mais je pense qu’il y a moyen de faire beaucoup plus simple.

    Une idée ?

  2. #2
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Si l'utilisateur qui se connecte est "RespSociete1", alors forcément, il aura comme GROUPE "Societe1".


    Pourquoi ne pas tout simplement conditionner l'affichage sur la valeur de "GROUPE" ?

  3. #3
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 112
    Points : 54
    Points
    54
    Par défaut
    C'est exactement ce que je cherche a faire

    Dans l'idéal il me faudrait une variable du style:

    =$(IsSociete1) qui conditionnerait l'affichage uniquement pour les utilisateurs du groupe Societe1 et Admin.

  4. #4
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Je pense que le plus simple est de prendre un cas concret.

    Supposons que vous ayez ces données :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    section Access;
    Access:
    LOAD * INLINE [
        ACCESS, USERID, PASSWORD, GROUPE
        ADMIN, admin, admin, ALL
        USER, a, a, SOC A
        USER, b, b, SOC B
        USER, c, c, SOC C
    ];
     
    Section Application;
    star is *;
     
    GROUPE:
    LOAD * INLINE [
    GROUPE, Société
    ALL, *
    ];
     
     
     
    Data:
    LOAD * INLINE [
    Société, Année, Valeur
    Soc A, 2012, 1
    Soc A, 2013, 2
    Soc B, 2012, 4
    Soc B, 2013, 8
    Soc C, 2012, 16
    Soc C, 2013, 32
    ];
     
    Concatenate (GROUPE)
    LOAD DISTINCT 
    	upper(Société) AS GROUPE,
    	Société
    RESIDENT Data;

    Ce que vous voulez, c'est savoir si un utilisateur a les droits sur "Soc A".
    Vous pouvez utiliser une formule du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET estSocA = (count({1 <Société={'Soc A'}>} GROUPE) > 0);
    Ainsi, en utilisant "$(estSocA)" vous aurez "true()" (-1) pour les utilisateurs "ADMIN" et "A" et "false()" (0) pour les utilisateurs "B" et "C".

  5. #5
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 112
    Points : 54
    Points
    54
    Par défaut
    Merci PhunkyBob,

    Je n'ai pas encore pu tester mais j'ai une question: Je ne comprend pas l'utilité de la table DATA, pourquoi ne pas tout faire en même temps dans la table GROUPE ?

  6. #6
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Davidb_ Voir le message
    Je ne comprend pas l'utilité de la table DATA, pourquoi ne pas tout faire en même temps dans la table GROUPE ?
    Je suppose que vous avez des données dans votre application ?
    Et vous filtrez ces données selon les groupes.
    Ne connaissant pas vos données, j'ai créé une table bidon "Data" qui contient un minimum de données pour que mon application ait un sens.

    Si je n'avais aucune donnée, je n'aurai pas pu tester mon application.

  7. #7
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 112
    Points : 54
    Points
    54
    Par défaut
    Oui effectivement

    Je viens de tester, ça fonctionne c'est parfait

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Conseil pour la création d’une application.
    Par rch05 dans le forum Modélisation
    Réponses: 18
    Dernier message: 11/10/2010, 09h23
  2. Variables d'environnements communes pour un groupe d'utilisateurs.
    Par Empty_body dans le forum Administration système
    Réponses: 1
    Dernier message: 15/09/2008, 17h12
  3. Réponses: 8
    Dernier message: 20/06/2008, 09h00
  4. Conseils pour la création d’une base de donnée
    Par Isabelle27 dans le forum Access
    Réponses: 2
    Dernier message: 09/10/2006, 08h55

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