[Résolu] Gestion de groupe en ACL

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

[Résolu] Gestion de groupe en ACL

Messagepar poowie » 01 Oct 2010 à 13:19

Bonjour,

Dans l'évènement querymodechange, j'ai codé ce programme
Code : Tout sélectionner
        Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim acl As NotesACL
   Dim entry As NotesACLEntry
   
   Set db = session.CurrentDatabase                     
   Set acl = db.ACL
   
   Set entry = acl.GetEntry( session.UserName)
   'Set entry = acl.GetEntry(session.UserGroupNameList)
   
   If Not ( source.EditMode ) Then
      currentStatus = source.FieldGetText( "Statut_1" )
      If ( currentStatus = "Clôturé" ) Or (currentStatus = "Annulé") Then
         Messagebox ( "Ticket clôturé ou annulé, toute modification est interdite ! " )
         continue = False
      Elseif ( entry.IsRoleEnabled( "Utilisateur" )) And ((currentStatus ="Fermé") Or (currentStatus = "En traitement"))Then
         Messagebox ( "Le ticket ne peut plus être modifié" )
         continue = False
         
      End If
   End If

   


il marche très bien quand le type d'utilisateur est une personne. dès que je modifie les LCA et je désigne un groupe de personne comme type d'utilisateur, je ne peux plus modifier le document.

j'ai cherché dans l'aide et trouver la formule isgroup et usernamelistgroup mais cela m'avance pas.
auriez vous une idée pour tester que l'entré est un groupe d'utilisateur??
merci d'avance.
Cordialement
Dernière édition par poowie le 04 Oct 2010 à 08:28, édité 1 fois.
poowie
Premier posts
Premier posts
 
Message(s) : 32
Inscrit(e) le : 17 Sep 2010 à 12:44

Messagepar Michael DELIQUE » 01 Oct 2010 à 13:28

salut

c'est normale, tu va chercher dans l'acl si l'utilisateur à le role, mais comme il n'est pas déclaré explicitement tu ne le trouve pas. vue que c'est un groupe qui a le role.

le plus simple et de passer par un evaluate et de tester en formule la ça marche
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar poowie » 01 Oct 2010 à 13:45

Michael DELIQUE a écrit:salut

c'est normale, tu va chercher dans l'acl si l'utilisateur à le role, mais comme il n'est pas déclaré explicitement tu ne le trouve pas. vue que c'est un groupe qui a le role.

le plus simple et de passer par un evaluate et de tester en formule la ça marche

Re,
je crois que j'ai résolu le problème, j'ai modifié le code comme suit:

Code : Tout sélectionner
Set ACLEntry=acl.GetFirstEntry
   While Not ACLEntry Is Nothing
      
      If ACLEntry.IsGroup  =True Or ACLEntry.IsPerson = True Then
         
         
         If Not ( source.EditMode ) Then
            currentStatus = source.FieldGetText( "Statut_1" )
            If ( currentStatus = "Clôturé" ) Or (currentStatus = "Annulé") Then
               Messagebox ( "Ticket clôturé ou annulé, toute modification est interdite ! " )
               continue = False
            Elseif ( ACLEntry.IsRoleEnabled( "Utilisateur" )) And ((currentStatus ="Fermé") Or (currentStatus = "En traitement"))Then
               Messagebox ( "Le ticket ne peut plus être modifié" )
               continue = False
               
            End If
         End If
      End If
      Set ACLEntry=acl.GetNextEntry(ACLEntry)
   Wend

   

j'arrive avec un groupe d'utilisateur à ouvrir le document en édition.

cordialement.
poowie
Premier posts
Premier posts
 
Message(s) : 32
Inscrit(e) le : 17 Sep 2010 à 12:44

Messagepar LSong » 01 Oct 2010 à 14:40

si tu veux savoir quel sont les roles d'une personne

@userRoles

est fait pour ca
la dans ton code si ca passe par des groupes c'est mort
hors la gestion par groupe est la plus efficasse quand tu as beaucoup de monde
LSong
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 353
Inscrit(e) le : 07 Nov 2007 à 14:27
Localisation : Ile de france

Messagepar poowie » 01 Oct 2010 à 14:59

LSong a écrit:si tu veux savoir quel sont les roles d'une personne

@userRoles

est fait pour ca
la dans ton code si ca passe par des groupes c'est mort
hors la gestion par groupe est la plus efficasse quand tu as beaucoup de monde

re,
Effectivement, c'étais une fausse joie, le code ne gère pas les groupe, je suis entrain de travailler la dessus en ce moment, je vais essayer avec le langage de formule. merci pour l'aide.
cordialement
poowie
Premier posts
Premier posts
 
Message(s) : 32
Inscrit(e) le : 17 Sep 2010 à 12:44

Messagepar LSong » 01 Oct 2010 à 15:22

n'esseye pas fait le tu n'as de toute facon pas le choix

si tu veux rester en scripte fait un champ multivalué calculer à l'affichage avec la formule @userRoles

tu auras la liste des roles de l'utilisateur courrant

par exemple
Code : Tout sélectionner
       dim item as NotesItem
       set item = source.document.getFirstItem ("Roles")
       If Not ( source.EditMode ) Then
            currentStatus = source.FieldGetText( "Statut_1" )
            If ( currentStatus = "Clôturé" ) Or (currentStatus = "Annulé") Then
               Messagebox ( "Ticket clôturé ou annulé, toute modification est interdite ! " )
               continue = False
            Elseif ( item.Contains ("[Utilisateur]")) And ((currentStatus ="Fermé") Or (currentStatus = "En traitement"))Then
               Messagebox ( "Le ticket ne peut plus être modifié" )
               continue = False
               
            End If
         End If
LSong
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 353
Inscrit(e) le : 07 Nov 2007 à 14:27
Localisation : Ile de france

Messagepar poowie » 01 Oct 2010 à 15:31

LSong a écrit:n'esseye pas fait le tu n'as de toute facon pas le choix

si tu veux rester en scripte fait un champ multivalué calculer à l'affichage avec la formule @userRoles

tu auras la liste des roles de l'utilisateur courrant

par exemple
Code : Tout sélectionner
       dim item as NotesItem
       set item = source.document.getFirstItem ("Roles")
       If Not ( source.EditMode ) Then
            currentStatus = source.FieldGetText( "Statut_1" )
            If ( currentStatus = "Clôturé" ) Or (currentStatus = "Annulé") Then
               Messagebox ( "Ticket clôturé ou annulé, toute modification est interdite ! " )
               continue = False
            Elseif ( item.Contains ("[Utilisateur]")) And ((currentStatus ="Fermé") Or (currentStatus = "En traitement"))Then
               Messagebox ( "Le ticket ne peut plus être modifié" )
               continue = False
               
            End If
         End If

re,
voila mon code en formula
Code : Tout sélectionner
@If(
@IsMember("[Utilisateur]" ; @UserRoles) & @IsDocBeingEdited &@Contains(Statut_1;"Fermé":"En traitement");
@Do(
@Prompt([Ok]; "Erreur"; "Vous n'êtes plus autorisé à modifier ce document!");
@PostedCommand( [EditDocument]; "0" )
);
@Success
)

je l'ai mis dans le querymodechange, mais pour l'instant les groupes avec le rôle utilisateur arrive comme même à modifier le document.

cdlt

cordialement.
poowie
Premier posts
Premier posts
 
Message(s) : 32
Inscrit(e) le : 17 Sep 2010 à 12:44

Messagepar Michael DELIQUE » 01 Oct 2010 à 15:32

salut

un tips qui pourrait t'aider => http://forum.dominoarea.org/userroles-en-ls-t12200.html
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar LSong » 01 Oct 2010 à 15:49

fait un prompt du @UserRoles voir ce qu'il y a dedans
LSong
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 353
Inscrit(e) le : 07 Nov 2007 à 14:27
Localisation : Ile de france

Messagepar poowie » 04 Oct 2010 à 08:13

Michael DELIQUE a écrit:salut

un tips qui pourrait t'aider => http://forum.dominoarea.org/userroles-en-ls-t12200.html

Bonjour,

Merci infinement pour le Tip, se fut un grand aide.
Le programme est modifié et marche très bien.

Cordialement.
poowie
Premier posts
Premier posts
 
Message(s) : 32
Inscrit(e) le : 17 Sep 2010 à 12:44


Retour vers Développement

cron