DefaultPermissions
Aus TRENZ PartnerNet
Standardberechtigungen, abgelegt in der Tabelle DefaultPermissions, setzten für Container-Typen beim Erstellen eines Containers bestimmte Standardrechte. Diese Tabelle wird über die GUI in der Container-Typen-Verwaltung gefüllt.
Spalten
- id: Wird automatisch gesetzt.
- CTypID: Container-Typ-ID (Container_Typ)
- Domian: ?
- UserID: Die User-ID
- Zugriff: setzt die entsprechenden Rechte (0 = kein Zugriff; 1= Vollzugriff; 2= nur lesen)
Default-Permissions aktivieren
Um die Default-Permissions zu aktivieren müssen folgende SQL-Scripte ausgeführt werden:
CREATE FUNCTION [dbo].[el_CompareZugriff](@Zugriff smallint) RETURNS smallint AS BEGIN IF @Zugriff > 1 RETURN 0 IF @Zugriff = 0 RETURN -1 RETURN 1 END GO
CREATE TRIGGER [dbo].[el_container_trigger_SetDefaultPermissions] ON [dbo].[container] AFTER INSERT AS BEGIN SELECT id, Typ, erfsab INTO #ContainersToReset FROM inserted DECLARE @Permissions table(id int IDENTITY(1,1), CID int, UserID int, CTypID int, Zugriff smallint) -- Owner INSERT INTO @Permissions SELECT i.id, i.erfsab, i.Typ, DP.Zugriff FROM DefaultPermissions DP, #ContainersToReset i WHERE DP.CTypID = i.Typ AND DP.Domain = 0 -- Own groups INSERT INTO @Permissions SELECT i.id, UserID, i.Typ, DP.Zugriff FROM DefaultPermissions DP, #ContainersToReset i WHERE DP.CTypID = i.Typ AND DP.Domain = 1 AND DP.UserID IN (SELECT GroupUserID FROM zUserGroups_v WHERE UserID = i.erfsab) UNION SELECT i.id, zUG.UserID, i.Typ, DP.Zugriff FROM DefaultPermissions DP, zUserGroups_v zUG, #ContainersToReset i WHERE DP.CTypID = i.Typ AND DP.Domain = 1 AND DP.UserID = zUG.GroupUserID AND DP.UserID IN (SELECT GroupUserID FROM zUserGroups_v WHERE UserID = i.erfsab) -- Other users and groups INSERT INTO @Permissions SELECT i.id, DP.UserID, i.Typ, DP.Zugriff FROM DefaultPermissions DP, #ContainersToReset i WHERE DP.CTypID = i.Typ AND DP.Domain = 2 AND DP.UserID NOT IN (SELECT GroupUserID FROM zUserGroups_v WHERE UserID = i.erfsab) UNION SELECT i.id, zUG.UserID, i.Typ, DP.Zugriff FROM DefaultPermissions DP, zUserGroups_v zUG, #ContainersToReset i WHERE DP.CTypID = i.Typ AND DP.Domain = 2 AND DP.UserID = zUG.GroupUserID AND DP.UserID NOT IN (SELECT GroupUserID FROM zUserGroups_v WHERE UserID = i.erfsab) -- Everyone else INSERT INTO @Permissions SELECT i.id, U.id, i.Typ, DP.Zugriff FROM DefaultPermissions DP, User_Slave U, #ContainersToReset i WHERE DP.CTypID = i.Typ AND DP.Domain = 3 INSERT INTO zRechte(RechtID, ReferenzID, UserID, Zugriff, aendat, aensab) SELECT -1, CID, UserID, ( SELECT TOP 1 Zugriff FROM @Permissions WHERE CID = A.CID AND CTypID = A.CTypID AND UserID = A.UserID ORDER BY dbo.el_CompareZugriff(Zugriff) DESC ) Zugriff , GETDATE(), B.erfsab FROM @Permissions A, #ContainersToReset B WHERE A.CID = B.id GROUP BY CID, CTypID, UserID, B.erfsab ORDER BY CID, CTypID, UserID, B.erfsab END