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,