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   | |
| 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)  | |
Beispiel - Prüfungen von Rechten
|
  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
|
  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,