📄 cs_section_permission_createupdatedelete.prc
字号:
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[cs_Section_Permission_CreateUpdateDelete]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[cs_Section_Permission_CreateUpdateDelete]
GO
CREATE procedure [dbo].cs_Section_Permission_CreateUpdateDelete
(
@SettingsID int,
@SectionID int,
@RoleID uniqueidentifier,
@Action int,
@AllowMask bigint,
@DenyMask bigint,
@ApplicationType smallint
)
AS
SET Transaction Isolation Level Read UNCOMMITTED
BEGIN
-- Create
IF @Action = 0
BEGIN
if( @SectionID <> -1 )
begin
-- Check if an entry already exists
IF EXISTS (SELECT SectionID FROM cs_SectionPermissions WHERE SectionID = @SectionID AND RoleID = @RoleID )
exec cs_Section_Permission_CreateUpdateDelete @SettingsID, @SectionID, @RoleID, 1, @AllowMask, @DenyMask, @ApplicationType
ELSE
INSERT INTO
cs_SectionPermissions (SettingsID, SectionID, RoleID, AllowMask, DenyMask)
VALUES (
@SettingsID,
@SectionID,
@RoleID,
@AllowMask,
@DenyMask
)
if not exists( select * from cs_ProductPermissions where SettingsID = @SettingsID and RoleID = @RoleID and ApplicationType = @ApplicationType)
insert into cs_ProductPermissions ( SettingsID, RoleID, AllowMask, DenyMask, ApplicationType )
values( @SettingsID, @RoleID, 0x0, 0x0, @ApplicationType )
end
else
begin
insert into cs_ProductPermissions ( SettingsID, RoleID, AllowMask, DenyMask, ApplicationType )
values( @SettingsID, @RoleID, @AllowMask, @DenyMask, @ApplicationType )
end
END
-- UPDATE
ELSE IF @Action = 1
BEGIN
if( @SectionID <> -1 )
begin
IF NOT EXISTS (SELECT SectionID FROM cs_SectionPermissions WHERE SectionID = @SectionID AND RoleID = @RoleID and SettingsID = @SettingsID )
exec cs_Section_Permission_CreateUpdateDelete @SettingsID, @SectionID, @RoleID, 0, @AllowMask, @DenyMask, @ApplicationType
ELSE
UPDATE
cs_SectionPermissions
SET
AllowMask = @AllowMask,
DenyMask = @DenyMask
WHERE
SectionID = @SectionID AND
RoleID = @RoleID and SettingsID = @SettingsID
if not exists( select * from cs_ProductPermissions where SettingsID = @SettingsID and RoleID = @RoleID and ApplicationType = @ApplicationType)
insert into cs_ProductPermissions ( SettingsID, RoleID, AllowMask, DenyMask, ApplicationType )
values( @SettingsID, @RoleID, 0x0, 0x0, @ApplicationType )
end
else
begin
if not exists( select * from cs_ProductPermissions where RoleID = @RoleID and SettingsID = @SettingsID and ApplicationType = @ApplicationType )
exec cs_Section_Permission_CreateUpdateDelete @SettingsID, @SectionID, @RoleID, 0, @AllowMask, @DenyMask, @ApplicationType
else
UPDATE
cs_ProductPermissions
SET
AllowMask = @AllowMask,
DenyMask = @DenyMask
WHERE
RoleID = @RoleID and SettingsID = @SettingsID and ApplicationType = @ApplicationType
end
-- Update users subscriptions
IF @SectionID <> -1
EXEC cs_system_UpdateSubscriptions @RoleID, @SectionID, @SettingsID
END
ELSE IF @Action = 2
BEGIN
if( @SectionID <> -1 )
DELETE cs_SectionPermissions WHERE SectionID = @SectionID AND RoleID = @RoleID and SettingsID = @SettingsID
else
begin
DELETE cs_SectionPermissions where RoleID = @RoleID and SettingsID = @SettingsID
DELETE cs_ProductPermissions WHERE RoleID = @RoleID and SettingsID = @SettingsID and ApplicationType = @ApplicationType
end
-- Update users subscriptions
IF @SectionID <> -1
EXEC cs_system_UpdateSubscriptions @RoleID, @SectionID, @SettingsID
END
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
GRANT EXECUTE ON [dbo].[cs_Section_Permission_CreateUpdateDelete] TO PUBLIC
GO
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -