DECLARE @STATE AS VARCHAR(4000), @SJ_USERID INT
SELECT @SJ_USERID=1
/*
Security User by groups
*/
-- delete not existed groups
DELETE FROM [DBO].[SECURITY_JOINUSERSGROUPS] WHERE
[SJ_USERID]=@SJ_USERID AND [SJ_GROUPID] NOT IN (1,2)
-- add new groups
INSERT INTO [DBO].[SECURITY_JOINUSERSGROUPS] ([SJ_USERID], [SJ_GROUPID])
SELECT @SJ_USERID, GP.SG_GROUPID FROM [DBO].[SECURITY_GROUPS] AS GP WHERE GP.SG_GROUPID IN (1,2)
AND GP.SG_GROUPID NOT IN (SELECT DISTINCT [SJ_GROUPID] FROM [DBO].[SECURITY_JOINUSERSGROUPS] WHERE [SJ_USERID]=@SJ_USERID)
/*
Security Processes by groups
*/
DECLARE @SR_GROUPID INT
SELECT @SR_GROUPID=1
-- delete not existed process for the specific group
DELETE FROM [dbo].[SECURITY_RIGHTS] WHERE
[SR_GROUPID]=@SR_GROUPID AND [SR_PROCESS] NOT IN (1,2,3,4)
-- add new processes for the specific group
INSERT INTO [DBO].[SECURITY_RIGHTS] ([SR_GROUPID],[SR_PROCESS])
SELECT @SR_GROUPID, PR.[SP_SPID] FROM [dbo].[SECURITY_PROCESSES] AS PR WHERE PR.SP_SPID IN (1,2,3,4)
AND PR.SP_SPID NOT IN (SELECT DISTINCT [SR_PROCESS] FROM [DBO].[SECURITY_RIGHTS] WHERE [SR_GROUPID]=@SR_GROUPID)
/*
Security Processes by user
*/
DECLARE @SR_USERID INT
SELECT @SR_USERID=1
-- delete not existed process for the specific user
DELETE FROM [dbo].[SECURITY_RIGHTS] WHERE
[SR_USERID]=@SR_USERID AND [SR_PROCESS] NOT IN (3,4)
-- add new processes for the specific user
INSERT INTO [DBO].[SECURITY_RIGHTS] ([SR_USERID],[SR_PROCESS])
SELECT @SR_USERID, PR.[SP_SPID] FROM [dbo].[SECURITY_PROCESSES] AS PR WHERE PR.SP_SPID IN (3,4)
AND PR.SP_SPID NOT IN (SELECT DISTINCT [SR_PROCESS] FROM [DBO].[SECURITY_RIGHTS] WHERE [SR_USERID]=@SR_USERID)
-- 19/02/2009 15:19:05: post edited by sergey.