Skip to main content
Skip table of contents

TBeCbPermissionController

TBeCbPermissionController

Kapselung von Funktionen für die Verwendung von Benutzer-Rollen (RABAC) im Codeblock.

Eigenschaften

Eigenschaften

Beschreibung

CbLogFileName:C

Name/Pfad der Log-Datei, in der beispielsweise der Verlauf der Migration protokolliert wird.

CbMigration:O

Unterobjekt, vom Typ TBeCbPermissionMigrationSubController, welches alle Migrations-Methoden kapselt.
ACHTUNG: Dieses Objekt wird ab einer bestimmten Master-Version wieder entfernt werden, da es nur zur Migration eines 6.0-Datenbestandes dient.

Funktionen und Methoden

Beschreibung

CbIsActive():L

Prüft, ob RABAC aktiv ist.

CbUserHasRole():L

Prüft, ob ein bestimmter Benutzer einer bestimmten Rolle zugeordnet ist.

Parameter

Beschreibung

cRoleKey:C

Schlüssel der zu prüfenden Rolle

nUserNo:N

Nummer des Users, für den die Prüfung durchgeführt werden soll

nDepartment:N

Abteilung, für die die Zuordnung geprüft werden soll

nLocation:N

Standort, für den die Zuordnung geprüft werden soll

CbGetUserRoles():A

Liefert ein Array mit den Schlüsseln aller aktiven Rollen

Parameter

Beschreibung

nUserNo:N

Nummer des Users

nDepartment:N

Abteilung

nLocation:N

Standort

CbAldUserHasRole():A

Prüft, ob ein bestimmter Alternativer-Login-Benutzer einer
bestimmten Rolle zugeordnet ist.

Parameter

Beschreibung

cRoleKey:C

Schlüssel der zu prüfenden Rolle

nAldUserID:N

ID des Alternativen Logins, für den die Prüfung durchgeführt werden soll

nDepartment:N

Abteilung, für die die Zuordnung geprüft werden soll

nLocation:N

Standort, für den die Zuordnung geprüft werden soll

CbGetAldUserRoles():A

Liefert ein Array mit den Schlüsseln aller aktiven Rollen

Parameter

Beschreibung

nAldUserID:N

ID des Alternativen Logins

nDepartment:N

Abteilung

nLocation:N

Standort

CbCanReadTable():L

Prüft, ob Datensätze in der Tabelle gelesen werden können

Parameter

Beschreibung

nWorkArea:N

Workarea der Tabelle

nUserNo:N

Nummer des Users

nDepartment:N

Abteilung

nLocation:N

Standort

CbCanEditTable():L

Prüft, ob Datensätze in der Tabelle geändert werden können

Parameter

Beschreibung

nWorkArea:N

Workarea der Tabelle

nUserNo:N

Nummer des Users

nDepartment:N

Abteilung

nLocation:N

Standort

CbCanInsertIntoTable():L

Prüft, ob Datensätze in die Tabelle eingefügt werden können

Parameter

Beschreibung

nWorkArea:N

Workarea der Tabelle

nUserNo:N

Nummer des Users

nDepartment:N

Abteilung

nLocation:N

Standort

CbCanDeleteFromTable():L

Prüft, ob Datensätze aus der Tabelle gelöscht werden können

Parameter

Beschreibung

nWorkArea:N

Workarea der Tabelle

nUserNo:N

Nummer des Users

nDepartment:N

Abteilung

nLocation:N

Standort

CbCanReadField():L

Prüft, ob das Feld in der Tabelle gelesen werden kann

Parameter

Beschreibung

nWorkArea:N

Workarea der Tabelle

cFieldName:C

Name des Feldes

nUserNo:N

Nummer des Users

nDepartment:N

Abteilung

nLocation:N

Standort

CbCanEditField():L

Prüft, ob das Feld in der Tabelle geändert werden kann

Parameter

Beschreibung

nWorkArea:N

Workarea der Tabelle

cFieldName:C

Name des Feldes

nUserNo:N

Nummer des Users

nDepartment:N

Abteilung

nLocation:N

Standort

CbUserInGroup():L

Prüft ob einem Benutzer eine Gruppen-Rolle zugewiesen ist

Parameter

Beschreibung

aRoleKey:C

Schlüssel der zu prüfenden Rolle

nUserNo:N

Nummer des Users

nDepartment:N

Abteilung

nLocation:N

Standort

CbAldUserInGroup():L

Prüft ob einem Alternativen-Login eine Gruppen-Rolle zugewiesen ist

Parameter

Beschreibung

aRoleKey:C

Schlüssel der zu prüfenden Rolle

nAldUserID:N

ID des Alternativen Logins, für den die Prüfung durchgeführt werden soll

nDepartment:N

