Autor Thema: wie kann ich alle User einer bestimmtem Rolle ermitteln ?  (Gelesen 15929 mal)

Offline Pidray

  • Junior Mitglied
  • **
  • Beiträge: 58
  • 640K ought to be enough for anybody. (Bill Gates)
Hi @all,

ich suche nach einer Möglichkeit, zu einer bestimmten Rolle XYZ alle User zu ermitteln, um diese dann in einem Dokument als Berechtigungsinfo anzuzeigen. Es soll ein "freundlicherer" Ersatz sein für die lapidare Info "Nur User mit der Rolle XYZ dürfen das!"

Schon einmal Danke in Voraus !

Gruß
Katrin
« Letzte Änderung: 23.09.09 - 16:10:10 von Pidray »
Lotus Notes 6.0.1

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: wie kann ich alle User einer bestimmtem Rolle ermitteln ?
« Antwort #1 am: 22.09.09 - 16:31:38 »
Da musst Du die ACL durchlaufen und die Einträge auf deine Rolle prüfen. Namen sind ja kein Problem aber Gruppen musst Du dann rekursive im NAB auflösen.

Ist quasi reine Fleißarbeit.
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline Pidray

  • Junior Mitglied
  • **
  • Beiträge: 58
  • 640K ought to be enough for anybody. (Bill Gates)
Re: wie kann ich alle User einer bestimmtem Rolle ermitteln ?
« Antwort #2 am: 23.09.09 - 09:59:47 »
Danke für die schnelle Antwort "

rekursive im NAB auflösen.
was heißt das bitte ? NAB ?

und wie mache ich das ? Ich weiss nicht mal genau, nach welchen Stichpunkten ich suchen soll ...
 :-:

Gruß
Katrin
Lotus Notes 6.0.1

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: wie kann ich alle User einer bestimmtem Rolle ermitteln ?
« Antwort #3 am: 23.09.09 - 10:44:48 »
Danke für die schnelle Antwort "

rekursive im NAB auflösen.
was heißt das bitte ? NAB ?

und wie mache ich das ? Ich weiss nicht mal genau, nach welchen Stichpunkten ich suchen soll ...
 :-:

Gruß
Katrin

NAB = Namens - und Adressbuch

Du musst die Gruppeneinträge, v.a. die Einträge von Gruppen in Gruppen im NAB durchgehen und nach den Personen auflösen.

Das geht über Lotus Script und ich glaube, dass du damit noch nicht soviel Erfahrung hast (deinem Posting nach).

Grüsse

Dau-in
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Glombi

  • Gast
Re: wie kann ich alle User einer bestimmtem Rolle ermitteln ?
« Antwort #4 am: 23.09.09 - 10:58:31 »
Das hört sich an wie mit Kanonen auf Spatzen schießen...

Wenn es nur eine Info in einem Dokument sein soll, dann würde ich mit berechnetem Text oder einem zur Anzeige berechneten Feld arbeiten und @UserRoles auswerten.

Andreas

Offline Pidray

  • Junior Mitglied
  • **
  • Beiträge: 58
  • 640K ought to be enough for anybody. (Bill Gates)
Re: wie kann ich alle User einer bestimmtem Rolle ermitteln ?
« Antwort #5 am: 23.09.09 - 11:02:44 »
ah, danke ! Mit den Abkürzungen kenne ich mich nicht aus, habe es nur im Nachhinein anhand anderer Threads vermutet ...

