Skip to main content
Skip table of contents

TBeCbPermissionController

TBeCbPermissionController

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

Eigenschaften

EigenschaftenBeschreibung
CbLogFileName:CName/Pfad der Log-Datei, in der beispielsweise der Verlauf der Migration protokolliert wird.
CbMigration:OUnterobjekt, 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 MethodenBeschreibung
CbIsActive():L

Prüft, ob RABAC aktiv ist.

CbUserHasRole():L

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

ParameterBeschreibung

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():ALiefert ein Array mit den Schlüsseln aller aktiven Rollen
ParameterBeschreibung

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.

ParameterBeschreibung

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

ParameterBeschreibung

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

ParameterBeschreibung

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

ParameterBeschreibung

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

ParameterBeschreibung

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

ParameterBeschreibung

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

ParameterBeschreibung

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

ParameterBeschreibung

nWorkArea:N

Workarea der Tabelle

cFieldName:C

Name des Feldes

nUserNo:N

Nummer des Users

nDepartment:N

Abteilung

nLocation:N

Standort

CbUserInGroup():LPrüft ob einem Benutzer eine Gruppen-Rolle zugewiesen ist
ParameterBeschreibung
aRoleKey:CSchlü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
ParameterBeschreibung
aRoleKey:CSchlü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():LPrüft, ob die Formularaktion eingeblendet wird
ParameterBeschreibung
aFormClassName:CName der Klasse des prüfenden Formulars
aFormActionName:CName der prüfenden Aktion des Formulars
aUserNo:NNummer des Users (-1 bedeutet aktuellen Benutzer)
aDepartment:NAbteilung (-1 bedeutet aktuelle Abteilung)
aLocation:NStandort (-1 bedeutet aktueller Standort)
CbIsDeniedModule():LPrüft, ob der Modul eingeblendet wird
ParameterBeschreibung
aModuleName:CName des prüfenden Modules
aUserNo:NNummer des Users (-1 bedeutet aktuellen Benutzer)
aDepartment:NAbteilung (-1 bedeutet aktuelle Abteilung)
aLocation:NStandort (-1 bedeutet aktueller Standort)
CbIsGrantedFormAction():LPrüft, ob die Formularaktion durchgeführt werden könnten (ohne Passwort)
ParameterBeschreibung
aFormClassName:CName der Klasse des prüfenden Formulars
aFormCaption:CBezeichnung des prüfenden Formulars (Default: leer)
aFormActionName:CName der prüfenden Aktion des Formulars
aFormActionCaption:CBezeichnung der prüfenden Aktion des Formulars (Default: leer)
aUserNo:NNummer des Users (-1 bedeutet aktuellen Benutzer)
aDepartment:NAbteilung (-1 bedeutet aktuelle Abteilung)
aLocation:NStandort (-1 bedeutet aktueller Standort)
CbIsGrantedFormActionPassword():LPrüft, ob die Formularaktion durchgeführt werden könnten (mit Passwort)
ParameterBeschreibung
aFormClassName:CName der Klasse des prüfenden Formulars
aFormActionName:CName der prüfenden Aktion des Formulars
aPassword:CPasswort, die entsperrt prüfende Aktion
aUserNo:NNummer des Users (-1 bedeutet aktuellen Benutzer)
aDepartment:NAbteilung (-1 bedeutet aktuelle Abteilung)
aLocation:NStandort (-1 bedeutet aktueller Standort)
CbIsGrantedGlobal():LPrüft, ob die globale Aktion durchgeführt werden könnte
ParameterBeschreibung
aActionName:CName der prüfenden globalen Aktion
aPassword:CPasswort, 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:NNummer des Users (-1 bedeutet aktuellen Benutzer)
aDepartment:NAbteilung (-1 bedeutet aktuelle Abteilung)
aLocation:NStandort (-1 bedeutet aktueller Standort)
CbIsGrantedGlobalCompany():LPrüft, ob der Mandant zugegriffen werden könnte
ParameterBeschreibung
aCompany:NName des prüfenden Mandanten
aPassword:CPasswort, 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:NNummer des Users (-1 bedeutet aktuellen Benutzer)
aDepartment:NAbteilung (-1 bedeutet aktuelle Abteilung)
aLocation:NStandort (-1 bedeutet aktueller Standort)
CbIsGrantedGlobalDepartment():LPrüft, ob die Abteilung zugegriffen werden könnte
ParameterBeschreibung
aGrantedDepartment:NName der prüfenden Abteilung
aPassword:CPasswort, 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:NNummer des Users (-1 bedeutet aktuellen Benutzer)
aDepartment:NAbteilung (-1 bedeutet aktuelle Abteilung)
aLocation:NStandort (-1 bedeutet aktueller Standort)
CbIsGrantedGlobalLocation():LPrüft, ob der Standort zugegriffen werden könnte
ParameterBeschreibung
aGrantedLocation:NName des prüfenden Standort
aPassword:CPasswort, 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:NNummer des Users (-1 bedeutet aktuellen Benutzer)
aDepartment:NAbteilung (-1 bedeutet aktuelle Abteilung)
aLocation:NStandort (-1 bedeutet aktueller Standort)
CbIsGrantedModule():LPrüft, ob das Modul zugegriffen werden könnte
ParameterBeschreibung
aModuleName:CName des prüfenden Moduls
aPassword:CPasswort, 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:NNummer des Users (-1 bedeutet aktuellen Benutzer)
aDepartment:NAbteilung (-1 bedeutet aktuelle Abteilung)
aLocation:N

Standort (-1 bedeutet aktueller Standort)

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.