Abteilung

nLocation:N

Standort

CbIsDeniedFormAction():L

Prüft, ob die Formularaktion eingeblendet wird

Parameter

Beschreibung

aFormClassName:C

Name der Klasse des prüfenden Formulars

aFormActionName:C

Name der prüfenden Aktion des Formulars

aUserNo:N

Nummer des Users (-1 bedeutet aktuellen Benutzer)

aDepartment:N

Abteilung (-1 bedeutet aktuelle Abteilung)

aLocation:N

Standort (-1 bedeutet aktueller Standort)

CbIsDeniedModule():L

Prüft, ob der Modul eingeblendet wird

Parameter

Beschreibung

aModuleName:C

Name des prüfenden Modules

aUserNo:N

Nummer des Users (-1 bedeutet aktuellen Benutzer)

aDepartment:N

Abteilung (-1 bedeutet aktuelle Abteilung)

aLocation:N

Standort (-1 bedeutet aktueller Standort)

CbIsGrantedFormAction():L

Prüft, ob die Formularaktion durchgeführt werden könnten (ohne Passwort)

Parameter

Beschreibung

aFormClassName:C

Name der Klasse des prüfenden Formulars

aFormCaption:C

Bezeichnung des prüfenden Formulars (Default: leer)

aFormActionName:C

Name der prüfenden Aktion des Formulars

aFormActionCaption:C

Bezeichnung der prüfenden Aktion des Formulars (Default: leer)

aUserNo:N

Nummer des Users (-1 bedeutet aktuellen Benutzer)

aDepartment:N

Abteilung (-1 bedeutet aktuelle Abteilung)

aLocation:N

Standort (-1 bedeutet aktueller Standort)

CbIsGrantedFormActionPassword():L

Prüft, ob die Formularaktion durchgeführt werden könnten (mit Passwort)

Parameter

Beschreibung

aFormClassName:C

Name der Klasse des prüfenden Formulars

aFormActionName:C

Name der prüfenden Aktion des Formulars

aPassword:C

Passwort, die entsperrt prüfende Aktion

aUserNo:N

Nummer des Users (-1 bedeutet aktuellen Benutzer)

aDepartment:N

Abteilung (-1 bedeutet aktuelle Abteilung)

aLocation:N

Standort (-1 bedeutet aktueller Standort)

CbIsGrantedGlobal():L

Prüft, ob die globale Aktion durchgeführt werden könnte

Parameter

Beschreibung

aActionName:C

Name der prüfenden globalen Aktion

aPassword:C

Passwort, die entsperrt prüfende Aktion

aConsiderPassword:L

Übergebenes Passwort wird benutzt oder ignoriert.
Wenn übergebenes Passwort ignoriert werden sollte und ein Passwort benötigt wäre, wird ein Passwort-Eingabe-Dialog gezeigt.

aUserNo:N

Nummer des Users (-1 bedeutet aktuellen Benutzer)

aDepartment:N

Abteilung (-1 bedeutet aktuelle Abteilung)

aLocation:N

Standort (-1 bedeutet aktueller Standort)

CbIsGrantedGlobalCompany():L

Prüft, ob der Mandant zugegriffen werden könnte

Parameter

Beschreibung

aCompany:N

Name des prüfenden Mandanten

aPassword:C

Passwort, die entsperrt prüfende Aktion

aConsiderPassword:L

Übergebenes Passwort wird benutzt oder ignoriert.
Wenn übergebenes Passwort ignoriert werden sollte und ein Passwort benötigt wäre, wird ein Passwort-Eingabe-Dialog gezeigt.

aUserNo:N

Nummer des Users (-1 bedeutet aktuellen Benutzer)

aDepartment:N

Abteilung (-1 bedeutet aktuelle Abteilung)

aLocation:N

Standort (-1 bedeutet aktueller Standort)

CbIsGrantedGlobalDepartment():L

Prüft, ob die Abteilung zugegriffen werden könnte

Parameter

Beschreibung

aGrantedDepartment:N

Name der prüfenden Abteilung

aPassword:C

Passwort, die entsperrt prüfende Aktion

aConsiderPassword:L

Übergebenes Passwort wird benutzt oder ignoriert.
Wenn übergebenes Passwort ignoriert werden sollte und ein Passwort benötigt wäre, wird ein Passwort-Eingabe-Dialog gezeigt.

aUserNo:N

Nummer des Users (-1 bedeutet aktuellen Benutzer)

aDepartment:N

Abteilung (-1 bedeutet aktuelle Abteilung)

aLocation:N

Standort (-1 bedeutet aktueller Standort)

CbIsGrantedGlobalLocation():L

Prüft, ob der Standort zugegriffen werden könnte

Parameter

Beschreibung

aGrantedLocation:N

Name des prüfenden Standort

aPassword:C

Passwort, die entsperrt prüfende Aktion

aConsiderPassword:L

Übergebenes Passwort wird benutzt oder ignoriert.
Wenn übergebenes Passwort ignoriert werden sollte und ein Passwort benötigt wäre, wird ein Passwort-Eingabe-Dialog gezeigt.

aUserNo:N

Nummer des Users (-1 bedeutet aktuellen Benutzer)

aDepartment:N

Abteilung (-1 bedeutet aktuelle Abteilung)

aLocation:N

Standort (-1 bedeutet aktueller Standort)

CbIsGrantedModule():L

Prüft, ob das Modul zugegriffen werden könnte

Parameter

Beschreibung

aModuleName:C

Name des prüfenden Moduls

aPassword:C

Passwort, die entsperrt prüfende Aktion

aConsiderPassword:L

Übergebenes Passwort wird benutzt oder ignoriert.
Wenn übergebenes Passwort ignoriert werden sollte und ein Passwort benötigt wäre, wird ein Passwort-Eingabe-Dialog gezeigt.

aUserNo:N

Nummer des Users (-1 bedeutet aktuellen Benutzer)

aDepartment:N

Abteilung (-1 bedeutet aktuelle Abteilung)

aLocation:N

Standort (-1 bedeutet aktueller Standort)

CbCreatePermissionsOverviewMemTable():O

Erzeugt eine Memtable zur Verndung mit CbCalcUserPermissions() und CbCalcRolePermissions()
Wichtig: die Memtable gehört dem Controller und wird zerstört wenn dieser zerstört wird

CbCalcUserPermissions()

Ermittelt die “Effektiven Berechtigungen” eines Users (analog zur Benutzerverwaltung)

Parameter

Beschreibung

aUserNo:N

Nummer des Users (-1 bedeutet aktuellen Benutzer)

aDepartment:N

Abteilung (-1 bedeutet aktuelle Abteilung)

aLocation:N

Standort (-1 bedeutet aktueller Standort)

aMemTable:O

Memtable die mit CbCreatePermissionsOverviewMemTable() erzeugt wurde (Memtable wird durch den Aufruf geleert!)

CbCalcRolePermissions()

Ermittelt die “Effektiven Berechtigungen” einer Roller (analog zur Rollenverwaltung)

Parameter

Beschreibung

aRoleGUID:C

GUID Schlüssel der Rolle

aMemTable:O

Memtable die mit CbCreatePermissionsOverviewMemTable() erzeugt wurde (Memtable wird durch den Aufruf geleert!)

Beispiel - Prüfungen von Rechten

CODE
|
  oPC, nUser
|

nUser := 67, // mbeUser,

oPC := CreateObject('TBeCbPermissionController'),
startseq
  Writeln('Module'),
  WriteLn(' UPDATE: ' + iif(oPC.CbIsDeniedModule('/UPDATE', nUser, MABTEILUNG, MSTANDORT), 'Denied', 'not Denied') +
          ' / FIBU: ' + iif(oPC.CbIsDeniedModule('/FIBU', nUser, MABTEILUNG, MSTANDORT), 'Denied', 'not Denied')),
  Writeln(' UPDATE: ' + iif(oPC.CbIsGrantedModule('/UPDATE', '**', false, nUser, MABTEILUNG, MSTANDORT), 'Allowed', 'Denied') +
          ' + pwd: ' + iif(oPC.CbIsGrantedModule('/UPDATE', '**', true, nUser, MABTEILUNG, MSTANDORT), 'Allowed', 'Denied') +
          ' + falsche pwd: ' + iif(oPC.CbIsGrantedModule('/UPDATE', '***', true, nUser, MABTEILUNG, MSTANDORT), 'Allowed', 'Denied') +
          ' / FIBU: ' + iif(oPC.CbIsGrantedModule('/FIBU', '**', false, nUser, MABTEILUNG, MSTANDORT), 'Allowed', 'Denied') +
          ' + pwd: ' + iif(oPC.CbIsGrantedModule('/FIBU', '**', true, nUser, MABTEILUNG, MSTANDORT), 'Allowed', 'Denied')),

  Writeln('TFormEditArticle.A_New'),
  Writeln(' ' + iif(oPC.CbIsDeniedFormAction('TFormEditArticle', 'A_New', nUser, MABTEILUNG, MSTANDORT), 'Denied', 'Allowed') +
          ' / ' + iif(oPC.CbIsGrantedFormAction('TFormEditArticle', '', 'A_New', '', nUser, MABTEILUNG, MSTANDORT), 'Allowed', 'Denied') +
          ' + pwd: ' + iif(oPC.CbIsGrantedFormActionPassword('TFormEditArticle', 'A_New', '**', nUser, MABTEILUNG, MSTANDORT), 'Allowed', 'Denied')),

  Writeln('AllActions'),
  Writeln(' ' + iif(oPC.CbIsGrantedGlobal('AllActions', '**', false, nUser, MABTEILUNG, MSTANDORT), 'Allowed', 'Denied') +
          ' + pwd: ' + iif(oPC.CbIsGrantedGlobal('AllActions', '**', true, nUser, MABTEILUNG, MSTANDORT), 'Allowed', 'Denied')),

  Writeln('Mandat 000'),
  Writeln(' ' + iif(oPC.CbIsGrantedGlobalCompany(000, '**', false, nUser, MABTEILUNG, MSTANDORT), 'Allowed', 'Denied') +
          ' + pwd: ' + iif(oPC.CbIsGrantedGlobalCompany(000, '**', true, nUser, MABTEILUNG, MSTANDORT), 'Allowed', 'Denied')),

  Writeln('Abteilung ' + Str(mAbteilung)),
  Writeln(' ' + iif(oPC.CbIsGrantedGlobalDepartment(mAbteilung, '**', false, nUser, MABTEILUNG, MSTANDORT), 'Allowed', 'Denied') +
          ' + pwd: ' + iif(oPC.CbIsGrantedGlobalDepartment(mAbteilung, '**', true, nUser, MABTEILUNG, MSTANDORT), 'Allowed', 'Denied')),

  Writeln('Standort ' + Str(mStandort)),
  Writeln(' ' + iif(oPC.CbIsGrantedGlobalLocation(mStandort, '**', false, nUser, MABTEILUNG, MSTANDORT), 'Allowed', 'Denied') +
          ' + pwd: ' + iif(oPC.CbIsGrantedGlobalLocation(mStandort, '**', true, nUser, MABTEILUNG, MSTANDORT), 'Allowed', 'Denied')),
