
[dbo].[SetModelItemPolicy]
CREATE PROCEDURE [dbo].[SetModelItemPolicy]
@CatalogItemID as uniqueidentifier,
@ModelItemID as nvarchar(425),
@PrimarySecDesc as image,
@SecondarySecDesc as ntext = NULL,
@XmlPolicy as ntext,
@AuthType as int,
@PolicyID uniqueidentifier OUTPUT
AS
SELECT @PolicyID = (SELECT PolicyID FROM ModelItemPolicy WHERE CatalogItemID = @CatalogItemID AND ModelItemID = @ModelItemID )
IF (@PolicyID IS NULL)
BEGIN
SET @PolicyID = newid()
INSERT INTO Policies (PolicyID, PolicyFlag)
VALUES (@PolicyID, 2)
INSERT INTO SecData (SecDataID, PolicyID, AuthType, XmlDescription, NTSecDescPrimary, NtSecDescSecondary)
VALUES (newid(), @PolicyID, @AuthType, @XmlPolicy, @PrimarySecDesc, @SecondarySecDesc)
INSERT INTO ModelItemPolicy (ID, CatalogItemID, ModelItemID, PolicyID)
VALUES (newid(), @CatalogItemID, @ModelItemID, @PolicyID)
END
ELSE
BEGIN
DECLARE @SecDataID as uniqueidentifier
SELECT @SecDataID = (SELECT SecDataID FROM SecData WHERE PolicyID = @PolicyID and AuthType = @AuthType)
IF (@SecDataID IS NULL)
BEGIN
INSERT INTO SecData (SecDataID, PolicyID, AuthType, XmlDescription, NTSecDescPrimary, NtSecDescSecondary)
VALUES (newid(), @PolicyID, @AuthType, @XmlPolicy, @PrimarySecDesc, @SecondarySecDesc)
END
ELSE
BEGIN
UPDATE SecData SET
XmlDescription = @XmlPolicy,
NtSecDescPrimary = @PrimarySecDesc,
NtSecDescSecondary = @SecondarySecDesc
WHERE SecData.PolicyID = @PolicyID
AND AuthType = @AuthType
END
END
DELETE FROM PolicyUserRole WHERE PolicyID = @PolicyID
GO
GRANT EXECUTE ON [dbo].[SetModelItemPolicy] TO [RSExecRole]
GO