Seite 1 von 1

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

Verfasst: 20. September 2006 07:10
von mstromberg
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

Verfasst: 20. September 2006 07:24
von mikka
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

Verfasst: 20. September 2006 09:17
von martinst
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

Verfasst: 20. September 2006 20:11
von Timo Lässer
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.)

Verfasst: 21. September 2006 09:48
von mstromberg
Wunderbar!

Vielen Dank Euch!

Ich habe jetzt die dritte Alternative dafür verwendet.

Gruß,
Martin