Wenn ich LS verwende, ist es meist ein herumbasteln bis das herauskommt, was ich will. Da kann es schon mal von hinten durch die Brust ins Auge gehen - aber ein Treffer  ;)
(siehe meine vorherige Anfrage:    http://atnotes.de/index.php/topic,45751.msg298160.html#msg298160)

Und oft hilft mir die Designer-Hilfe oder ihr hier im Forum sehr weit. Nur diesmal steht in der Hilfe zwar, wie ich die Rolle eines Benutzers ermittle, aber nicht umgekehrt ...
Anscheinend ist es für meinen Zweck eh wie die sprichwörtliche Kanone, welche auf Spatzen schießt!

Trotzdem: Danke !

Gruß
Katrin

Lotus Notes 6.0.1

Offline Pidray

  • Junior Mitglied
  • **
  • Beiträge: 58
  • 640K ought to be enough for anybody. (Bill Gates)
Re: wie kann ich alle User einer bestimmtem Rolle ermitteln ?
« Antwort #6 am: 23.09.09 - 11:20:52 »
Das hört sich an wie mit Kanonen auf Spatzen schießen...
*lol* da haben wir uns wohl überschnitten

@UserRoles auswerten.
Hmm, das gibt doch nur die Rolles des aktiven Benutzers zurück, oder ?


Ich habe ein Steuerungsdokument mit mehreren Personeneinträgen für verschiedene Punkte (Personen A+B unter Punkt 1, Personen A+C+D unter Punkt 2, usw.)
In einer anderen Maske 2 gibt es die Punkte 1,2, ... welche per "Absatz verbergen" nur die Personen lt. Steuerungsdokument sehen dürfen (Button).
Dazu steht in der zweiten Maske die DocID des  Steuerungsdokuments in einem berechneten Feld drin (@DbLookup) und per @GetDocField hole ich die Personennamen in ein weiteres berechnetes Feld des aktuellen Dokumentes (Maske 2).
Zusätzlich zu den Personen A-D dürfen die User mit der Rolle XYZ die Abschnitte + Buttons sehen.

Ich will/wollte dies in einem Feld anzeigen lassen; wegen der Benutzerfreundlichkeit sollte halt nicht "die Rolle XYZ darf das auch" angezeigt werden sondern die betreffenden Personen.

Jetzt habe ich mich doch noch wiederholt, sorry.

Gruß
Katrin
Lotus Notes 6.0.1

BigWim

  • Gast
Re: wie kann ich alle User einer bestimmtem Rolle ermitteln ?
« Antwort #7 am: 23.09.09 - 11:22:21 »
Hallo Katrin,

Zitat
Es soll ein "freundlicherer" Ersatz sein für die lapidare Info "Nur User mit der Rolle XYZ dürfen das!"
Das macht der Client "automatisch", wenn Du mit Erstellen->Abschnitt->kontrollierter Zugriff arbeitest.

Markus

Offline Pidray

  • Junior Mitglied
  • **
  • Beiträge: 58
  • 640K ought to be enough for anybody. (Bill Gates)
Re: wie kann ich alle User einer bestimmtem Rolle ermitteln ?
« Antwort #8 am: 23.09.09 - 11:35:36 »
Hallo Katrin,

Zitat
Es soll ein "freundlicherer" Ersatz sein für die lapidare Info "Nur User mit der Rolle XYZ dürfen das!"
Das macht der Client "automatisch", wenn Du mit Erstellen->Abschnitt->kontrollierter Zugriff arbeitest.

Markus
automatisch passiert doch nur das sichtbar/nicht sichtbar - ohne Info für wen es sichtbar ist

Ich hätte besser geschrieben: "Auch User mit der Rolle XYZ dürfen das!":
Auch die Personen, welche die betroffenen Buttons nicht sehen dürfen, sollen sehen, wer noch berechtigt ist.
Wenn z.B. Person A+B krank/im Urlaub sind und somit niemand da ist, der den Button unter Punkt 1 drücken darf, gibt es für den Notfall die Rolle XYZ, welche alles darf. Nun soll eben ein Infofeld anzeigen, wer die XYZ-Rolle hat.

Ich glaube, ich konnte mich nicht so recht verständlich machen  :(

Gruß
Katrin
Lotus Notes 6.0.1

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: wie kann ich alle User einer bestimmtem Rolle ermitteln ?
« Antwort #9 am: 23.09.09 - 11:47:34 »
Mit Hilfe der NotesACL class  solltest du das Problem programmiertechnisch lösen können.

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: wie kann ich alle User einer bestimmtem Rolle ermitteln ?
« Antwort #10 am: 23.09.09 - 11:54:12 »
Hallo,

@klafu
So weit waren wir schon.
Nur eine kleine Frage.
Wie kommen ich somit an die Namen der berechtigten Personen ran?

Es bleibt doch nur das schon erwaehnt Mittel mit LS und der rekrusiven Funktion


Andreas

BigWim

  • Gast
Re: wie kann ich alle User einer bestimmtem Rolle ermitteln ?
« Antwort #11 am: 23.09.09 - 12:14:37 »
Eine Idee hätte ich noch, wenn in der ACL der Rolle (oder den Rollen) keine Namen zugeordnet sind, sondern Gruppen.

In diesem Fall kannst Du die Gruppen im Adressbuch mit @Dblookup abfragen (oder vielleicht reicht schon ein @NameLookup?).

Markus

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: wie kann ich alle User einer bestimmtem Rolle ermitteln ?
« Antwort #12 am: 23.09.09 - 12:18:56 »
Hallo,

@klafu
So weit waren wir schon.
Nur eine kleine Frage.
Wie kommen ich somit an die Namen der berechtigten Personen ran?

Es bleibt doch nur das schon erwaehnt Mittel mit LS und der rekrusiven Funktion


Andreas

Die ACL Einträge durchgehn, die Rollen prüfen, das Ergebnis in ein Array schreiben und danach je nachdem das Array der entsprechenden Rolle ausgeben  ;D

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: wie kann ich alle User einer bestimmtem Rolle ermitteln ?
« Antwort #13 am: 23.09.09 - 12:19:27 »
Und was ist wenn eine Gruppe eine Liste von Gruppen beinhaltet ???

Wenn ihr wollt kann ich euch einen LS - Codeschnipsel zur Rekursiven Gruppenauflösung bereitstellen.
Ich hab das ganze nämlich schon mal gemacht :)  
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: wie kann ich alle User einer bestimmtem Rolle ermitteln ?
« Antwort #14 am: 23.09.09 - 12:20:07 »
@BigWin

Auch nicht schlecht.
Aber.
Gruppe 1 beinhaltet Gruppe 2 und Gruppe 3.
Gruppe 2 beinhaltet Gruppe 4
Gruppe 3 beinhaltet Gruppe 5 und Gruppe 6

@klafu
Dann habe ich aber immer noch nicht die Namen der Gruppenmitglieder


Andreas

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: wie kann ich alle User einer bestimmtem Rolle ermitteln ?
« Antwort #15 am: 23.09.09 - 12:22:49 »
Ja... das mit den Gruppen ist dann noch so ein Problem...
da muss man dann mit den Gruppennamen das Server Adressbuch durchsuchen.
Dann wirds eben schwierig. Das hab ich noch nie gemacht, aber machbar ists ja bestimmt. :)

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

