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 Details

    • _debug

      protected static final de.bsvrz.sys.funclib.debug.Debug _debug
      Debug
    • _userInfoHashMap

      protected final java.util.HashMap<java.lang.Long,​UserInfoInternal> _userInfoHashMap
      Map, die BenutzerIds den Benutzerobjekten zuordnet
    • _authenticationClassHashMap

      protected final java.util.HashMap<SystemObject,​AccessControlUnit> _authenticationClassHashMap
      Map, die Berechtigungsklassen den kapselnden AccessControlUnit-Klassen zuordnet
    • _roleHashMap

      protected final java.util.HashMap<SystemObject,​Role> _roleHashMap
      Map, die Rollen den kapselnden Role-Klassen zuordnet
    • _regionHashMap

      protected final java.util.HashMap<SystemObject,​Region> _regionHashMap
      Map, die Regionen den kapselnden Region-Klassen zuordnet
    • _connection

      protected final ClientDavInterface _connection
      Datenverteilerverbindung
    • _isUsingNewDataModel

      protected final boolean _isUsingNewDataModel
      Ob das neue Datenmodell (siehe ExtendedUserInfo) benutzt wird
    • _useImplicitUserManagement

      protected final boolean _useImplicitUserManagement
      Ob implizite Benutzerverwaltung durchgeführt wird, oder Benutzer mit addUser erstellt werden müssen
    • _userMapLock

      protected final java.util.concurrent.locks.ReentrantReadWriteLock _userMapLock
      Lock-Objekt für _userInfoHashMap
  • Constructor Details

    • DafAccessControlManager

      public DafAccessControlManager​(boolean useNewDataModel, ClientDavInterface connection, boolean useImplicitUserManagement)
  • Method Details

    • addChangeListener

      public void addChangeListener​(AccessControlChangeListener listener)
      Description copied from interface: AccessControlManager
      Meldet einen Listener auf geänderte Nutzerrechte an
      Specified by:
      addChangeListener in interface AccessControlManager
      Parameters:
      listener - Listener
    • removeChangeListener

      public void removeChangeListener​(AccessControlChangeListener listener)
      Description copied from interface: AccessControlManager
      Entfernt einen Listener auf geänderte Benutzerrechte
      Specified by:
      removeChangeListener in interface AccessControlManager
      Parameters:
      listener - Listener
    • close

      public void close()
      Specified by:
      close in interface java.lang.AutoCloseable
      Specified by:
      close in interface java.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 referenziert
      parent - Der Knoten, der den problematischen Knoten referenziert
      trace - Komplette Hierarchie vom Benutzer zum problematischen Objekt.
    • getAuthenticationClass

      public AccessControlUnit getAuthenticationClass​(SystemObject systemObject)
      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

      public Region getRegion​(SystemObject systemObject)
      Gibt die Region-Klasse zurück die zu dem angeforderten Systemobjekt gehört.
      Specified by:
      getRegion in interface RegionManager
      Parameters:
      systemObject - Systemobjekt, das eine Region repräsentiert
      Returns:
      Region-Klasse die Abfragen auf eine Region ermöglicht
    • getRole

      public Role getRole​(SystemObject systemObject)
      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

      public UserInfo getUserPermissions​(long userId)
      Gibt das gespeicherte BenutzerObjekt mit der angegebenen ID zurück
      Specified by:
      getUserPermissions in interface AccessControlManager
      Parameters:
      userId - Angegebene BenutzerId
      Returns:
      Das geforderte UserInfo-Objekt
    • getUserPermissions

      public UserInfo getUserPermissions()
      Description copied from interface: AccessControlManager
      Gibt die Benutzerrechte zum aktuell angemeldeten Benutzer zurück.
      Specified by:
      getUserPermissions in interface AccessControlManager
      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:
      getUpdateLock in interface RegionManager
      Returns:
      Objekt auf das Synchronisiert werden soll
    • objectChanged

      public void objectChanged​(DataLoader object)
      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 interface RegionManager
      Parameters:
      object - Objekt das sich geändert hat