[gelöst] Benutzerrechte im C/AL prüfen.

20. September 2006 07:10

Guten Morgen,

wir wollen eine Routine in der Codeunit 1 einbinden, welche Daten in Tabellen modifiziert, für die der angemeldete Benutzer eventuell keine Berechtigung hat. Diese Routine wird nur einmal pro Tag aufgerufen. Allerding wollen wir als Super-User nicht jeden morgen erst alle Mandanten öffnen müssen, so dass niemand anderes diese Routine mehr auslöst.

Gibt es eine Möglichkeit, zu prüfen, ob die Berechtigung vorhanden ist, so dass sie im Falle fehlender Rechte nicht aufgerufen wird?

Gruß,
Martin
Zuletzt geändert von mstromberg am 21. September 2006 09:50, insgesamt 1-mal geändert.

20. September 2006 07:24

Hallo,
in der Navi 2.6 gibt es die Tabelle Nr. "Mitglied von", über diese kannst du die Rechte eines Users ausmachen.

Ich habe auch eine Prüffunktion in der CU 1, diese Prüft, ob der User SUPER Rechte hat. Evtl. hilft es dir weiter.
Code:
  IF NOT Mitgliedvon.GET(USERID,'SUPER','') OR Mitgliedvon.GET(USERID,'SUPER',COMPANYNAME)  THEN BEGIN


Ich bin mir nicht sicher, es gibt in den z.B.Reports in den Properties die Permissions, evtl kommst du damit weiter.
Du kannst damit dem User eine Form oder Report bereitstellen, die für dieses Zwecke die entsprechenden Rechte hat.
Gruß Mikka

20. September 2006 09:17

Du kannst auch deiner CodeUnit mit Permissions die Rechte geben und bei der enstprechenden UserRolle die Berechtigung auf diese Tabellen auf indirekt stellen.
Dann kann der Benutzer Tabellen mit dieser Codeunit ändern, obwohl er eigentlich keine Berechtigung hat.

Gruss

20. September 2006 20:11

Alternativ kannst du auch mit IF MyRecord.WRITEPERMISSION THEN ... prüfen, ob der jeweilige Benutzer die notwendige Schreibberechtigung besitzt.
So ist es egal, aus welcher Rolle er diese Rechte erlangt hat.

(Ebenso gibt es auch die Funktion OK := MyRecord.READPERMISSION, um zu prüfen, ob er Lesezugriff hat.)

21. September 2006 09:48

Wunderbar!

Vielen Dank Euch!

Ich habe jetzt die dritte Alternative dafür verwendet.

Gruß,
Martin