BigWim

  • Gast
Re: wie kann ich alle User einer bestimmtem Rolle ermitteln ?
« Antwort #16 am: 23.09.09 - 12:34:29 »
@ascabg
Zitat
Auch nicht schlecht.
Danke (*Stolz*), blinder Hahn findet auch mal ein Korn ...

Zitat
Aber.
Gruppe 1 beinhaltet Gruppe 2 und Gruppe 3.
Gruppe 2 beinhaltet Gruppe 4
Gruppe 3 beinhaltet Gruppe 5 und Gruppe 6
Ich will nicht abstreiten, dass es dann aufwendiger wird, aber unsere Gruppen fangen z. B. alle mit einem $ an. So kann ich unterscheiden: Person oder Gruppe. Und dann muss ich über eine Schleife "weiter" auflösen.

Wobei sich das für mich so anhört, als hätte ich in Karin's Fall Einfluß darauf, ob verschachtelt wird oder nicht. Und man muss es ja nicht unbedingt komplizierter machen, als nötig ;)

Markus



Offline Pidray

  • Junior Mitglied
  • **
  • Beiträge: 58
  • 640K ought to be enough for anybody. (Bill Gates)
Re: wie kann ich alle User einer bestimmtem Rolle ermitteln ?
« Antwort #17 am: 23.09.09 - 12:40:43 »
Und was ist wenn eine Gruppe eine Liste von Gruppen beinhaltet ???
soweit ich weiss, gibt es das in unserem Haus nicht, allerdings soll "meine" Datenbank auch in einem anderen Haus Verwendung finden und was die für Gruppen haben, weiss ich nicht.

