Class DafAccessControlManager
java.lang.Object
de.bsvrz.dav.daf.accessControl.internal.DafAccessControlManager
- All Implemented Interfaces:
AccessControlManager,RegionManager,Closeable,AutoCloseable
public class DafAccessControlManager
extends Object
implements AccessControlManager, RegionManager, Closeable
AccessControlManager-Implementierung, die die Benutzerrechteverwaltung und Rechteprüfung durchführt.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final HashMap<SystemObject,AccessControlUnit> Map, die Berechtigungsklassen den kapselnden AccessControlUnit-Klassen zuordnetprotected final ClientDavInterfaceDatenverteilerverbindungprotected static final de.bsvrz.sys.funclib.debug.DebugDebugprotected final booleanOb das neue Datenmodell (sieheExtendedUserInfo) benutzt wirdprotected final HashMap<SystemObject,Region> Map, die Regionen den kapselnden Region-Klassen zuordnetprotected final HashMap<SystemObject,Role> Map, die Rollen den kapselnden Role-Klassen zuordnetprotected final booleanOb implizite Benutzerverwaltung durchgeführt wird, oder Benutzer mit addUser erstellt werden müssenprotected final HashMap<Long,UserInfoInternal> Map, die BenutzerIds den Benutzerobjekten zuordnetprotected final ReentrantReadWriteLockLock-Objekt für_userInfoHashMap -
Constructor Summary
ConstructorsConstructorDescriptionDafAccessControlManager(boolean useNewDataModel, ClientDavInterface connection, boolean useImplicitUserManagement) -
Method Summary
Modifier and TypeMethodDescriptionvoidaddChangeListener(AccessControlChangeListener listener) Meldet einen Listener auf geänderte Nutzerrechte anfinal voidaddUser(long userId) Fügt eine Benutzerinformation zu der Benutzertabelle hinzu, wenn der Datenverteiler die Benutzerrechte prüfen soll.voidclose()getAuthenticationClass(SystemObject systemObject) Gibt die AuthenticationClass-Klasse zurück die zu dem angeforderten Systemobjekt gehört.getRegion(SystemObject systemObject) Gibt die Region-Klasse zurück die zu dem angeforderten Systemobjekt gehört.getRole(SystemObject systemObject) Gibt die Role-Klasse zurück die zu dem angeforderten Systemobjekt gehört.Um immer einen konsistenten Zustand zu haben, darf immer nur ein DataLoader gleichzeitig pro AccessControlManager geupdatet werden.Gibt die Benutzerrechte zum aktuell angemeldeten Benutzer zurück.getUserPermissions(long userId) Gibt das gespeicherte BenutzerObjekt mit der angegebenen ID zurückbooleanFragt ab, ob das neue Datenmodell benutzt wird.voidnotifyInfiniteRecursion(DataLoader node, DataLoader parent, List<DataLoader> trace) Wird aufgerufen, wenn eine Rekursion in den Systemobjekten gefunden wurde.voidobjectChanged(DataLoader object) Wird aufgerufen un dem AccessControlManager zu informieren, dass ein verwaltetes Objekt sich geändert hat.voidEntfernt einen Listener auf geänderte BenutzerrechteMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface de.bsvrz.dav.daf.accessControl.AccessControlManager
getUserPermissions, getUserPermissions
-
Field Details
-
_debug
protected static final de.bsvrz.sys.funclib.debug.Debug _debugDebug -
_userInfoHashMap
Map, die BenutzerIds den Benutzerobjekten zuordnet -
_authenticationClassHashMap
Map, die Berechtigungsklassen den kapselnden AccessControlUnit-Klassen zuordnet -
_roleHashMap
Map, die Rollen den kapselnden Role-Klassen zuordnet -
_regionHashMap
Map, die Regionen den kapselnden Region-Klassen zuordnet -
_connection
Datenverteilerverbindung -
_isUsingNewDataModel
protected final boolean _isUsingNewDataModelOb das neue Datenmodell (sieheExtendedUserInfo) benutzt wird -
_useImplicitUserManagement
protected final boolean _useImplicitUserManagementOb implizite Benutzerverwaltung durchgeführt wird, oder Benutzer mit addUser erstellt werden müssen -
_userMapLock
Lock-Objekt für_userInfoHashMap
-
-
Constructor Details
-
DafAccessControlManager
public DafAccessControlManager(boolean useNewDataModel, ClientDavInterface connection, boolean useImplicitUserManagement)
-
-
Method Details
-
addChangeListener
Description copied from interface:AccessControlManagerMeldet einen Listener auf geänderte Nutzerrechte an- Specified by:
addChangeListenerin interfaceAccessControlManager- Parameters:
listener- Listener
-
removeChangeListener
Description copied from interface:AccessControlManagerEntfernt einen Listener auf geänderte Benutzerrechte- Specified by:
removeChangeListenerin interfaceAccessControlManager- Parameters:
listener- Listener
-
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable
-
addUser
public final void addUser(long userId) Fügt eine Benutzerinformation zu der Benutzertabelle hinzu, wenn der Datenverteiler die Benutzerrechte prüfen soll. Existiert der Benutzer bereits, wird lediglich die interne Referenz inkrementiert.- Parameters:
userId- BenutzerID
-
isUsingNewDataModel
public boolean isUsingNewDataModel()Fragt ab, ob das neue Datenmodell benutzt wird. Das neue Datenmodell enthält eine neue Struktur der Region und Rollen-Objekten und ermöglicht Beschränkungen bei der Erstellung von dynamischen Objekten.- Returns:
- True wenn das neue Modell benutzt wird, sonst false
-
notifyInfiniteRecursion
Wird aufgerufen, wenn eine Rekursion in den Systemobjekten gefunden wurde. Dabei wird eine _Debug-Meldung ausgegeben und das Elternelement angewiesen die Referenz auf das Kindobjekt zu deaktivieren.- Parameters:
node- Der Knoten, der sich selbst referenziertparent- Der Knoten, der den problematischen Knoten referenzierttrace- Komplette Hierarchie vom Benutzer zum problematischen Objekt.
-
getAuthenticationClass
Gibt die AuthenticationClass-Klasse zurück die zu dem angeforderten Systemobjekt gehört.- Parameters:
systemObject- Systemobjekt, das eine Berechtigungsklasse repräsentiert- Returns:
- AuthenticationClass-Klasse die Abfragen auf eine Berechtigungsklasse ermöglicht
-
getRegion
Gibt die Region-Klasse zurück die zu dem angeforderten Systemobjekt gehört.- Specified by:
getRegionin interfaceRegionManager- Parameters:
systemObject- Systemobjekt, das eine Region repräsentiert- Returns:
- Region-Klasse die Abfragen auf eine Region ermöglicht
-
getRole
Gibt die Role-Klasse zurück die zu dem angeforderten Systemobjekt gehört.- Parameters:
systemObject- Systemobjekt, das eine Rolle repräsentiert- Returns:
- Role-Klasse die Abfragen auf eine Rolle ermöglicht
-
getUserPermissions
Gibt das gespeicherte BenutzerObjekt mit der angegebenen ID zurück- Specified by:
getUserPermissionsin interfaceAccessControlManager- Parameters:
userId- Angegebene BenutzerId- Returns:
- Das geforderte UserInfo-Objekt
-
getUserPermissions
Description copied from interface:AccessControlManagerGibt die Benutzerrechte zum aktuell angemeldeten Benutzer zurück.- Specified by:
getUserPermissionsin interfaceAccessControlManager- Returns:
- Ein UserInfo-Objekt
-
getUpdateLock
Um immer einen konsistenten Zustand zu haben, darf immer nur ein DataLoader gleichzeitig pro AccessControlManager geupdatet werden. Dazu wird auf dieses dummy-Objekt synchronisiert- Specified by:
getUpdateLockin interfaceRegionManager- Returns:
- Objekt auf das Synchronisiert werden soll
-
objectChanged
Wird aufgerufen un dem AccessControlManager zu informieren, dass ein verwaltetes Objekt sich geändert hat. Der AccessControlManager wird daraufhin nach Benutzer-Objekten suchen, die dieses Objekt verwenden und eine Benachrichtigung senden, dass sich die Rechte des Benutzers geändert haben und eventuelle vorhandene Anmeldungen entfernt werden müssen.- Specified by:
objectChangedin interfaceRegionManager- Parameters:
object- Objekt das sich geändert hat
-