Class 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 Detail

      • _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
      • _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 Detail

      • DafAccessControlManager

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

      • 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
      • 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