Wenn ihr wollt kann ich euch einen LS - Codeschnipsel zur Rekursiven Gruppenauflösung bereitstellen.
Ich hab das ganze nämlich schon mal gemacht :)  
:) oh, das wäre super ! Ich wollte das Ganze schon fallen lassen ...
Aber wenn Du es uns zur Verfügung stellst, muss ich weder aufgeben noch das Rad neu erfinden !

Gruß+Dank
Katrin

Lotus Notes 6.0.1

samWare

  • Gast
Re: wie kann ich alle User einer bestimmtem Rolle ermitteln ?
« Antwort #18 am: 23.09.09 - 13:17:18 »
Ich verstehe nicht ganz wo das Problem mit den Gruppen liegen soll?! Das kann man doch alles wunderbar auflösen (anhand des Adressbuches). Mit der richtigen Logik ist auch die Sache mit den verschachtelten Gruppen kein Problem...

@Pidray: keine Angst das was du willst ist durchaus machbar ;) Schau dir einfach wie vorhin schon beschrieben die NotesACL Klasse an, und schau dich im Adressbuch um damit du siehst wo was abgelegt ist. Vllt. wäre das ganz nütlich für dich ohne Fremdcode die Sache erstmal selber zu Probieren :-:

mfg Samuel

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: wie kann ich alle User einer bestimmtem Rolle ermitteln ?
« Antwort #19 am: 23.09.09 - 13:22:09 »
Die Variablen sind Global zu definieren:

Code
'-- Globale Variablen
dim lauf as integer
dim groupview as notesview
dim memberarray() as string, grouparray() as string

'-- Aufruf dann z.B.
mitglieder$ = getAllGroupMembers(server$, filepath$, gruppe$)
 
Function getAllGroupMembers(server As String, filepath As String, group As String) As String
	Dim se As New NotesSession
	Dim namesdb As New notesdatabase( server,filepath)
	Dim member$
	
	Set groupview = namesdb.Getview("Groups")	
	Redim memberarray(0)
	Redim grouparray(0)
	lauf = 0
	member = ""
	Forall i In checkGroups(group,0)
		If i <> "" Then member = member + ";" + i
	End Forall
	If Len(member)>0 Then member = Right(member,Len(member)-1)	
	getAllGroupMembers = member
End Function
 
Function CheckGroups(groups As String, i As Integer) As Variant
	Dim doc1 As NotesDocument
	Dim flag%,membertest
	Dim memberdoc As NotesDocument
	
	Set memberdoc = groupview.GetDocumentbyKey(groups,True)
	If Not (memberdoc Is Nothing) Then
		Forall member In memberdoc.members
			Redim Preserve memberarray(i)
			member = CheckName(member)
			Set doc1 = groupview.GetDocumentbyKey(member,True)
			If Not (doc1 Is Nothing) Then
				Redim Preserve grouparray(lauf)
				grouparray(lauf) = member
				lauf = lauf +1
				membertest = CheckGroups(member,i)
			Else
				flag = 0
				Forall v In memberarray
					If v = member Then flag = 1
				End Forall
				If flag = 0 Then memberarray(i) = member
			End If		
			i = i+1
		End Forall
	End If
	checkgroups = memberarray	
End Function
 
Function CheckName (member As String) As String
	Dim username As NotesName
	If Left(member,2) = "CN" Then
		Set username = New NotesName(member)
		member = username.Common
	End If
	checkname = member
End Function
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz