Benutzerrollen kopieren

Post Reply
Marian
Posts: 7
Joined: 08. Aug 2014, 08:22
Contact:

Benutzerrollen kopieren

Post by Marian » 14. Aug 2014, 09:13

Hallo,

gibt es eine Möglichkeit Benutzerrollen zu kopieren?

Ich möchte z.B. für den 1st lvl Support eine Rolle erstellen und diese kopieren. Dann würde ich die kopierte umbenennen (z.B. 2-lvl-Support) und um Rechte erweitern oder einschränken.

Gruß

User avatar
Hubibi
Posts: 16
Joined: 26. Mar 2014, 14:22
Contact:

Re: Benutzerrollen kopieren

Post by Hubibi » 18. Aug 2014, 12:22

Neue Rolle vorher anlegen und "leer" lassen. Dann im SQL Skript bei Ziel den Namen der neuen Rolle angeben, bei Quelle den Namen der Quellrolle ;-)

Code: Select all

/*
Kopieren der Rechte einer Benutzerrolle
VERWENDUNG AUF EIGENE GEFAHR

- manuelle Anlage der neuen Rolle
- Pflege der Quelle (von dort werden Daten übernommen)
- Pflege Ziel (dort werden erst Rechte entfernt, dann neu gesetzt)
- Einschränkungen über OU/Location werden nicht berücksichtigt, manuell nachpflegen

*/
DECLARE @Quelle AS NVARCHAR(50)
DECLARE @Ziel AS NVARCHAR(50)
DECLARE @QuelleID AS NVARCHAR(50)
DECLARE @ZielID AS NVARCHAR(50)
DECLARE @ZielCID AS NVARCHAR(50)
SET @Quelle = 'LHS Assetmanager Amt 10 Read'	-- Datenpflege achtung, Lokalisierung
SET @Ziel = 'LHS Assetmanager Amt 15 Read'		-- Datenpflege

SET @QuelleID = 
(SELECT [Expression-ObjectID]
FROM SPSSecurityClassRole scr
WHERE scr.Name = @Quelle)

SET @ZielID = 
(SELECT [Expression-ObjectID]
FROM SPSSecurityClassRole scr
WHERE scr.Name = @Ziel)

SET @ZielCID = 
(SELECT [ID]
FROM SPSSecurityClassRole scr
WHERE scr.Name = @Ziel)

--SELECT @QuelleID, @ZielID

/* Typenrechte löschen */
DELETE FROM PLSCTypeRule
WHERE ID IN
(SELECT tr.ID
FROM SPSSecurityClassRole scr
--INNER JOIN SPSScRoleClassBase rcb ON scr.[Expression-ObjectID] = rcb.[Expression-ObjectID]
INNER JOIN SPSCommonClassBase com ON scr.[Expression-ObjectID] = com.[Expression-ObjectID]
--LEFT JOIN PLSCRuleDimensionOU rdOU ON rcb.[Expression-ObjectID] = rdOU.[Expression-ObjectID]
--LEFT JOIN PLSCRuleDimensionOU rdLoc ON rcb.[Expression-ObjectID] = rdLoc.[Expression-ObjectID]
LEFT JOIN PLSCTypeRule tr ON scr.[Expression-ObjectID] = tr.[Expression-ObjectID] --Typenrechte
--LEFT JOIN PLSCAccessRule ar ON rcb.[Expression-ObjectID] = ar.[Expression-ObjectID] --Rechte Aktionen
WHERE tr.[Expression-ObjectID] = @ZielID
)

/* Typenrechte einfügen */
INSERT INTO PLSCTypeRule
(ID,[Read],[Insert],[Write],[Delete],[Type], UsedInTypeSPSSecurityTypeRole)
SELECT 
NEWID(),
tr.[Read],
tr.[Insert],
tr.[Write],
tr.[Delete],
tr.[Type],
@ZielID
FROM SPSSecurityClassRole scr
--INNER JOIN SPSScRoleClassBase rcb ON scr.[Expression-ObjectID] = rcb.[Expression-ObjectID]
INNER JOIN SPSCommonClassBase com ON scr.[Expression-ObjectID] = com.[Expression-ObjectID]
--LEFT JOIN PLSCRuleDimensionOU rdOU ON rcb.[Expression-ObjectID] = rdOU.[Expression-ObjectID]
--LEFT JOIN PLSCRuleDimensionOU rdLoc ON rcb.[Expression-ObjectID] = rdLoc.[Expression-ObjectID]
LEFT JOIN PLSCTypeRule tr ON scr.[Expression-ObjectID] = tr.[Expression-ObjectID] --Typenrechte
--LEFT JOIN PLSCAccessRule ar ON rcb.[Expression-ObjectID] = ar.[Expression-ObjectID] --Rechte Aktionen
WHERE scr.[Expression-ObjectID] = @QuelleID
AND @ZielID IS NOT NULL

/* Aktionsrechte entfernen */
DELETE FROM PLSCAccessRule
WHERE ID IN
(SELECT ar.ID
FROM SPSSecurityClassRole scr
--INNER JOIN SPSScRoleClassBase rcb ON scr.[Expression-ObjectID] = rcb.[Expression-ObjectID]
INNER JOIN SPSCommonClassBase com ON scr.[Expression-ObjectID] = com.[Expression-ObjectID]
--LEFT JOIN PLSCRuleDimensionOU rdOU ON rcb.[Expression-ObjectID] = rdOU.[Expression-ObjectID]
--LEFT JOIN PLSCRuleDimensionOU rdLoc ON rcb.[Expression-ObjectID] = rdLoc.[Expression-ObjectID]
--LEFT JOIN PLSCTypeRule tr ON rcb.[Expression-ObjectID] = tr.[Expression-ObjectID] --Typenrechte
LEFT JOIN PLSCAccessRule ar ON scr.[Expression-ObjectID] = ar.[Expression-ObjectID] --Rechte Aktionen
WHERE ar.[Expression-ObjectID] = @ZielID
)

/* Aktionsrechte setzen */
INSERT INTO PLSCAccessRule
(ID, [Execute], [Action], UsedInTypeSPSSecurityTypeRole)
SELECT 
NEWID(),
ar.[Execute],
ar.[Action],
@ZielID
FROM SPSSecurityClassRole scr
--INNER JOIN SPSScRoleClassBase rcb ON scr.[Expression-ObjectID] = rcb.[Expression-ObjectID]
INNER JOIN SPSCommonClassBase com ON scr.[Expression-ObjectID] = com.[Expression-ObjectID]
--LEFT JOIN PLSCRuleDimensionOU rdOU ON rcb.[Expression-ObjectID] = rdOU.[Expression-ObjectID]
--LEFT JOIN PLSCRuleDimensionOU rdLoc ON rcb.[Expression-ObjectID] = rdLoc.[Expression-ObjectID]
--LEFT JOIN PLSCTypeRule tr ON rcb.[Expression-ObjectID] = tr.[Expression-ObjectID] --Typenrechte
LEFT JOIN PLSCAccessRule ar ON scr.[Expression-ObjectID] = ar.[Expression-ObjectID] --Rechte Aktionen
WHERE scr.[Expression-ObjectID] = @QuelleID
AND @ZielID IS NOT NULL


/* Tab- und Dialogerechte entfernen */
DELETE FROM [SchemaRelation-SPSSecurityClassRole2SPSContentClassObjectDialogTab]
WHERE ID IN
(SELECT r2d.ID
FROM SPSSecurityClassRole scr
--INNER JOIN SPSScRoleClassBase rcb ON scr.[Expression-ObjectID] = rcb.[Expression-ObjectID]
INNER JOIN [SchemaRelation-SPSSecurityClassRole2SPSContentClassObjectDialogTab] r2d
	ON scr.ID = r2d.VisibleDialogTabs
WHERE scr.[Expression-ObjectID] = @ZielID
)


/* Tab- und Dialogerechte setzen */
INSERT INTO [SchemaRelation-SPSSecurityClassRole2SPSContentClassObjectDialogTab]
(ID, VisibleRoles, VisibleDialogTabs)
SELECT 
NEWID(),
r2d.VisibleRoles,
@ZielCID
FROM SPSSecurityClassRole scr
--INNER JOIN SPSScRoleClassBase rcb ON scr.[Expression-ObjectID] = rcb.[Expression-ObjectID]
INNER JOIN [SchemaRelation-SPSSecurityClassRole2SPSContentClassObjectDialogTab] r2d
	ON scr.ID = r2d.VisibleDialogTabs
WHERE scr.[Expression-ObjectID] = @QuelleID
AND @ZielID IS NOT NULL



MR Datentechnik Vertriebs- und Service GmbH
http://www.mr-daten.de/cms/it-service-management

Marian
Posts: 7
Joined: 08. Aug 2014, 08:22
Contact:

Re: Benutzerrollen kopieren

Post by Marian » 20. Aug 2014, 09:52

Danke Hubibi,

derzeit bekomme ich aber noch folgende Fehlermeldung:

Meldung 208, Ebene 16, Status 1, Zeile 9
Ungültiger Objektname 'SPSSecurityClassRole'.

Ich nehme aber mal an das dies ein Berechtigungsproblem ist. Ich werde dies dann mit dem SA versuchen sobald ich die Dokumentation mit dem PW bekomme.

Marian
Posts: 7
Joined: 08. Aug 2014, 08:22
Contact:

Re: Benutzerrollen kopieren

Post by Marian » 22. Aug 2014, 10:01

Hallo Hubibi,

leider bringt er auch mit dem sa Benutzer die gleiche Fehlermeldung:

Meldung 208, Ebene 16, Status 1, Zeile 9
Ungültiger Objektname 'SPSSecurityClassRole'.

Das Objekt ist ihm leider unbekannt.

Sven_Puth
Posts: 461
Joined: 07. Apr 2011, 15:55
Contact:

Re: Benutzerrollen kopieren

Post by Sven_Puth » 22. Aug 2014, 12:50

Ist die richtige Datenbank ausgewählt?
Bei neuen Abfragen ist standardmäßig die 'master' DB ausgewählt und in dem SQL Statement gibt es kein "USE M42Production"
Tria-media - IT Solutions

Marian
Posts: 7
Joined: 08. Aug 2014, 08:22
Contact:

Re: Benutzerrollen kopieren

Post by Marian » 25. Aug 2014, 06:53

Hallo,

ja es war die falsche DB ausgwählt.

Gleich noch eine Frage: (da er mir als Ergebnis "0 Zeile(n) betroffen" ausgibt)

Quelle = 'Name der Rolle'
Ziel = 'Name der Zielrolle'

wobei Name der String ist, den ich im UI im Feld Name eingegeben habe?

User avatar
Hubibi
Posts: 16
Joined: 26. Mar 2014, 14:22
Contact:

Re: Benutzerrollen kopieren

Post by Hubibi » 25. Aug 2014, 09:28

Ja
MR Datentechnik Vertriebs- und Service GmbH
http://www.mr-daten.de/cms/it-service-management

mhausl
Posts: 29
Joined: 31. Jul 2012, 07:59
Contact:

Re: Benutzerrollen kopieren

Post by mhausl » 29. Jun 2015, 12:54

Das Script tut bei mir nix. Läuft zwar fehlerfrei durch, aber eine neue Rolle scheint danach nicht auf.
Kann es sein, dass sich da im DB-Schema was geändert hat?

mhausl
Posts: 29
Joined: 31. Jul 2012, 07:59
Contact:

Re: Benutzerrollen kopieren

Post by mhausl » 29. Jun 2015, 13:15

hat sich erledigt! Lesen sollte man können!!

--> "manuelle Anlage der neuen Rolle"

Damit funktioniert es auch ;-)

Post Reply

Return to “Administration”

Who is online

Users browsing this forum: Google [Bot] and 6 guests