USP_SECURITY_SYSTEMROLE_LOADFROMXMLDOCUMENT
Adds or modifies the tasks, queryviews, and features assigned to a System Role from a document created via the UFN_SECURITY_SYSTEMROLE_TOXMLDOCUMENT function.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SYSTMEMROLEXML | xml | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_SECURITY_SYSTEMROLE_LOADFROMXMLDOCUMENT
@SYSTMEMROLEXML xml,
@CHANGEAGENTID uniqueidentifier=null
with execute as owner
as
/*
Adds or modifies the tasks, queryviews, and features
assigned to a System Role from a document created
via the UFN_SECURITY_SYSTEMROLE_TOXMLDOCUMENT function.
*/
set nocount on;
begin try
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
--Cache CONTEXT INFO
declare @contextCache varbinary(128);
set @contextCache = CONTEXT_INFO();
if not @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID;
declare @SYSTEMROLEID uniqueidentifier ;
set @SYSTEMROLEID=
@SYSTMEMROLEXML.value(
'(SystemRole/RecordInformation/ID)[1]'
,'uniqueidentifier')
if @SYSTEMROLEID is null
raiserror('No value found at SystemRole/RecordInformation/ID ',16,10);
declare @NAME nvarchar(255) ;
set @NAME=
@SYSTMEMROLEXML.value(
'(SystemRole/RecordInformation/Name)[1]'
,'nvarchar(255)')
if @NAME is null
raiserror('No value found at SystemRole/RecordInformation/Name ',16,11);
if LEN(@NAME)=0
raiserror('An empty element was found at SystemRole/RecordInformation/Name . Name is required.',16,12);
declare @DESCRIPTION nvarchar(max) ;
set @DESCRIPTION=
COALESCE(@SYSTMEMROLEXML.value(
'(SystemRole/RecordInformation/Description)[1]'
,'nvarchar(max)'),'');
if exists (select ID from dbo.SYSTEMROLE where ID=@SYSTEMROLEID)
begin
update dbo.SYSTEMROLE
set NAME=@NAME,DESCRIPTION=@DESCRIPTION,CHANGEDBYID=@CHANGEAGENTID,DATECHANGED=GETDATE()
where ID=@SYSTEMROLEID;
end
else
begin
insert into dbo.SYSTEMROLE
(ID,NAME,DESCRIPTION,ADDEDBYID,CHANGEDBYID)
values (@SYSTEMROLEID,@NAME,@DESCRIPTION,@CHANGEAGENTID,@CHANGEAGENTID);
end
declare @MISSINGFEATUREID nvarchar(max);
declare @perm table (FEATUREID uniqueidentifier not null,GRANTORDENY bit not null default 0);
--Start Tasks
--Tasks need to go first because triggers fire that
--assign rights to features thay may need to get overwritten by deny features in the document.
declare @tasks table (TASKID uniqueidentifier not null, DISPLAYONHOMEPAGE bit null)
insert into @tasks (TASKID, DISPLAYONHOMEPAGE)
select
T.c.value('(TaskID)[1]','uniqueidentifier'),
T.c.value('(DisplayOnHomePage)[1]','bit')
from @SYSTMEMROLEXML.nodes('SystemRole/Tasks/Task') T(c);
delete from dbo.SYSTEMROLETASK
where SYSTEMROLEID=@SYSTEMROLEID;
insert into dbo.SYSTEMROLETASK
(SYSTEMROLEID,TASKID,DISPLAYONHOMEPAGE,ADDEDBYID,CHANGEDBYID)
select distinct
@SYSTEMROLEID,
TASKID,
coalesce(DISPLAYONHOMEPAGE, 0),
@CHANGEAGENTID,
@CHANGEAGENTID
from @tasks t
inner join dbo.TASKCATALOG on t.TASKID = TASKCATALOG.ID;
-- End Tasks
--Forms
insert into @perm (FEATUREID,GRANTORDENY)
select
T.c.value('(FeatureID)[1]','uniqueidentifier') ,
case T.c.value('(GrantState)[1]','nvarchar(5)') when 'Grant' then
1 else 0 end
from @SYSTMEMROLEXML.nodes('SystemRole/FeaturePerms/DataForms/DataForm') T(c);
delete from dbo.SYSTEMROLEPERM_DATAFORMINSTANCE
where SYSTEMROLEID=@SYSTEMROLEID;
insert into dbo.SYSTEMROLEPERM_DATAFORMINSTANCE
(SYSTEMROLEID,DATAFORMINSTANCECATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID)
select distinct
@SYSTEMROLEID,
FEATUREID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID
from @perm p
inner join dbo.DATAFORMINSTANCECATALOG on p.FEATUREID = DATAFORMINSTANCECATALOG.ID;
--Data Lists
delete from dbo.SYSTEMROLEPERM_DATALIST
where SYSTEMROLEID=@SYSTEMROLEID;
delete from @perm;
insert into @perm (FEATUREID,GRANTORDENY)
select
T.c.value('(FeatureID)[1]','uniqueidentifier') ,
case T.c.value('(GrantState)[1]','nvarchar(5)') when 'Grant' then
1 else 0 end
FROM @SYSTMEMROLEXML.nodes('SystemRole/FeaturePerms/DataLists/DataList') T(c);
insert into dbo.SYSTEMROLEPERM_DATALIST
(SYSTEMROLEID,DATALISTCATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID)
select distinct
@SYSTEMROLEID,
FEATUREID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID
from @perm p
inner join dbo.DATALISTCATALOG on p.FEATUREID = DATALISTCATALOG.ID;
--RecordOperations
delete from dbo.SYSTEMROLEPERM_RECORDOPERATION
where SYSTEMROLEID=@SYSTEMROLEID;
delete from @perm;
insert into @perm (FEATUREID,GRANTORDENY)
select
T.c.value('(FeatureID)[1]','uniqueidentifier') ,
case T.c.value('(GrantState)[1]','nvarchar(5)') when 'Grant' then
1 else 0 end
from @SYSTMEMROLEXML.nodes('SystemRole/FeaturePerms/RecordOperations/RecordOperation') T(c);
insert into dbo.SYSTEMROLEPERM_RECORDOPERATION
(SYSTEMROLEID,RECORDOPERATIONCATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID)
select distinct
@SYSTEMROLEID,
FEATUREID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID
from @perm p
inner join dbo.RECORDOPERATIONCATALOG on p.FEATUREID = RECORDOPERATIONCATALOG.ID;
--BusinessProcesses
delete from dbo.SYSTEMROLEPERM_BUSINESSPROCESS
where SYSTEMROLEID=@SYSTEMROLEID;
delete from @perm;
insert into @perm (FEATUREID,GRANTORDENY)
select
T.c.value('(FeatureID)[1]','uniqueidentifier') ,
case T.c.value('(GrantState)[1]','nvarchar(5)') when 'Grant' then
1 else 0 end
from @SYSTMEMROLEXML.nodes('SystemRole/FeaturePerms/BusinessProcesses/BusinessProcess') T(c);
insert into dbo.SYSTEMROLEPERM_BUSINESSPROCESS
(SYSTEMROLEID,BUSINESSPROCESSCATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID)
SELECT DISTINCT
@SYSTEMROLEID,
FEATUREID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID
from @perm p
inner join dbo.BUSINESSPROCESSCATALOG on p.FEATUREID = BUSINESSPROCESSCATALOG.ID;
--Dashboards
DELETE FROM dbo.SYSTEMROLEPERM_DASHBOARD
WHERE SYSTEMROLEID=@SYSTEMROLEID;
delete from @perm;
insert into @perm (FEATUREID,GRANTORDENY)
select
T.c.value('(FeatureID)[1]','uniqueidentifier') ,
case T.c.value('(GrantState)[1]','nvarchar(5)') when 'Grant' then
1 else 0 end
from @SYSTMEMROLEXML.nodes('SystemRole/FeaturePerms/Dashboards/Dashboard') T(c);
insert into dbo.SYSTEMROLEPERM_DASHBOARD
(SYSTEMROLEID,DASHBOARDCATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID)
select distinct
@SYSTEMROLEID,
FEATUREID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID
from @perm p
inner join dbo.DASHBOARDCATALOG on p.FEATUREID = DASHBOARDCATALOG.ID;
--QueryViews
delete from dbo.SYSTEMROLEPERM_QUERYVIEW
where SYSTEMROLEID=@SYSTEMROLEID;
delete from @perm;
insert into @perm (FEATUREID,GRANTORDENY)
select
T.c.value('(FeatureID)[1]','uniqueidentifier') ,
CASE T.c.value('(GrantState)[1]','nvarchar(5)') when 'Grant' then
1 else 0 end
from @SYSTMEMROLEXML.nodes('SystemRole/FeaturePerms/QueryViews/QueryView') T(c);
insert into dbo.SYSTEMROLEPERM_QUERYVIEW
(SYSTEMROLEID,QUERYVIEWCATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID)
select distinct
@SYSTEMROLEID,
FEATUREID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID
from @perm p
inner join dbo.QUERYVIEWCATALOG on p.FEATUREID = QUERYVIEWCATALOG.ID;
--Smart Queries
delete from dbo.SYSTEMROLEPERM_SMARTQUERY
where SYSTEMROLEID = @SYSTEMROLEID;
delete from @perm
insert into @perm (FEATUREID, GRANTORDENY)
select
T.c.value('(FeatureID)[1]','uniqueidentifier'),
case T.c.value('(GrantState)[1]','nvarchar(5)') when 'Grant' then 1 else 0 end
from @SYSTMEMROLEXML.nodes('SystemRole/FeaturePerms/SmartQueries/SmartQuery') T(c);
insert into dbo.SYSTEMROLEPERM_SMARTQUERY (SYSTEMROLEID,SMARTQUERYCATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID)
select
@SYSTEMROLEID,
FEATUREID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID
from @perm p
inner join dbo.SMARTQUERYCATALOG on p.FEATUREID = SMARTQUERYCATALOG.ID;
--End Smart Queries
--KPIs
delete from dbo.SYSTEMROLEPERM_KPI
where SYSTEMROLEID = @SYSTEMROLEID;
delete from @perm
insert into @perm (FEATUREID, GRANTORDENY)
select
T.c.value('(FeatureID)[1]','uniqueidentifier'),
case T.c.value('(GrantState)[1]','nvarchar(5)') when 'Grant' then 1 else 0 end
from @SYSTMEMROLEXML.nodes('SystemRole/FeaturePerms/Kpis/Kpi') T(c);
insert into dbo.SYSTEMROLEPERM_KPI (SYSTEMROLEID,KPICATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID)
select
@SYSTEMROLEID,
FEATUREID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID
from @perm p
inner join dbo.KPICATALOG on p.FEATUREID = KPICATALOG.ID;
--End KPIs
-- Code Tables
delete from dbo.SYSTEMROLEPERM_CODETABLE
where SYSTEMROLEID = @SYSTEMROLEID;
declare @CODETABLEPERMS table (CODETABLEID uniqueidentifier not null, ADDPERMISSIONCODE tinyint, UPDATEPERMISSIONCODE tinyint, DELETEPERMISSIONCODE tinyint)
insert into @CODETABLEPERMS (CODETABLEID, ADDPERMISSIONCODE, UPDATEPERMISSIONCODE, DELETEPERMISSIONCODE)
select
T.c.value('(CodeTableID)[1]', 'uniqueidentifier'),
case T.c.value('(AddPermission)[1]', 'nvarchar(7)') when 'NotSet' then 0 when 'Granted' then 1 else 2 end,
case T.c.value('(UpdatePermission)[1]', 'nvarchar(7)') when 'NotSet' then 0 when 'Granted' then 1 else 2 end,
case T.c.value('(DeletePermission)[1]', 'nvarchar(7)') when 'NotSet' then 0 when 'Granted' then 1 else 2 end
from @SYSTMEMROLEXML.nodes('SystemRole/CodeTables/CodeTable') T(c);
--Delete all the permission entries where no permission is actually set
delete from @CODETABLEPERMS
where ADDPERMISSIONCODE = 0 and UPDATEPERMISSIONCODE = 0 and DELETEPERMISSIONCODE = 0;
insert into dbo.SYSTEMROLEPERM_CODETABLE
(SYSTEMROLEID, CODETABLECATALOGID, ADDPERMISSIONCODE, UPDATEPERMISSIONCODE, DELETEPERMISSIONCODE, ADDEDBYID, CHANGEDBYID)
select distinct
@SYSTEMROLEID,
CODETABLEID,
ADDPERMISSIONCODE,
UPDATEPERMISSIONCODE,
DELETEPERMISSIONCODE,
@CHANGEAGENTID,
@CHANGEAGENTID
from @CODETABLEPERMS ctp
inner join dbo.CODETABLECATALOG on ctp.CODETABLEID = CODETABLECATALOG.ID
--End Code Tables
--Feature groups
delete from dbo.SYSTEMROLEPERM_FEATUREGROUP
where SYSTEMROLEID = @SYSTEMROLEID;
delete from @perm
insert into @perm (FEATUREID, GRANTORDENY)
select
T.c.value('(FeatureGroupCatalogID)[1]','uniqueidentifier'),
case T.c.value('(GrantState)[1]','nvarchar(5)') when 'Grant' then 1 else 0 end
from @SYSTMEMROLEXML.nodes('SystemRole/FeatureGroups/FeatureGroup') T(c);
insert into dbo.SYSTEMROLEPERM_FEATUREGROUP (SYSTEMROLEID,FEATUREGROUPCATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID)
select
@SYSTEMROLEID,
FEATUREID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID
from @perm p
inner join dbo.FEATUREGROUPCATALOG on p.FEATUREID = FEATUREGROUPCATALOG.ID;
--End feature groups
/*
Constituent security has been moved down to the system role application user level
--Ring Fence
declare @CONSTIT_SECURITY_RINGFENCENAME nvarchar(100);
set @CONSTIT_SECURITY_RINGFENCENAME=@SYSTMEMROLEXML.value('(SystemRole/ConstitSecurityRingFence/Name)[1]','nvarchar(100)');
if @CONSTIT_SECURITY_RINGFENCENAME is not null
begin
-- Remove any existing record associated with the system role in SYSTEMROLE_CONSTIT_SECURITY_ATTRIBUTE
delete from dbo.SYSTEMROLE_CONSTIT_SECURITY_ATTRIBUTE
where ID = @SYSTEMROLEID
if @CONSTIT_SECURITY_RINGFENCENAME = 'Records with no groups assigned'
begin
-- If the role can only access records outside of ringfences,
-- then simply update the role's record security mode accordingly
update dbo.SYSTEMROLE
set RECORDSECURITYMODE = 1
where ID = @SYSTEMROLEID;
end
else
begin
-- Otherwise, create the specified security attribute and
-- assign it to the role.
declare @CONSTIT_SECURITY_RINGFENCEID uniqueidentifier;
select @CONSTIT_SECURITY_RINGFENCEID = ID
from dbo.CONSTIT_SECURITY_ATTRIBUTE
where NAME = @CONSTIT_SECURITY_RINGFENCENAME;
if @CONSTIT_SECURITY_RINGFENCEID is null
begin
declare @CONSTIT_SECURITY_RINGFENCEDESCRIPTION nvarchar(255);
set @CONSTIT_SECURITY_RINGFENCEDESCRIPTION=coalesce(@SYSTMEMROLEXML.value('(SystemRole/ConstitSecurityRingFence/Description)[1]','nvarchar(255)'),'');
set @CONSTIT_SECURITY_RINGFENCEID = newid();
insert into dbo.CONSTIT_SECURITY_ATTRIBUTE
(ID,NAME,DESCRIPTION,ADDEDBYID,CHANGEDBYID)
values
(@CONSTIT_SECURITY_RINGFENCEID,@CONSTIT_SECURITY_RINGFENCENAME,@CONSTIT_SECURITY_RINGFENCEDESCRIPTION,@CHANGEAGENTID,@CHANGEAGENTID);
end
insert into dbo.SYSTEMROLE_CONSTIT_SECURITY_ATTRIBUTE
(ID,CONSTIT_SECURITY_ATTRIBUTEID,ADDEDBYID,CHANGEDBYID)
values
(@SYSTEMROLEID,@CONSTIT_SECURITY_RINGFENCEID,@CHANGEAGENTID,@CHANGEAGENTID);
end
end
--End Ring Fence
*/
/*
Site security has been moved down to the system role application user level
--Site Security
declare @SITE nvarchar(1024);
set @SITE = @SYSTMEMROLEXML.value('(SystemRole/SiteSecurity)[1]', 'nvarchar(1024)');
if @SITE is not null
begin
if @SITE = 'Records with no site'
begin
-- If the role can only access records that are not
-- assigned to sites, then simply update the role's
-- site security mode accordingly
update dbo.SYSTEMROLE
set SITESECURITYMODE = 1
where ID = @SYSTEMROLEID;
end
else
begin
-- Otherwise, set the role's site id
declare @SITEID uniqueidentifier;
select @SITEID = ID
from dbo.SITE
where NAME = @SITE;
-- Unlike constituent ring fences, a site
-- that does not exist is not created implicitly.
-- Instead, the role is loaded with no site
-- affiliation.
if @SITEID is not null
begin
update dbo.SYSTEMROLE
set SITEID = @SITEID
where ID = @SYSTEMROLEID;
end
end
end
--End Site Security
*/
--Batch Types
delete from @perm;
insert into @perm (FEATUREID,GRANTORDENY)
select
T.c.value('(BatchTypeID)[1]','uniqueidentifier') ,
case T.c.value('(GrantState)[1]','nvarchar(5)') when 'Grant' then
1 else 0 end
from @SYSTMEMROLEXML.nodes('SystemRole/BatchTypes/BatchType') T(c);
delete from dbo.SYSTEMROLEPERM_BATCHTYPE
where SYSTEMROLEID=@SYSTEMROLEID;
insert into dbo.SYSTEMROLEPERM_BATCHTYPE
(SYSTEMROLEID,BATCHTYPECATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID)
select distinct
@SYSTEMROLEID,
FEATUREID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID
from @perm p
inner join dbo.BATCHTYPECATALOG on p.FEATUREID = BATCHTYPECATALOG.ID;
--End Batch Types
--Start KPI Instances
declare @kpiinstances table (KPIINSTANCEID uniqueidentifier not null)
insert into @kpiinstances (KPIINSTANCEID)
select
T.c.value('(KpiInstanceID)[1]','uniqueidentifier')
from @SYSTMEMROLEXML.nodes('SystemRole/KpiInstances/KpiInstance') T(c);
delete from dbo.SYSTEMROLEKPIINSTANCE
where SYSTEMROLEID=@SYSTEMROLEID;
insert into dbo.SYSTEMROLEKPIINSTANCE
(SYSTEMROLEID,KPIINSTANCEID,ADDEDBYID,CHANGEDBYID)
select distinct
@SYSTEMROLEID,
KPIINSTANCEID,
@CHANGEAGENTID,
@CHANGEAGENTID
from @kpiinstances t
inner join dbo.KPIINSTANCE on t.KPIINSTANCEID = KPIINSTANCE.ID;
-- End KPI Instances
--Report params
delete from dbo.SYSTEMROLEPERM_REPORT
where SYSTEMROLEID=@SYSTEMROLEID;
delete from @perm;
insert into @perm (FEATUREID,GRANTORDENY)
select
T.c.value('(FeatureID)[1]','uniqueidentifier') ,
case T.c.value('(GrantState)[1]','nvarchar(5)') when 'Grant' then
1 else 0 end
FROM @SYSTMEMROLEXML.nodes('SystemRole/FeaturePerms/ReportParams/ReportParam') T(c);
insert into dbo.SYSTEMROLEPERM_REPORT
(SYSTEMROLEID,REPORTCATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID)
select distinct
@SYSTEMROLEID,
FEATUREID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID
from @perm p
inner join dbo.REPORTCATALOG on p.FEATUREID = REPORTCATALOG.ID;
--End report params
--Begin System Privileges
delete from dbo.SYSTEMROLEPERM_SYSTEMPRIVILEGE
where SYSTEMROLEID=@SYSTEMROLEID;
delete from @perm;
insert into @perm (FEATUREID,GRANTORDENY)
select
T.c.value('(FeatureID)[1]','uniqueidentifier') ,
case T.c.value('(GrantState)[1]','nvarchar(5)') when 'Grant' then
1 else 0 end
FROM @SYSTMEMROLEXML.nodes('SystemRole/FeaturePerms/SysPrivs/SysPriv') T(c);
insert into dbo.SYSTEMROLEPERM_SYSTEMPRIVILEGE
(SYSTEMROLEID,SYSTEMPRIVILEGECATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID)
select distinct
@SYSTEMROLEID,
FEATUREID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID
from @perm p
inner join dbo.SYSTEMPRIVILEGECATALOG on p.FEATUREID = SYSTEMPRIVILEGECATALOG.ID;
--End System Privileges
--Begin Search Lists
delete from dbo.SYSTEMROLEPERM_SEARCHLIST
where SYSTEMROLEID=@SYSTEMROLEID;
delete from @perm;
insert into @perm (FEATUREID,GRANTORDENY)
select
T.c.value('(FeatureID)[1]','uniqueidentifier') ,
case T.c.value('(GrantState)[1]','nvarchar(5)') when 'Grant' then
1 else 0 end
FROM @SYSTMEMROLEXML.nodes('SystemRole/FeaturePerms/SearchLists/SearchList') T(c);
insert into dbo.SYSTEMROLEPERM_SEARCHLIST
(SYSTEMROLEID,SEARCHLISTCATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID)
select distinct
@SYSTEMROLEID,
FEATUREID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID
from @perm p
inner join dbo.SEARCHLISTCATALOG on p.FEATUREID = SEARCHLISTCATALOG.ID;
--End Search Lists
--Begin Map Entities
delete from dbo.SYSTEMROLEPERM_MAPENTITY
where SYSTEMROLEID=@SYSTEMROLEID;
delete from @perm;
insert into @perm (FEATUREID,GRANTORDENY)
select
T.c.value('(FeatureID)[1]','uniqueidentifier') ,
case T.c.value('(GrantState)[1]','nvarchar(5)') when 'Grant' then
1 else 0 end
FROM @SYSTMEMROLEXML.nodes('SystemRole/FeaturePerms/MapEntities/MapEntity') T(c);
insert into dbo.SYSTEMROLEPERM_MAPENTITY
(SYSTEMROLEID,MAPENTITYCATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID)
select distinct
@SYSTEMROLEID,
FEATUREID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID
from @perm p
inner join dbo.MAPENTITYCATALOG on p.FEATUREID = MAPENTITYCATALOG.ID;
--End Map Entities
--Begin Code Table Entries
declare @codetableentry table (CODETABLECATALOGID uniqueidentifier not null,CODETABLEENTRYID uniqueidentifier not null,ISDENIED bit not null default 1);
insert into @codetableentry (CODETABLECATALOGID,CODETABLEENTRYID,ISDENIED)
select
T.c.value('(CodeTableCatalogID)[1]','uniqueidentifier') ,
T.c.value('(CodeTableEntryID)[1]','uniqueidentifier') ,
case T.c.value('(GrantState)[1]','nvarchar(5)') when 'Grant' then
0 else 1 end
from @SYSTMEMROLEXML.nodes('SystemRole/CodeTableEntries/CodeTableEntry') T(c);
delete from dbo.SYSTEMROLEPERM_CODETABLEENTRY
where SYSTEMROLEID=@SYSTEMROLEID;
insert into dbo.SYSTEMROLEPERM_CODETABLEENTRY
(SYSTEMROLEID,CODETABLECATALOGID,CODETABLEENTRYID,ISDENIED,ADDEDBYID,CHANGEDBYID)
select distinct
@SYSTEMROLEID,
c.CODETABLECATALOGID,
c.CODETABLEENTRYID,
c.ISDENIED,
@CHANGEAGENTID,
@CHANGEAGENTID
from @codetableentry c
inner join dbo.CODETABLECATALOG on c.CODETABLECATALOGID = CODETABLECATALOG.ID;
--End Code Table Entries
end try
begin catch
--Restore CONTEXT_INFO
if not @contextCache is null
set CONTEXT_INFO @contextCache;
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
--Restore CONTEXT_INFO
if not @contextCache is null
set CONTEXT_INFO @contextCache;
return 0;