Domino 9 und frühere Versionen > ND8: Entwicklung
Leserfeld und Rollenberechtigung
Sommersprosse:
Hallo Forumsgemeinde,
folgendes Problem:
Ich habe eine Datenbank erstellt, in der Zeichnungsdaten und Dokumente zwischen verschiedenen Standorten ausgetauscht werden soll. In den Dokumenten soll in einem Leserfeld vom "Ersteller" des Dokumentes definiert werden, wer dieses Dokument lesen darf. Hierfür habe ich ein Leserfeld mit folgenden Eigenschaften erstellt:
csaccuessuser: Vorgabewert @Username;Eingabeumsetzung: @UpperCase(@Name([Abbreviate];csaccessuser)); Eigenschaften Typ:Leser, bearbeitbar, Mehrfachwerte zulassen. Auswahl aus dem Adressbuch.
Um den Admin nicht auszusperren, gibt es ein zweites Leserfeld:
ReadAll Typ: Leser; Berechnet:@If(@Elements(csaccessuser) != 0; "[Admin]"; "");Mehrfachwerte zulassen
Die Rolle [Admin] ist in der Datenbank vorhanden.
Dargestellt werden soll das in der Ansicht Products:
1. Spalte Customer
2. Spalte Product
3. Spalte Subject
Die ersten beiden Spalten sind kategorisiert, Ansichtsauswahlkriterium:
SELECT Form = "fmprod" & @UpperCase(@Name([Abbreviate];@UserName)) = (@Name([Abbreviate];csaccessuser))
Eigentlich sollte das ganze mit einem Autorenfeld versehen werden, um auch noch per Eingabe Schreibrechte auf die einzelnen Dokumente zu verteilen.
Um meinen Fehler einzugrenzen, habe ich meinen "Author" in ein normales Namenfeld umgewandelt, um einen Nachweis zu haben, wer das Dokument erstellt hat.
Jetzt passiert folgendes:
Mein Testuser (das ganze läuft in einer VM) hat Autorrechte in der ACL.
Ich erstelle ein Dokument mit diesem User, Fülle das Feld csaccessuser über die Adressauswahl, speicher ab, aber ich sehe in meiner Ansicht aber nur die Spalten Customer und Product, das eigentliche Dokument sehe ich nicht.
Gebe ich dem User jetzt aber die Rolle "Admin", dann sehe ich die Dokumente in denen er als Leser eingetragen ist.
Lt allem was ich jetzt die letzten Tage gelesen habe, werden doch die Leserfelder zusammen gerechnet:
http://atnotes.de/index.php/topic,51215.0.html
Hab ich noch einen Denkfehler drin oder passt meine Ansichtsauswahl nicht?
Sollte die DB eigentlich schon lange fertig haben, aber das kostet mich hier grad den letzten Nerv >:(
Jemand ne Idee? Hoffe mein Problem ist klar verständlich.
koehlerbv:
Als allererstes solltest Du mal das Abbreviate rausschmeissen - das hat da nichts zu suchen.
Bernhard
klaussal:
--- Zitat ---Um den Admin nicht auszusperren, gibt es ein zweites Leserfeld:
ReadAll Typ: Leser; Berechnet:@If(@Elements(csaccessuser) != 0; "[Admin]"; "");Mehrfachwerte zulassen
--- Ende Zitat ---
Dazu reicht ein einfaches Leserfeld mit dem Inhalt "[ReadAll]". Diese Rolle gibst Du dann dem Admin.
--- Zitat ---SELECT Form = "fmprod" & @UpperCase(@Name([Abbreviate];@UserName)) = (@Name([Abbreviate];csaccessuser))
--- Ende Zitat ---
Das ist in meinen Augen so etwas wie eine dynamische Ansicht und macht unter Notes nur Ärger.
Sommersprosse:
--- Zitat von: koehlerbv am 27.07.11 - 11:07:17 ---Als allererstes solltest Du mal das Abbreviate rausschmeissen - das hat da nichts zu suchen.
--- Ende Zitat ---
Ich habe jetzt mal alles was Abbreviate durch Canonicalize ersetzt. Neue Dokumente erstellt, geht. Die Ansicht aktuallisiert sich wenn ich die User anpasse, so wie es sein soll. :D
Hab' auch noch ein Authorenfeld hinzugefügt und neue Dokumete erstellt und befüllt. Perfekt. Mein Testuser kann alle lesen, in denen er entweder im Autorenfeld oder Leserfeld gelistet ist und die bearbeiten, in denen er als Author eingetragen ist.
--- Zitat von: klauss am 27.07.11 - 11:17:34 ---
--- Zitat ---SELECT Form = "fmprod" & @UpperCase(@Name([Abbreviate];@UserName)) = (@Name([Abbreviate];csaccessuser))
--- Ende Zitat ---
Das ist in meinen Augen so etwas wie eine dynamische Ansicht und macht unter Notes nur Ärger.
--- Ende Zitat ---
Gibt es da noch eine andere Möglichkeit? Bin offen für alles. Will nur nicht noch einmal alles komplett umbauen, da ich etwas unter Zeitdruck stehe, aber für zukünftige Projekte...
Driri:
--- Zitat ---SELECT Form = "fmprod" & @UpperCase(@Name([Abbreviate];@UserName)) = (@Name([Abbreviate];csaccessuser))
--- Ende Zitat ---
Den Namensabgleich im Select kannst Du dir eigentlich sparen. Durch die Leserfelder sehen die Anwender doch sowieso nur die Dokumente, die sie sehen dürfen.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln