Class DafAccessControlManager
java.lang.Object
de.bsvrz.dav.daf.accessControl.internal.DafAccessControlManager
- All Implemented Interfaces:
AccessControlManager,RegionManager,java.io.Closeable,java.lang.AutoCloseable
public class DafAccessControlManager extends java.lang.Object implements AccessControlManager, RegionManager, java.io.Closeable
AccessControlManager-Implementierung, die die Benutzerrechteverwaltung und Rechteprüfung durchführt.
-
Field Summary
Fields Modifier and Type Field Description protected java.util.HashMap<SystemObject,AccessControlUnit>_authenticationClassHashMapMap, die Berechtigungsklassen den kapselnden AccessControlUnit-Klassen zuordnetprotected ClientDavInterface_connectionDatenverteilerverbindungprotected static de.bsvrz.sys.funclib.debug.Debug_debugDebugprotected boolean_isUsingNewDataModelOb das neue Datenmodell (sieheExtendedUserInfo) benutzt wirdprotected java.util.HashMap<SystemObject,Region>_regionHashMapMap, die Regionen den kapselnden Region-Klassen zuordnetprotected java.util.HashMap<SystemObject,Role>_roleHashMapMap, die Rollen den kapselnden Role-Klassen zuordnetprotected boolean_useImplicitUserManagementOb implizite Benutzerverwaltung durchgeführt wird, oder Benutzer mit addUser erstellt werden müssenprotected java.util.HashMap<java.lang.Long,UserInfoInternal>_userInfoHashMapMap, die BenutzerIds den Benutzerobjekten zuordnetprotected java.util.concurrent.locks.ReentrantReadWriteLock_userMapLockLock-Objekt für_userInfoHashMap -
Constructor Summary
Constructors Constructor Description DafAccessControlManager(boolean useNewDataModel, ClientDavInterface connection, boolean useImplicitUserManagement) -
Method Summary
Modifier and Type Method Description voidaddChangeListener(AccessControlChangeListener listener)Meldet einen Listener auf geänderte Nutzerrechte anvoidaddUser(long userId)Fügt eine Benutzerinformation zu der Benutzertabelle hinzu, wenn der Datenverteiler die Benutzerrechte prüfen soll.voidclose()AccessControlUnitgetAuthenticationClass(SystemObject systemObject)Gibt die AuthenticationClass-Klasse zurück die zu dem angeforderten Systemobjekt gehört.RegiongetRegion(SystemObject systemObject)Gibt die Region-Klasse zurück die zu dem angeforderten Systemobjekt gehört.RolegetRole(SystemObject systemObject)Gibt die Role-Klasse zurück die zu dem angeforderten Systemobjekt gehört.java.lang.ObjectgetUpdateLock()Um immer einen konsistenten Zustand zu haben, darf immer nur ein DataLoader gleichzeitig pro AccessControlManager geupdatet werden.UserInfogetUserPermissions()Gibt die Benutzerrechte zum aktuell angemeldeten Benutzer zurück.UserInfogetUserPermissions(long userId)Gibt das gespeicherte BenutzerObjekt mit der angegebenen ID zurückbooleanisUsingNewDataModel()Fragt ab, ob das neue Datenmodell benutzt wird.voidnotifyInfiniteRecursion(DataLoader node, DataLoader parent, java.util.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.voidremoveChangeListener(AccessControlChangeListener listener)Entfernt 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
protected final java.util.concurrent.locks.ReentrantReadWriteLock _userMapLockLock-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 interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable
-
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
public void notifyInfiniteRecursion(DataLoader node, DataLoader parent, java.util.List<DataLoader> trace)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
public java.lang.Object 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
-