Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: sammy561 am 15.12.10 - 12:00:58

Titel: Abschnitt nicht anzeigen
Beitrag von: sammy561 am 15.12.10 - 12:00:58
Hallo,

und schon habe ich das nächste Problem.

In meiner Datenbank sollen Kundeninformationen als Info für unsere Führungsebene eingegeben werden, die dann von unserer Führungsebene bewertet werden.

Nun ist es so, dass diese Informationen teilweise so geheim sind, dass nur der Autor des Dokumentes und die Führungsebene diese information sehen darf.

Ich habe es auf folgende Weise versucht:

Die Tabelle zur Eingabe der Infos habe ich in einen zugriffskontollierten Abschnitt gepackt

Nun wollte ich über "Absatz verbergen wenn,..." den Abschnitt ausblenden, sobald der User, der das Dokument öffnet nicht der Autor ist oder nicht die Rolle Vorstand hat.

Ich kann da eingeben was ich will, der Absatz bleibt sichtbar.


Vielleicht hat ja jemand die Lösung parat.

Danke


Gruß


Ansgar
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: Klaas am 15.12.10 - 12:33:00
Was hast du den eingegeben?

So klappt es bei mir:
@If(@IsMember("[VergabeNummern]";@UserRoles)=0;@True;@False)

Grüße aus dem verschneiten Norden

Klaas
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: sammy561 am 15.12.10 - 12:49:25
Hallo Klaas,

Danke für deine Antwort.


die Mitte ist auch verschneit  ;).

Wenn es nur um die Zugriffsteuerung über Rollen ginge klappt das. Allerdings muss ich ja auch diejeniegen "ausperren". die normal Autorrechte auf den Abschnitt haben aber nicht Autor von diesem Dokument sind.

Gruß

Ansgar
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: ascabg am 15.12.10 - 13:27:45
Hallo,

Zugriffskontrollierter Abschnitt.
Ich wuerde es so realisieren.

- verstecktes Feld am Anfang des Dokumentes erstellen (Typ: Namen)
(Feld ist berechnet zur Anzeigeund Mehrfachwerte)

- bei einem neuen Dokument wird nichts in dieses Feld eingetragen

- ein vorhandes Dokument
Ist in einem Feld des betreffenden Abschnittes etwas eingetragen
=> Zugriff berechnen
!@IsMember("[Role]";@UserRoles) | @Name([ABBREVIATE]; @UserName) <> @Name([ABBREVIATE]; "Feld mit Name des Autors")

Den Inhalt dieses Feldes, der ja nun bei jedem oeffnen des Dokumentes neu berechnet wird, dann dazu verwenden, die Zugriff auf den Abschnitt zu steuern.


Andreas

P.S.:
Auch der Sueden ist verschneit.
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: sammy561 am 15.12.10 - 13:39:15
Ja ist den heut schon Weihnachten?  ;D ;D ;D ;D ;D

Das klappt Andreas. Ich bin begeistert und danke Dir.

Du hast mir gerade meinen Abgabetermin gerettet.

Gruß

Ansgar
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: sammy561 am 16.12.10 - 10:16:39
Weihnachten wird doch nochmal verschoben  :-\

Der Abgleich zwische Autor und User klappt prima, aber sobald ich auf die Rolle auch abfrage kann wieder jeder alles sehen.

Ich hab es schon mit 2 versteckten Feldern versucht. In Feld 1 wird abgefragt, ob der User die Rolle hat. Hat er sie nicht soll der Wert 1 in das Feld geschrieben werden, sonst eine 0. In Feld zwei wird abgefragt, ob der User ungleich dem Autor ist. Sind sie gleich eine1 sonst 0. Nur komischerweise ändern sich die Werte in den Feldern nicht.

Irgentwo habe ich einen ganz dicken Denkfehler. Es liegt auch bestimmt auch daran, dass ich seit 4 Jahren keine Anwendung mehr in Notes geschrieben habe.

