UFN_SECURITY_SYSTEMROLE_TOXMLDOCUMENT
Generates an Xml document based on assigned permissions/queryviews/tasks that can be fed to USP_SECURITY_SYSTEMROLE_LOADFROMXMLDOCUMENT
Return
Return Type |
---|
xml |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SYSTEMROLEID | uniqueidentifier | IN |
Definition
Copy
CREATE FUNCTION dbo.UFN_SECURITY_SYSTEMROLE_TOXMLDOCUMENT(@SYSTEMROLEID uniqueidentifier)
returns xml
as
/*
Generates an Xml document based on assigned permissions/queryviews/tasks that can be fed to USP_SECURITY_SYSTEMROLE_LOADFROMXMLDOCUMENT
*/
BEGIN
declare @r xml;
declare @recordInfo xml;
set @recordInfo=
(
select ID,[NAME] as [Name], DESCRIPTION as Description
from dbo.SYSTEMROLE where ID=@SYSTEMROLEID
for xml raw ('RecordInformation'),type,elements
);
declare @tasks xml;
set @tasks=(
select TASKID AS TaskID, DISPLAYONHOMEPAGE as DisplayOnHomePage
from dbo.SYSTEMROLETASK
WHERE SYSTEMROLEID=@SYSTEMROLEID
order by convert(nvarchar(36), TASKID)
for xml raw('Task'),type,elements,root('Tasks')
)
;
declare @featurePerms xml;
declare @forms xml;
set @forms=(
select DATAFORMINSTANCECATALOGID AS FeatureID,
case GRANTORDENY WHEN 1 THEN 'Grant' ELSE 'Deny' END as GrantState
from dbo.SYSTEMROLEPERM_DATAFORMINSTANCE
WHERE SYSTEMROLEID=@SYSTEMROLEID
order by convert(nvarchar(36), DATAFORMINSTANCECATALOGID)
for xml raw('DataForm'),type,elements,root('DataForms')
)
;
declare @recordOps xml;
set @recordOps=(
select RECORDOPERATIONCATALOGID AS FeatureID,
case GRANTORDENY WHEN 1 THEN 'Grant' ELSE 'Deny' END as GrantState
from dbo.SYSTEMROLEPERM_RECORDOPERATION
WHERE SYSTEMROLEID=@SYSTEMROLEID
order by convert(nvarchar(36), RECORDOPERATIONCATALOGID)
for xml raw('RecordOperation'),type,elements,root('RecordOperations')
)
;
declare @dataLists xml;
set @dataLists=(
select DATALISTCATALOGID AS FeatureID,
case GRANTORDENY WHEN 1 THEN 'Grant' ELSE 'Deny' END as GrantState
from dbo.SYSTEMROLEPERM_DATALIST
WHERE SYSTEMROLEID=@SYSTEMROLEID
order by convert(nvarchar(36), DATALISTCATALOGID)
for xml raw('DataList'),type,elements,root('DataLists')
)
;
declare @dash xml;
set @dash=(
select DASHBOARDCATALOGID AS FeatureID,
case GRANTORDENY WHEN 1 THEN 'Grant' ELSE 'Deny' END as GrantState
from dbo.SYSTEMROLEPERM_DASHBOARD
WHERE SYSTEMROLEID=@SYSTEMROLEID
order by convert(nvarchar(36), DASHBOARDCATALOGID)
for xml raw('Dashboard'),type,elements,root('Dashboards')
)
;
declare @busproc xml;
set @busproc=(
select BUSINESSPROCESSCATALOGID AS FeatureID,
case GRANTORDENY WHEN 1 THEN 'Grant' ELSE 'Deny' END as GrantState
from dbo.SYSTEMROLEPERM_BUSINESSPROCESS
WHERE SYSTEMROLEID=@SYSTEMROLEID
order by convert(nvarchar(36), BUSINESSPROCESSCATALOGID)
for xml raw('BusinessProcess'),type,elements,root('BusinessProcesses')
)
;
declare @queryviews xml;
set @queryviews=(
select QUERYVIEWCATALOGID AS FeatureID,
case GRANTORDENY WHEN 1 THEN 'Grant' ELSE 'Deny' END as GrantState
from dbo.SYSTEMROLEPERM_QUERYVIEW
WHERE SYSTEMROLEID=@SYSTEMROLEID
order by convert(nvarchar(36), QUERYVIEWCATALOGID)
for xml raw('QueryView'),type,elements,root('QueryViews')
)
;
declare @smartqueries xml;
set @smartqueries=(
select SMARTQUERYCATALOGID as FeatureID,
case GRANTORDENY WHEN 1 THEN 'Grant' ELSE 'Deny' END as GrantState
from dbo.SYSTEMROLEPERM_SMARTQUERY
where SYSTEMROLEID=@SYSTEMROLEID
order by convert(nvarchar(36), SMARTQUERYCATALOGID)
for xml raw('SmartQuery'),type,elements,root('SmartQueries')
)
;
declare @kpis xml;
set @kpis=(
select KPICATALOGID as FeatureID,
case GRANTORDENY WHEN 1 THEN 'Grant' ELSE 'Deny' END as GrantState
from dbo.SYSTEMROLEPERM_KPI
where SYSTEMROLEID=@SYSTEMROLEID
order by convert(nvarchar(36), KPICATALOGID)
for xml raw('Kpi'),type,elements,root('Kpis')
)
;
declare @reportparams xml;
set @reportparams=(
select REPORTCATALOGID as FeatureID,
case GRANTORDENY WHEN 1 THEN 'Grant' ELSE 'Deny' END as GrantState
from dbo.SYSTEMROLEPERM_REPORT
where SYSTEMROLEID=@SYSTEMROLEID
order by convert(nvarchar(36), REPORTCATALOGID)
for xml raw('ReportParam'),type,elements,root('ReportParams')
)
;
declare @searchlistperms xml;
set @searchlistperms=(
select SEARCHLISTCATALOGID as FeatureID,
case GRANTORDENY WHEN 1 THEN 'Grant' ELSE 'Deny' END as GrantState
from dbo.SYSTEMROLEPERM_SEARCHLIST
where SYSTEMROLEID=@SYSTEMROLEID
order by convert(nvarchar(36), SEARCHLISTCATALOGID)
for xml raw('SearchList'),type,elements,root('SearchLists')
)
;
declare @mapentityperms xml;
set @mapentityperms=(
select MAPENTITYCATALOGID as FeatureID,
case GRANTORDENY WHEN 1 THEN 'Grant' ELSE 'Deny' END as GrantState
from dbo.SYSTEMROLEPERM_MAPENTITY
where SYSTEMROLEID=@SYSTEMROLEID
for xml raw('MapEntity'),type,elements,root('MapEntities')
)
;
declare @sysprivperms xml;
set @sysprivperms=(
select SYSTEMPRIVILEGECATALOGID as FeatureID,
case GRANTORDENY WHEN 1 THEN 'Grant' ELSE 'Deny' END as GrantState
from dbo.SYSTEMROLEPERM_SYSTEMPRIVILEGE
where SYSTEMROLEID=@SYSTEMROLEID
order by convert(nvarchar(36), SYSTEMPRIVILEGECATALOGID)
for xml raw('SysPriv'),type,elements,root('SysPrivs')
)
;
set @featureperms='<FeaturePerms>'
+ coalesce(CAST( @forms AS NVARCHAR(MAX) ),'')+
+ coalesce(CAST( @recordOps AS NVARCHAR(MAX) ),'')+
+ coalesce(CAST( @dataLists AS NVARCHAR(MAX) ),'')+
+ coalesce(CAST( @dash AS NVARCHAR(MAX) ),'')+
+ coalesce(CAST( @busproc AS NVARCHAR(MAX) ),'')+
+ coalesce(CAST( @queryviews AS NVARCHAR(MAX) ),'')+
+ coalesce(CAST( @smartqueries AS NVARCHAR(MAX) ),'')+
+ coalesce(CAST( @kpis AS NVARCHAR(MAX) ),'')+
+ coalesce(CAST( @reportparams AS NVARCHAR(MAX) ),'')+
+ coalesce(CAST( @searchlistperms AS NVARCHAR(MAX) ),'')+
+ coalesce(CAST( @mapentityperms AS NVARCHAR(MAX) ),'')+
+ coalesce(CAST( @sysprivperms AS NVARCHAR(MAX) ),'')+
'</FeaturePerms>'
declare @codetableperms xml;
set @codetableperms = (
select CODETABLECATALOGID as CodeTableID,
replace(ADDPERMISSION, ' ', '') as AddPermission,
replace(UPDATEPERMISSION, ' ', '') as UpdatePermission,
replace(DELETEPERMISSION, ' ', '') as DeletePermission
from dbo.SYSTEMROLEPERM_CODETABLE
where SYSTEMROLEID=@SYSTEMROLEID
order by convert(nvarchar(36), CODETABLECATALOGID)
for xml raw('CodeTable'),type,elements,root('CodeTables')
)
;
/*
declare @constitsecurityringfence xml;
declare @recsecuritymode bit;
select
@recsecuritymode = RECORDSECURITYMODE
from
dbo.SYSTEMROLE
where
ID=@SYSTEMROLEID;
if @recsecuritymode = 0 begin
set @constitsecurityringfence = (
select
CSR.NAME Name,
CSR.DESCRIPTION Description
from dbo.SYSTEMROLE_CONSTIT_SECURITY_ATTRIBUTE SRCSR
inner join dbo.CONSTIT_SECURITY_ATTRIBUTE CSR on CSR.ID = SRCSR.CONSTIT_SECURITY_ATTRIBUTEID
where SRCSR.ID=@SYSTEMROLEID
order by convert(nvarchar(36), CSR.NAME)
for xml raw('ConstitSecurityRingFence'),type,elements
)
;
end
else -- Record security mode is set to non-assigned constituents
begin
set @constitsecurityringfence = (
select
'Records with no groups assigned' Name,
'A user in this role will be able to access any Constituent record that has no security group assigned using the Constituent related features granted to this role.' Description
for xml raw('ConstitSecurityRingFence'),type,elements
)
;
end
*/
declare @batchtype xml;
set @batchtype = (
select SRP.BATCHTYPECATALOGID as BatchTypeID,
case GRANTORDENY WHEN 1 THEN 'Grant' ELSE 'Deny' END as GrantState
from dbo.SYSTEMROLEPERM_BATCHTYPE SRP
WHERE SYSTEMROLEID=@SYSTEMROLEID
order by convert(nvarchar(36), SRP.BATCHTYPECATALOGID)
for xml raw('BatchType'),type,elements,root('BatchTypes')
)
;
declare @kpiinstanceperms xml;
set @kpiinstanceperms = (
select KPIINSTANCEID as KpiInstanceID
from dbo.SYSTEMROLEKPIINSTANCE
where SYSTEMROLEID=@SYSTEMROLEID
order by convert(nvarchar(36), KPIINSTANCEID)
for xml raw('KpiInstance'),type,elements,root('KpiInstances')
)
;
declare @codetableentryperms xml;
set @codetableentryperms = (
select SRP.CODETABLECATALOGID as CodeTableCatalogID,
SRP.CODETABLEENTRYID as CodeTableEntryID,
case ISDENIED WHEN 0 THEN 'Grant' ELSE 'Deny' END as GrantState
from dbo.SYSTEMROLEPERM_CODETABLEENTRY SRP
WHERE SYSTEMROLEID=@SYSTEMROLEID
order by convert(nvarchar(36), SRP.CODETABLEENTRYID)
for xml raw('CodeTableEntry'),type,elements,root('CodeTableEntries')
)
;
declare @featuregroupperms xml;
set @featuregroupperms = (
select FEATUREGROUPCATALOGID as FeatureGroupCatalogID,
case GRANTORDENY WHEN 1 THEN 'Grant' ELSE 'Deny' END as GrantState
from dbo.SYSTEMROLEPERM_FEATUREGROUP
WHERE SYSTEMROLEID=@SYSTEMROLEID
order by convert(nvarchar(36), FEATUREGROUPCATALOGID)
for xml raw('FeatureGroup'),type,elements,root('FeatureGroups')
)
;
/*
Site security has been moved down to the system role application user level
declare @sitesecurity xml;
declare @sitesecuritymode bit;
select @sitesecuritymode = SITESECURITYMODE
from dbo.SYSTEMROLE
where ID = @SYSTEMROLEID;
if @sitesecuritymode = 0
begin
declare @site nvarchar(1024);
select @site = SITE.NAME
from dbo.SYSTEMROLE
inner join dbo.SITE
on SYSTEMROLE.SITEID = SITE.ID
where SYSTEMROLE.ID = @SYSTEMROLEID;
if @site is not null
begin
set @sitesecurity = (
select @site
for xml raw('SiteSecurity'),type,elements
);
end
end
else -- Site security mode is set to non-assigned constituents
begin
set @sitesecurity = (
select 'Records with no site'
for xml raw('SiteSecurity'),type,elements
);
end
*/
declare @doc nvarchar(max);
set @doc=
N'<SystemRole>' +
cast(@recordInfo as nvarchar(max))
+
coalesce(cast(@featureperms as nvarchar(max)),'')
+
coalesce(cast(@tasks as nvarchar(max)),'')
+
coalesce(cast(@codetableperms as nvarchar(max)),'')
+
/*
coalesce(cast(@constitsecurityringfence as nvarchar(max)),'')
+
*/
coalesce(cast(@batchtype as nvarchar(max)),'')
+
coalesce(cast(@kpiinstanceperms as nvarchar(max)),'')
+
coalesce(cast(@codetableentryperms as nvarchar(max)),'')
+
coalesce(cast(@featuregroupperms as nvarchar(max)),'')
+
N'</SystemRole>'
set @r=@doc;
return @r;
END