Zugriffseinschränkung über Rollendefinition

13. April 2006 14:11

Hallo, ich möchte über die Rollendefinition die Zugriffsrechte auf bestimmte Berichte bzw. Formulare beeinflussen.

Zur Info: Wir verwenden in diesem Fall Nav Version 3.70a mit der nativen Datenbank.

Ich habe schon verschiedene Einstellungen ausprobiert. Jedoch hat bisher nur die Einschränkung der Leserechte auf die zugrunde liegenden Tabellendaten Wirkung gezeigt. Wenn ich versuche einen Bericht oder ein Formular mit einem Lese- bzw. Ausführungsverbot zu belegen, bringt dies keinen Erfolg.

Also es funktioniert schon mit der Einschränkung des Zugriffs auf die zugrunde liegenden Tabellen, jedoch wird z. B. bei einem Bericht die Request-Form kurz aufgerufen, und dann erst nachgesehen ob der Benutzer Leserechte für die Tabellen hat. Das sieht irgendwie unschön aus.

Warum zeigt die Restriktion des Berichtes oder des Formulars keine Wirkung? Hat jemand ähnliche Erfahrungen?

13. April 2006 15:10

Hi,

mein Tip:
Wenn alle User jeden Bericht/jede Form sehen können haben sie in irgendeiner Rolle das Recht auf den Report/die Form "0", was alle Berichte/Forms bedeutet. Such mal, in welcher Rolle die Rechte auf Report/Form 0 sind. (Müsste die Rolle "Alle" sein).

An der Stelle müsstest du imho ansetzen und nicht pauschal jedem das Recht geben, sondern selektiv, das ist dann aber n Haufen Arbeit, die rechte auf Reports/Forms einzeln zu vergeben :-/

Gruss, Otschko

13. April 2006 15:17

Danke für den Tipp. Ich denk, die Arbeit spare ich mir bei ca. 4000 Usern :-(

13. April 2006 15:22

Hi,

wie jetzt? 4000..... :shock:

Nunja, du musst das ja nur da beschränken, wo es beschränkt werden soll.
Oder die Rechte in Rollen gruppieren...

Alternativ halt für die Objekte, die "geschützt" werden sollen in einem OpenTrigger eine bestimmte Rolle abfragen.
Ich hab mir da mal eine Codeunit geschrieben, die eine Rollen-ID übergeben bekommt, dort schaut, ob der aktuelle User die hat und je nachdem TRUE/FALSE zurückgibt...

Bsp:
IF NOT(C_CheckRole('Rolle')) THEN
CurrForm.CLOSE;

Oder sowas in der Art.

Gruss, Otschko

13. April 2006 15:36

Das mit den 4.000 Usern stimmt schon, nur sind das nicht alle named user, sondern zum Großteil concurrent user, die aber auch gar nicht in diesen Bereich kommen, den ich restriktieren möchte. How ever. Die Rechte habe ich ja in einer Rolle gruppiert. Nur das halt zumindest bei einer nativen Datenbank die Restriktion auf Berichten und Formularen nichts gebracht. Ich musst dann mit den Tabellendaten arbeiten. Das funktioniert ja, aber trotzdem wird zuerst die Requestform aufgerufen.

Wenn man Deinen Code in den OnPreDataItem schiebt, müsste der doch noch vor dem Aufruf der RequestForm durchlaufen werden, oder?

13. April 2006 16:39

Hi,

mgerhartz hat geschrieben:Wenn man Deinen Code in den OnPreDataItem schiebt, müsste der doch noch vor dem Aufruf der RequestForm durchlaufen werden, oder?


Nein, das ist falsch. Der müsste irgendwie im INIT oder OPEN Trigger aufgerufen werden....
OnPreData durchläuft er erst nachdem der Report gestartet wurde und bevor er das DataItem durchläuft...

Gruss, Otschko