Ihr könntet einen alten Admin echt glücklich machen, wenn ihr eine Lösung hättet.
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: BigWim am 16.12.10 - 10:41:28
Zitat
Der Abgleich zwische Autor und User klappt prima, aber sobald ich auf die Rolle auch abfrage kann wieder jeder alles sehen.
Das kenn ich. Das wird sicher in Denkfehler in der und/oder Verknüpfung der if-Abfrage sein ;)
Vielleicht kannst Du das ja noch einmal posten ....


Zitat
Weihnachten wird doch nochmal verschoben
Das will ich Dir ja nicht ganz versauen, aber Du weißt doch noch, dass man über die Eigenschaften in jedes "Feld gucken" kann, oder? Ich hoffe, dass diese seniblen Daten per Formel gezogen werden ....

Markus
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: ascabg am 16.12.10 - 10:56:34
Hallo,

Wie erfolgen denn die Abfragen?

Und was steht in den Feldern, die bei der Abfrage herangezogen werden?


Andreas
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: sammy561 am 16.12.10 - 11:30:49
Hallo Markus,

ich weiss, dass man über die Eigenschaften jedes Feld anschauen kann. Aber ausser mir weiss das nur noch der zweite Notesadmin hier im Haus. Und der kann schweigen  ;). Nein, im Ernst das vernachlässige ich jetzt mal. Ich habe versucht, den Zugriff auf einen Abschnitt mit folgender Formel zu begrenzen:

@!IsMember("[Vorstand]";@UserRoles)| @Name([Abbreviate]; @UserName) != @Name([Abbreviate]; "Autor")

(Vorschlag von Andreas, Danke nochmal)

Lass ich den Teil mit der Rolle weg, klappt es prima. wenn ich nicht Autor bin kann ich den Abschnitt auch nicht öffnen. Lass ich den Teil mit der Rolle drin darf jeder alles öffnen.



Titel: Re: Abschnitt nicht anzeigen
Beitrag von: sammy561 am 16.12.10 - 11:35:04
Hallo Andreas,

Ich habs über zwei berechnete Felder versucht:

Feld1: @If(@IsMember("[Vorstand]";@UserRoles)=0;@True;@False)

Feld2: @If(@Name([Abbreviate]; @UserName) != @Name([Abbreviate]; "Autor")=0;@True;@False)

ich hab dann gedacht ich könnte über die Summe der beiden Feldwerte den Zugriff auf den Abschnitt begrenzen. Nur gibt mir Feld1 immer den Wert 1 zurück egal ob ich die Rolle habe oder nicht. Und Feld zwei gibt immer 0 zurück, egal ob ich ein Dokument öffne das ich angelegt habe oder jemand anderes.

Vielleicht habe ich ja auch deinen Vorschlag von gestern einfach falsch umgesetzt. Wie gesagt ich hab 4 Jahre nix in Notes programmiert. Da fängt man fast bei 0 wieder an.

Gruß
Ansgar
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: ascabg am 16.12.10 - 11:58:45
Die Datenbank befindet sich aber schon auf einem Server?

Andreas
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: BigWim am 16.12.10 - 12:03:41
Da @IsMember eh 0 oder 1 zurückgibt, hätte ich im Feld 1 nur das hier geschrieben.

Code
@IsMember("[Vorstand]";@UserRoles)

Und wenn dann noch mal eine Rolle dazukommt, gibt es Probleme. Hier im Forum gab es mal eine nette Anleitung (die ich aber so auf die Schnelle nicht gefunde habe). Auf jeden Fall habe ich mir daraufhin folgendes angewöhnt und bin bestens gefahren:

Feld 1=
Code
@UserRoles *= "[Vorstand]"

Zitat
Nur gibt mir Feld1 immer den Wert 1 zurück egal ob ich die Rolle habe oder nicht
Kenn ich auch. Das kann auch ein Cache-Problem sein. Ich dachte, ich hätte mir die Rolle wegnommen, hatte Sie aber tatsächlich noch. Vielleicht prüfst doch auch noch mal in diese Richtung ...

Markus
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: ascabg am 16.12.10 - 12:12:52
Wen ich an meinen rechten etwas aendere, dann sollte ich mich auch schon einmal neu am Server anmelden (LN-Passwort eingeben).

Zumindest F5 und dann neu anmelden.
Die betreffende Datenbank sollte ebenfalls noch einmal neu geoeffnet werden.


Andreas
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: BigWim am 16.12.10 - 12:21:30
Genau - aber da ich meistens nicht daran denke, vor dem Öffnen der Datenbank noch einmal in die Statusleiste zu klicken (Sicherheit), habe ich immer ein Feld, berechnet zur Anzeige, welches mir die aktuellen Rollen anzeigt ;)

Markus
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: sammy561 am 16.12.10 - 12:51:18
Hallo Andreas,

ich hab Notes komplett geschlossen und mich neu angemeldet. Leider kein positiver Effekt
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: ascabg am 16.12.10 - 13:00:09
Nach nochmaligem Ansehen Deiner beiden Formeln fuer die Felder.

Zitat
@If(@IsMember("[Vorstand]";@UserRoles)=0;@True;@False)
=0 kann getrost entfallen

Zitat
@If(@Name([Abbreviate]; @UserName) != @Name([Abbreviate]; "Autor")=0;@True;@False)
@If(@Name([ABBREVIATE]; @UserName) != @Name([ABBREVIATE]; Autor); @True; False)
sofern Autor ein Feld ist.


Andreas
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: ascabg am 16.12.10 - 14:02:47
Ist mir doch gerade noch eingefallen.

In dem Teil Deiner Abfrage, ist der Name aus dem Feld ungleich dem des aktuellen Benutzers, steht offensichtlich der Name des Autors im Feld "Autor".

Wen Du mit der @-Formel @Name([]; ...) den Namen umwandelst, darf der Name des Feldes, aus dem Du den Wert ausliest nicht in Anfuehrungszeichen stehen.

Richtig waere in dem Fall also
Code
@!IsMember("[Vorstand]";@UserRoles)| @Name([Abbreviate]; @UserName) != @Name([Abbreviate]; Autor)

Andreas
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: sammy561 am 16.12.10 - 14:25:52
Hallo Andreas,

Da hab ich doch wieder was gelernt  ;D. Der Teil klappt jetzt.


Ich danke Dir
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: sammy561 am 16.12.10 - 15:12:47
Allerdings muss ich die Abfrage erst anstupsen.

Ich habe mir ein verstecktes Feld erstellt und ihm den Wert 1 gegeben.
Die Abfrage starte ich mit: Wenn das Feld ungleich 0 dann frag ab. Und siehe es funktioniert.

Wahrscheinlich stehen jetzt allen Notesprofis die Haare zu Berge  ;).

Ich hab dann versucht die Abfrage auf die Rollenzugehörigkeit genauso zu starten aber da klappts nicht.
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: Axel am 16.12.10 - 15:16:35
Allerdings muss ich die Abfrage erst anstupsen.

Ich habe mir ein verstecktes Feld erstellt und ihm den Wert 1 gegeben.
Die Abfrage starte ich mit: Wenn das Feld ungleich 0 dann frag ab. Und siehe es funktioniert.

Wahrscheinlich stehen jetzt allen Notesprofis die Haare zu Berge  ;).

Ich hab dann versucht die Abfrage auf die Rollenzugehörigkeit genauso zu starten aber da klappts nicht.

Ähm, was musst du wo anstupsen?  Ich versteh' grad Bahnhof.

Kannst du das bitte mal ein bisschen genauer erklären.

Axel
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: sammy561 am 16.12.10 - 15:22:21
Sorry Axel,

die Abfrage:

@If(@Name([Abbreviate]; @UserName) != @Name([Abbreviate]; Autor);@True;@False))

lieferte mir immer den Wert 0 egal ob ich Autor war oder nicht.

Ich habe jetzt ein Feld "Start" erstellt und diesem Feld den Wert 1 zugewiesen.

Dann habe ich die Abfrage so verändert:

@If(Start != 0);

@Do(
          @If(@Name([Abbreviate]; @UserName) != @Name([Abbreviate]; Autor);@True;@False))


und es funktioniert.

 
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: sammy561 am 16.12.10 - 15:24:51
Jetzt sollen aber die Mitglieder der Rolle "Vorstand" auch Zugriff auf diesen Abschnitt bekommen.
Also habe ich ein zweites Feld mit folgender Abfrage:

@If(Start := "0");

@Do(
@If(@IsMember("[Vorstand]";@UserRoles);@True;@False))

Hier erhalte ich aber immer den Wert "0" zurück. Egal ob ich die Rolle habe oder nicht
         
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: ascabg am 16.12.10 - 15:44:39
Hallo,

Jetz ich auch nochmal.

Wo liegt die Datenbank? (lokal oder auf einem Server)


Andreas
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: sammy561 am 16.12.10 - 15:46:27
Auf einem Server. Ohne irgentwelche Repliken
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: ascabg am 16.12.10 - 15:55:29
Ok.
Schreibfehler im Namen der abzupruefenden Funktion innerhalb der Formel will ich mal ausschliessen.


Andreas
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: sammy561 am 16.12.10 - 16:09:56
Du glaubst gar nicht, wie oft ich mir schon Buchstaben für Buchstaben durchgelen habe  ;)
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: ascabg am 16.12.10 - 16:14:03
Wo steht eigentlich die Zeile

@If(Start ...)

Hier hast Du @If(Start := "0")
Eine derartige Schreibweise fuerfte nicht funktionieren.

Wenn dann schon @If(Start = "0")


Andreas
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: sammy561 am 16.12.10 - 16:22:19
Sorry,

da steht @If(Start != "0")
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: Axel am 16.12.10 - 16:35:37
Wenn ich das Ganze richtig verstehe, soll der Abschnitt dann verborgen werden, wenn der User Autor des Dokumentes ist oder die Rolle "Vorstand" zugewisen bekommen hat. Richtig?

Dann wurde ich das mal mit dieser Formel versuchen.

!@IsMember("[Vorstand]";@UserRoles) & @Name([ABBREVIATE]; @UserName) != @Name([ABBREVIATE]; "Feld mit Name des Autors")

Axel


Titel: Re: Abschnitt nicht anzeigen
Beitrag von: sammy561 am 16.12.10 - 16:38:25
Hi Axel,

es klappt. Ich danke euch allen für Eure Mühe und vor allem für Eure Geduld.

Ich wünsche einen schönen Abend.


Gruß

Ansgar
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: koehlerbv am 16.12.10 - 17:37:59
Oder die Kurzform:

!("[Vorstand]" : @UserName *= @UserNamesList)

Und es sei nochmals darauf hingewiesen, was Markus schon schrieb: Was Du da mit "geheimen Informationen des Vorstands" treibst, ist security by obscurity" - jedermann kann diese scheinbar unsichtbaren Informationen immer noch mühelos lesen!

Bernhard
Titel: Re: Abschnitt nicht anzeigen
Beitrag von: pram am 20.12.10 - 15:06:06
Hallo
Zitat
Nun ist es so, dass diese Informationen teilweise so geheim sind, dass nur der Autor des Dokumentes und die Führungsebene diese information sehen darf.

damit die Information nicht nach außen "leakt" musst du schon ein wenig mehr Aufwand betreiben.
Prinzipiell kommt jeder der das Dokument lesen darf auch an diese Info heran (einfachster Weg über die Property Box)
Ein möglicher Schutz ist
- den User die Leserechte entziehen (Nachteil: Er sieht überhaupt keine Infos aus dem Doc)
- Die vertrauenswürdige Info in ein Antwortdokument packen und da nur [Vorstand] als Leser eintragen
- Die Information verschlüsseln

Gruß
Roland

Titel: Re: Abschnitt nicht anzeigen
Beitrag von: ata am 04.01.11 - 13:49:43
@Pram (Roland)

... du musst den Usern auch das Recht entziehen eigene Ansichten/Ordner erstellen zu können. Ansonsten sind selbst Inhalte von unsichtbaren Dokumenten zu sehen...

Toni