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 ClientDavInterface
Datenverteilerverbindungprotected static final de.bsvrz.sys.funclib.debug.Debug
Debugprotected final boolean
Ob 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 boolean
Ob implizite Benutzerverwaltung durchgeführt wird, oder Benutzer mit addUser erstellt werden müssenprotected final HashMap<Long,
UserInfoInternal> Map, die BenutzerIds den Benutzerobjekten zuordnetprotected final ReentrantReadWriteLock
Lock-Objekt für_userInfoHashMap
-
Constructor Summary
ConstructorsConstructorDescriptionDafAccessControlManager
(boolean useNewDataModel, ClientDavInterface connection, boolean useImplicitUserManagement) -
Method Summary
Modifier and TypeMethodDescriptionvoid
addChangeListener
(AccessControlChangeListener listener) Meldet einen Listener auf geänderte Nutzerrechte anfinal void
addUser
(long userId) Fügt eine Benutzerinformation zu der Benutzertabelle hinzu, wenn der Datenverteiler die Benutzerrechte prüfen soll.void
close()
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ückboolean
Fragt ab, ob das neue Datenmodell benutzt wird.void
notifyInfiniteRecursion
(DataLoader node, DataLoader parent, List<DataLoader> trace) Wird aufgerufen, wenn eine Rekursion in den Systemobjekten gefunden wurde.void
objectChanged
(DataLoader object) Wird aufgerufen un dem AccessControlManager zu informieren, dass ein verwaltetes Objekt sich geändert hat.void
Entfernt einen Listener auf geänderte BenutzerrechteMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods 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:AccessControlManager
Meldet einen Listener auf geänderte Nutzerrechte an- Specified by:
addChangeListener
in interfaceAccessControlManager
- Parameters:
listener
- Listener
-
removeChangeListener
Description copied from interface:AccessControlManager
Entfernt einen Listener auf geänderte Benutzerrechte- Specified by:
removeChangeListener
in interfaceAccessControlManager
- Parameters:
listener
- Listener
-
close
public void close()- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in 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:
getRegion
in 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:
getUserPermissions
in interfaceAccessControlManager
- Parameters:
userId
- Angegebene BenutzerId- Returns:
- Das geforderte UserInfo-Objekt
-
getUserPermissions
Description copied from interface:AccessControlManager
Gibt die Benutzerrechte zum aktuell angemeldeten Benutzer zurück.- Specified by:
getUserPermissions
in 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:
getUpdateLock
in 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:
objectChanged
in interfaceRegionManager
- Parameters:
object
- Objekt das sich geändert hat
-