Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Schnulli am 07.06.04 - 17:34:59
-
Hi!
Mal eine grundsätzliche Frage:
Habe die Möglichkeiten eines "Profildokumentes" entdeckt! 8)
Nun frage ich mich, ob es sinnvoll ist, bzw. irgendwelche größeren Nachteile hat, wenn ich die Zugriffsberechtigungen innerhalb der DB (Dokus, zugriffkontrollierte Abschnitte, etc.) nicht durch Rollen, sondern durch ein Profildokument mit entsprechenden Feldern steuern würde...
Die Datenbank wird später übergeben und dann wäre die Wartung der Zugriffsberechtigungen einfacher, vorallem, da sie nicht zwingend von einem DB-Entwickler erfolgen muss.
Allerdings habe ich so ein Gefühl, daß ich bei dieser Idee irgendetwas übersehen habe ....!!!
-
Du bekommst durch Textlisten mit Namen / Gruppen in Profildokumenten niemals einen wirklichen Schutz - das kannst Du nur durch die ACL selber lösen. Selbst, wenn Du Dir 'nen Wolf programmierst - sicher wird das nie.
Rollen innerhalb der ACL sind die Lösung für solche Fälle.
Bernhard
-
Hm, hab ich mir schon gedacht.
Ich habe gesehen, es gibt die ACL class.
Wäre es möglich, die ACL mit dem Profildokument zu steuern?
(z.B. wenn im Profildokument im Feld "Rolle 1" ein neuer Name hinzugefügt wird, daß sich diese Änderung dann z.B. beim Schließen der DB in die ACL überträgt?)
-
Das wäre in der Tat zu überlegen. Im Kalender Profil der Maildatenbank ist das ja auch so von Lotus gemacht worden, wenn man anderen Zugriff auf Mails bzw. Termine geben will.
Andreas
-
Hab mir das Kalender-Profil mal angesehen.
Der Name wird in die ACL geschrieben, mit den ausgewählten Berechtigungen, Typ etc.
Da ich ja leider in LS nicht so bewandert bin:
Kann man dem ACL-Eintrag noch eine Rolle zuordnen?
-
Jo, guckst Du:
NotesACLEntry.EnableRole
Bernhard
PS: Du solltest aber im Auge behalten, dass man für die Änderung der ACL Managerrechte benötigt ...
-
Genau, und wie fragt man ab, ob der User Managerrecht hat:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim level As Integer
Set db = session.CurrentDatabase
level = db.CurrentAccessLevel
if level = 6 then '6 = ACLLEVEL_MANAGER
'Manager
end if
-
Danke für die Tipps!
Werde es ausprobieren. Melde mich dann noch mal.
ciao