always
   DestroyObject(oPC),
stopseq,

Beispiel - Migration von Berechtigungen

CODE
|
  cLogFileName, oPermissionController,
  bReset, bPreprocess, bCleanup,
  bMigrate, bMigrateUsers, bMigrateMasks, bMigratePermissions
|

bReset              := True,
bPreprocess         := True,
bCleanup            := False,
bMigrate            := True,
bMigrateUsers       := True,
bMigrateMasks       := True,
bMigratePermissions := True,

//******************************************************************************
// Log-Funktion
//******************************************************************************
function Log(cMessage)
   ProcessMsg(),
   WriteLn(cMessage),
   RABAC_Log(cLogFileName, cMessage),
   ProcessMsg(),
end,

cLogFileName          := 'C:\be_debug\rabac_migration.log',
oPermissionController := CreateObject('TBeCbPermissionController'),
startseq
   oPermissionController.CbLogFileName := cLogFileName,
   // --------------------------------------------------------------------------
   if bReset then
      Log('Resetting RABAC Data ...'),
      oPermissionController.CbMigration.CbReset(),
   endif,
   // --------------------------------------------------------------------------
   if bPreprocess then
      if oPermissionController.CbMigration.CbPreprocessDabMSK() then
         Log('Preprocess DabMSK: OK'),
      else
         Log('Preprocess DabMSK: FAILED'),
         bMigrate := False,
         if bCleanup then
            oPermissionController.CbMigration.CbCleanupDabMSK(),
         endif,
      endif,
      if oPermissionController.CbMigration.CbPreprocessDabPWD() then
         Log('Preprocess DabPWD: OK'),
      else
         Log('Preprocess DabPWD: FAILED'),
         bMigrate := False,
         if bCleanup then
            oPermissionController.CbMigration.CbCleanupDabPWD(),
         endif,
      endif,
   endif,
   // --------------------------------------------------------------------------
   if bMigrate and
      (bMigrateUsers or bMigrateMasks or bMigratePermissions) then
      Log('Running Migration ...'),
      if bMigrateUsers then
         Log('Migration: Users'),
         oPermissionController.CbMigration.CbMigrateUsers(),
      endif,
      if bMigrateMasks then
         Log('Migration: Masks'),
         oPermissionController.CbMigration.CbMigrateMasks(),
      endif,
      if bMigratePermissions then
         Log('Migration: Permissions'),
         oPermissionController.CbMigration.CbMigratePermissions(),
      endif,
      Log('Migration: DONE'),
      Log('Running CleanupPermissionRoles'),
      oPermissionController.CbMigration.CbCleanupPermissionRoles(),
      Log('CleanupPermissionRoles: DONE'),
 else
      Log('Skipping Migration ...'),
   endif,
always
   DestroyObject(oPermissionController),
stopseq,

Weitere Verknüpfungen

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.