@userrole

  • DAU-in


    Ja verstehst du


    Roles der Klasse NotesACLEntry liefert die Rollen des ACL Eintrags zurück.


    Was er aber sucht ist eine Möglichkeit in Script herauszubekommen welche Rollen der aktuelle User besitzt, unabhängig davon ob er direkt oder indirekt in der ACL eingetragen ist

  • macro$ = |@Userroles|
    ret = evaluate(macro$)


    bzw.


    macro$ = |@Contains(@Userroles;"[Rolle]")|
    ret = evaluate(macro$)


    das sollte eigentlich schon reichen ...

    bunt ist das dasein und granatenstark. volle kanne hoshi's!


    IBM Certified Advanced System Administrator (R5, D6, D7)
    IBM Certified Advanced Application Developer (R5, D6, D7, D8)

  • Hi,
    danke für die antworten, glaube mit evaluate kann ich was anfangen :)


    ich verzweifele gerade an einer andern Sache mit @Userrole.


    Ich habe in einer Aktion folgende Formel aufgenommen um die Aktion auszublenden:


    @isnotmember("[Rolle]";@userroles)


    Die Aktion wird mir aber immer angezeigt. Hab schon alle möglichen Varianten probiert, aber komme nicht weiter.


    Die Aktion soll nicht angezeigt werden, wenn nicht eine bestimmte Rolle dem User zugewiesen wurde.


    Hoffe ihr könnt mir hier auch helfen?

  • Ich habe spaßeshalber in ein Dokument ein berechnetes Feld aufgenommen, dort ist nur "@userroles" als Formel eingetragen.


    Dort erscheint mir die zugeordnete Rolle. Nur die Formel in dem Dialog der Aktion will nicht funktionieren.

  • Schon mal in die Designer Hilfe zu @Userroles geschaut ?
    Da hast du genau das Beispiel das du brauchst:


    Zitat


    Diese Teilmaskenformel wählt verschiedene Teilmasken, abhängig davon, ob der Benutzer mit einem Web-Client oder mit Notes arbeitet. Die Rolle WebClient wird von Lotus Notes/Domino automatisch erstellt. Bei dieser Rolle sind die eckigen Klammern nicht erforderlich, dem Rollennamen müssen aber zwei Dollarzeichen vorangestellt werden.
    @If(@IsMember("$$WebClient"; @UserRoles); "WebSubform"; "NotesSubform")


    Musst du nur noch auf deine Zwecke anpassen

  • Also ich ahbe die Formel in den Eigenschaften der Aktion bei "Verstecke wenn Formel wahr ist" eingetragen.


    Formel sieht so aus:


    @lowercase(Datenfeld) = "produktion" & @isnotmember("[Rolle]"; @userroles)


    Hab auch die einzelnen Formeln einzeln probiert. Der Stringvergleich funktioniert, aber sowie ich die Rollenabfrage dazu nehme wird mir die Aktion immer angezeigt, genauso wenn ich den Rolenabgleich allein in das Formelfeld eintrage.

  • Also mit deiner Formel funktioniert es bei mir einwandfrei.


    Liegt die datenbank lokal und hat keine konsistente ACL aktiviert ?


    Was wird angezeigt wenn du die DB offen hast und unten in der Statusleiste auf das Sicherheitsfeld klickst (direkt links neben den Arbeitsumgebungen) ? Wird dort die Rolle nicht angezeigt ?

  • Wenn ich Aktionen/Text usw. vor "falschen Usern" verbergen will, verwende ich immer


    !@Contains(@UserRoles ; "[Rolle]" )


    und schon sehen die es nicht mehr.


    Ich kann es auch prima verketten uns mehrfach-Bedingungen erzeugen:


    !@Contains(@UserRoles ; "[Rolle1]":"[Rolle2]":"[Rolle3]" )

  • Hallo zusammen,
    ich habe die Formel jetzt folgendermaßen umgebaut:


    "@IF(@lowercase(Datenfeld) = "produktion" & @ismember("[Rolle]"; @userroles);0;1)"


    Mit dieser Formel funktioniert jetzt auch alles einwandfrei.


    Bin noch Anfänger was Notes Programmierung angeht und Notes ist da teilweise schon recht komplex bzw. eigen :)


    Aber vielen Dank für eure Hilfe!!!!!!
    Ist echt ein super Forum hier!

  • Ich habe gerade was sehr nettes im atnotes Forum gefunden:


    Seit R6 gibt es für @UserRoles eine Entsprechung in Script:


    roles = notesDatabase.QueryAccessRoles( name$ )



    Die funktion freut mit Sicherheit den ein oder anderen, der genauso wie ich auf der Suche nach dem @userroles Pendant in Lotus Script war :)