Reply To: Rechte auf CI/Item Type begrenzen

Welcome to the POB User Group Online Community! Forums PUG DACH Rechte auf CI/Item Type begrenzen Reply To: Rechte auf CI/Item Type begrenzen

#4954
brubue
Member

Hallo zusammen, nachdem ich die Lösung umgesetzt habe, hier noch eine kleine Doku dazu. Falls mir noch jemand einen Tip hat, wie ich in einem neuen Fall meine Variable @CiType.PK ohne Fehler anwenden kann, her damit.

1. Erstellen einer Rolle, die berechtigt ist ConfigurationItems zu erstellen und zu ändern
2. Erstellen einer Gruppe, die die zuvor erstelle Rolle beinhaltet
3. auf dem SQL-Server folgende Funktion erstellen zur Prüfung der Gruppenzugehörigkeit

USE [POBG6]
GO
/****** Object: UserDefinedFunction [dbo].[LRA_User_in_Gruppe] Script Date: 18.09.2020 12:11:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

— =============================================
— Author: Bruno Büchele
— Create date: 07.09.2020
— Description: prüft ab, ob Benutzer ein CI mit einem bestimmten ci-Typ speichern darf
— =============================================
ALTER FUNCTION [dbo].[LRA_User_in_Gruppe]
(
— Add the parameters for the function here
@BenutzerID nvarchar(255)

)
RETURNS int
AS
BEGIN
return(
SELECT count( dbo.User_Table.user_pk)
FROM dbo.Entity_Relation RIGHT OUTER JOIN
dbo.User_Table ON dbo.Entity_Relation.trail_pk = dbo.User_Table.user_pk FULL OUTER JOIN
dbo.User_User_Group FULL OUTER JOIN
dbo.User_Group ON dbo.User_User_Group.user_group_pk = dbo.User_Group.user_group_pk ON dbo.User_Table.user_pk = dbo.User_User_Group.user_pk

WHERE (dbo.Entity_Relation.entity_id = N’USER’) AND (dbo.Entity_Relation.relation_name = N’Speicherberechtigte’) AND (dbo.User_Group.id = N’HW eingeschränkt verwalten’)
and
dbo.User_Table.id = @BenutzerID
)

END

4. auf dem SQL-Server folgende Funktion erstellen zur Prüfung des CI-Typs
USE [POBG6]
GO
/****** Object: UserDefinedFunction [dbo].[LRA_CI_Typ] Script Date: 18.09.2020 12:15:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

— =============================================
— Author: Bruno Büchele
— Create date: 07.09.2020
— Description: prüft ab, ob Benutzer ein CI mit einem bestimmten ci-Typ speichern darf
— =============================================
ALTER FUNCTION [dbo].[LRA_CI_Typ]
(
— Add the parameters for the function here
@CIType nvarchar(255),
@BenutzerID nvarchar(255),
@CiType_vorher nvarchar(255)
)
RETURNS int
AS
BEGIN

declare @Result int;
declare @CIType_alt int = 0;
declare @Step_1 int;
declare @Step_2 int;
— prüfen, ob dieser Benutzer für Typ hinterlegt ist
SELECT @Step_1= count( dbo.User_Table.user_pk)
FROM dbo.Entity_Relation RIGHT OUTER JOIN
dbo.User_Table ON dbo.Entity_Relation.trail_pk = dbo.User_Table.user_pk FULL OUTER JOIN
dbo.User_User_Group FULL OUTER JOIN
dbo.User_Group ON dbo.User_User_Group.user_group_pk = dbo.User_Group.user_group_pk ON dbo.User_Table.user_pk = dbo.User_User_Group.user_pk

WHERE (dbo.Entity_Relation.entity_id = N’USER’) AND (dbo.Entity_Relation.relation_name = N’Speicherberechtigte’) AND (dbo.User_Group.id = N’HW eingeschränkt verwalten’)
and dbo.Entity_Relation.lead_pk = @CIType AND
(dbo.User_Table.id = @BenutzerID);
— prüfen, ob dieser Benutzer auch für Vorgänger hinterlegt ist
–SELECT @CIType_alt = dbo.Configuration_Item_Type.ci_type_pk
–FROM dbo.Configuration_Item INNER JOIN
— dbo.Configuration_Item_Type ON dbo.Configuration_Item.ci_type_pk = dbo.Configuration_Item_Type.ci_type_pk
–WHERE (dbo.Configuration_Item.id = @CiType_vorher)

— if @CIType_alt <> 0
if @CiType_vorher not like ‘–‘
Begin
select @citype_vorher = left(@CiType_vorher ,len(@CiType_vorher) – 2);
SELECT @Step_2= count( dbo.User_Table.user_pk)
FROM dbo.Entity_Relation RIGHT OUTER JOIN
dbo.User_Table ON dbo.Entity_Relation.trail_pk = dbo.User_Table.user_pk FULL OUTER JOIN
dbo.User_User_Group FULL OUTER JOIN
dbo.User_Group ON dbo.User_User_Group.user_group_pk = dbo.User_Group.user_group_pk ON dbo.User_Table.user_pk = dbo.User_User_Group.user_pk

WHERE (dbo.Entity_Relation.entity_id = N’USER’) AND (dbo.Entity_Relation.relation_name = N’Speicherberechtigte’) AND (dbo.User_Group.id = N’HW eingeschränkt verwalten’)
and dbo.Entity_Relation.lead_pk = @CIType_vorher AND
(dbo.User_Table.id = @BenutzerID);
End
else
set @step_2 = 1;

if @Step_1 + @Step_2 = 2
set @Result = 1
else
set @Result = 0;

return (@result);

END

5. in POB im EnterpriseManager eine Condition erstellen für Insert

6. in POB EM eine weitere Concition für Update
dies ließ sich leider für mich nicht anders lösen, da mir beim Insert ein Parameter fehlt bzw. einen Datanbankfehler verursacht

7. im EM noch eine Validation für Insert anlegen

8. im EM noch eine Validation für Update anlegen

9. im EM noch einen Folder für Speicherberechtigte anlegen

10. jetzt kann beim CI-Typ ein Speicherberechtigtet hinterlegt werden

dieser darf nun nur die CI-Types anlegen und ändern, bei denen er hinterlegt ist

Die Screenshots konnte ich leider nicht anfügen, da ich diese wohl zuerst auf einen entsprechenden Server hochladen müsste.
Wer sie möchte, bitte melden.