Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: robertpp am 24.10.03 - 12:42:50

Titel: UserRoles per Script ändern
Beitrag von: robertpp am 24.10.03 - 12:42:50
Ich würde gerne per Script die Userroles jemanden zuordnen und wieder entfernen um den zugriff zu etwas geben!!
Es wäre auch anders über Lese- und Authorenfelder realisierbar aber ich dachte es müsste ja auch über die acl gehen.

Ich wollte mir dann einen button machen dort klickt man drauf dann hat man die rolle und dann wir etwas ausgeführt und dann entfernt man die rolle wieder.

Geht das?
Titel: Re:UserRoles per Script ändern
Beitrag von: koehlerbv am 24.10.03 - 12:46:32
Das wird nix werden: Der User wird kaum Änderungen der ACL vornehmen dürfen, und wirksam wird das auch erst nach erneutem Öffnen der DB etc. pp.
Ein anderer Weg wäre über den Start eines serverbasierenden Agent möglich, der mit einer ID signiert wurde, die die Rolle in der DB hat.

Was willst Du denn konkret machen ?

Bernhard
Titel: Re:UserRoles per Script ändern
Beitrag von: robertpp am 24.10.03 - 12:59:22
Es wird auch nicht vom user ausgeführt sondern nur von admins. Ich wollte mir einfach das lästige "rechte Maustaste /DB / access control... user auswählen role dazugeben" und das ganze wieder in die andere richtung nach dem testen ersparren.
Sonst nix.....
Titel: Re:UserRoles per Script ändern
Beitrag von: Semeaphoros am 24.10.03 - 13:04:04
Na, obwohl Bernhard auch hier recht hat, Dein Beispiel ist da ne Ausnahme. Zur Aenderung der ACL braucht es Manager-Rechte. Machen kannst Du das in Script, schau Dir mal die NotesACL-Klasse an.
Titel: Re:UserRoles per Script ändern
Beitrag von: robertpp am 27.10.03 - 17:40:48
@Semeaphoros:
Das hab ich jetzt auch gemacht nur wie aktualisiere ich jetzt die ACL?

   Dim s As New NotesSession   
   Dim ws As New NotesUIWorkspace
   Dim db As NotesDatabase
   Set db = s.CurrentDatabase
   Dim acl As NotesACL
   Dim entry As NotesACLEntry
   Set acl = db.ACL
   Set entry = acl.GetEntry( "Robert Prinz/MISEBG" )
   Call entry.EnableRole( "[noadmin]" )
   Call acl.Save

Geht nur in dem ich die db schließe und wieder öffne und jetzt sind wir bei dem 2ten posting: wie schließe ich eine db und öffne sie wieder?
http://www.atnotes.de/index.php?board=7;action=display;threadid=10825
Titel: Re:UserRoles per Script ändern
Beitrag von: Semeaphoros am 27.10.03 - 17:50:44
Verstehe Deine "Verwirrung" ist hier aber tatsächlich nicht ganz so tragisch wie beim UIView. Das View-Object im UIWorkspace ist eine Systemvariable, da gibts schon mal "abweichendes" Verhalten. Deine DB-Variable ist aber von Dir instanziiert und lässt sich auch wieder dereferenzieren:

DELETE DB

Damit wird die DB auch geschlossen.

A-bär, das passiert nur, wenn sämtliche Referenzen zur Datenbank dereferenziert werden, wenn also die Datenbank irgendwoanders im Client noch offen ist, geht sie nicht wirklich zu. Dass das erst greift, sobald die DB geschlossen ist, liegt daran, dass die ACL vom Server gecached wird, sprich, es dauert halt eine Weile, bis er die Aenderung nachvollzieht.
Titel: Re:UserRoles per Script ändern
Beitrag von: ata am 27.10.03 - 21:15:23
... ich würde das mit unterschiedlichen Test-User-ID's lösen. Dazu erstelle ich mir jeweils eine Arbeitsumgebung. Beim Wechseln der Arbeitsumgebung wechselt auch die User-ID. Jede UserID hat andere Rollen, die ich testen möchte...

... damit bin ich am realistischsten an der Praxis dran...

ata
Titel: Re:UserRoles per Script ändern
Beitrag von: Semeaphoros am 27.10.03 - 21:28:53
Guter Tip, insbesondere da Robert ja das Script einem Admin zur Verfügung stellen will, der die Rollen dann für einen User ändert, und damit wechselt dann tatsächlich der User. Damit dürfte das Schliessen der DB auch nicht mehr wirklich ein Problem sein.