UFN_SITESFORUSERONFEATURE

Returns a list of Sites that the given user can access through the given feature.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@CURRENTAPPUSERID uniqueidentifier IN
@FEATUREID uniqueidentifier IN
@FEATURETYPE tinyint IN

Definition

Copy


CREATE function dbo.UFN_SITESFORUSERONFEATURE 
(
  @CURRENTAPPUSERID uniqueidentifier,
  @FEATUREID uniqueidentifier,
  @FEATURETYPE tinyint
)
returns @T table (SITEID uniqueidentifier)
as
begin 

  --If the user is a syadamin, or a feature is not defined, return all sites the user can access.

  if (select [ISSYSADMIN] from dbo.[APPUSER] where [ID] = @CURRENTAPPUSERID) = 1
    or @FEATUREID is null
    or @FEATURETYPE is null
    or @FEATURETYPE = 0 -- SecurityFeatureType.None

    or (select DFTC.NOSECURITYREQUIRED from dbo.DATAFORMINSTANCECATALOG DFIC inner join dbo.DATAFORMTEMPLATECATALOG DFTC on DFIC.DATAFORMTEMPLATECATALOGID = DFTC.ID where DFIC.ID = @FEATUREID) = 1
  begin
    insert into @T (SITEID)
    values(null);

    insert into @T (SITEID)
      select [SITEID]
      from dbo.[UFN_SITESFORUSER](@CURRENTAPPUSERID);

    return;
  end

  --Table to hold all relevant user/role/site relationships before 

  --  removing dupes or taking security mode into consideration.

  declare @RAWSITELIST table(
    SITESECURITYMODE tinyint,
    SITEID uniqueidentifier
  );

  if @FEATURETYPE = 1  -- SecurityFeatureType.Form

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_FORM as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.DATAFORMINSTANCECATALOGID = @FEATUREID;
  end
  if @FEATURETYPE = 2  -- SecurityFeatureType.DataList

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_DATALIST as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.DATALISTCATALOGID = @FEATUREID;
  end
  if @FEATURETYPE = 3  -- SecurityFeatureType.RecordOperation

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_RECORDOPERATION as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.RECORDOPERATIONCATALOGID = @FEATUREID;
  end
  if @FEATURETYPE = 4  -- SecurityFeatureType.BusinessProcess

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BUSINESSPROCESS as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.BUSINESSPROCESSCATALOGID = @FEATUREID;
  end
  if @FEATURETYPE = 5  -- SecurityFeatureType.Dashboard

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_DASHBOARD as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.DASHBOARDCATALOGID = @FEATUREID;
  end
  if @FEATURETYPE = 6  -- SecurityFeatureType.SearchList

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_SEARCHLIST as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.SEARCHLISTCATALOGID = @FEATUREID;
  end
  -- 7 = SecurityFeatureType.SimpleDataList

  if @FEATURETYPE = 8  -- SecurityFeatureType.Task

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_TASK as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.TASKID = @FEATUREID;
  end
  if @FEATURETYPE = 9  -- SecurityFeatureType.SmartQuery

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_SMARTQUERY as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.SMARTQUERYCATALOGID = @FEATUREID;
  end
  if @FEATURETYPE = 10  -- SecurityFeatureType.AdHocQueryView

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_QUERYVIEW as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.QUERYVIEWCATALOGID = @FEATUREID;
  end
  if @FEATURETYPE = 11  -- SecurityFeatureType.BatchType

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTYPE as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.BATCHTYPECATALOGID = @FEATUREID;
  end
  if @FEATURETYPE = 12  -- SecurityFeatureType.AddCodeTableEntry

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_CODETABLE as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.CODETABLECATALOGID = @FEATUREID and
      PERMISSIONS.ADDPERMISSIONCODE = 1;
  end
  if @FEATURETYPE = 13  -- SecurityFeatureType.UpdateCodeTableEntry

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_CODETABLE as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.CODETABLECATALOGID = @FEATUREID and
      PERMISSIONS.UPDATEPERMISSIONCODE = 1;
  end
  if @FEATURETYPE = 14  -- SecurityFeatureType.DeleteCodeTableEntry

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_CODETABLE as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.CODETABLECATALOGID = @FEATUREID and
      PERMISSIONS.DELETEPERMISSIONCODE = 1;
  end
  if @FEATURETYPE = 15  -- SecurityFeatureType.Batch

  begin
    --A user has rights to a batch if granted rights to either its workflow, type, or template.

    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHWORKFLOWSTATE as PERMISSIONS
                  inner join dbo.BATCHWORKFLOWSTATE on BATCHWORKFLOWSTATE.ID = PERMISSIONS.BATCHWORKFLOWSTATEID
      inner join dbo.BATCH on BATCH.BATCHWORKFLOWSTATEID = BATCHWORKFLOWSTATE.ID
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      BATCH.ID = @FEATUREID;

    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTYPE as PERMISSIONS
      inner join dbo.BATCHTEMPLATE on BATCHTEMPLATE.BATCHTYPECATALOGID = PERMISSIONS.BATCHTYPECATALOGID
      inner join dbo.BATCH on BATCH.BATCHTEMPLATEID = BATCHTEMPLATE.ID
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      BATCH.ID = @FEATUREID;

    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTEMPLATE as PERMISSIONS
      inner join dbo.BATCH on BATCH.BATCHTEMPLATEID = PERMISSIONS.BATCHTEMPLATEID
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      BATCH.ID = @FEATUREID;
  end
  if @FEATURETYPE = 16  -- SecurityFeatureType.BatchTemplate

  begin
    --A user has rights to a batch template if granted rights to either its template or batch type.

    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTEMPLATE as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.BATCHTEMPLATEID = @FEATUREID;

    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE,
      SITEPERMISSION.SITEID
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTYPE as PERMISSIONS inner join
      dbo.BATCHTEMPLATE on PERMISSIONS.BATCHTYPECATALOGID = BATCHTEMPLATE.BATCHTYPECATALOGID
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      BATCHTEMPLATE.ID = @FEATUREID and
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID;
  end
  if @FEATURETYPE = 17  -- SecurityFeatureType.Kpi

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_KPI as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.KPICATALOGID = @FEATUREID;
  end
  if @FEATURETYPE = 18  -- SecurityFeatureType.MergeTask

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_FORM as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      (PERMISSIONS.DATAFORMINSTANCECATALOGID = 'a83074f2-c238-432e-979f-1a5496f1023f'
        or PERMISSIONS.DATAFORMINSTANCECATALOGID = '732ee77a-96ec-48cd-8b36-f7e7e5225a40');
  end
  if @FEATURETYPE = 19  -- SecurityFeatureType.SmartField

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
              select
          0,
          SITEPERMISSION.SITEID
          from
          SITEPERMISSION 
          where SITEPERMISSION.APPUSERID = @CURRENTAPPUSERID                   
    --select 

    --  PERMISSIONS.SITESECURITYMODE, 

    --  SITEPERMISSION.SITEID 

    --from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_FORM as PERMISSIONS

    --left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID

    --where 

    --  PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 

    --  (PERMISSIONS.DATAFORMINSTANCECATALOGID = '1441C214-BF50-4701-B4B8-5FD3EBF41577'

    --    or PERMISSIONS.DATAFORMINSTANCECATALOGID = '57C77816-505D-4010-A8C7-FF21B3759916');-->

  end
  if @FEATURETYPE = 20  -- SecurityFeatureType.GlobalChange

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_FORM as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      (PERMISSIONS.DATAFORMINSTANCECATALOGID = '6976F8E7-46F8-4397-BCF7-60BA896DBFFB'
        or PERMISSIONS.DATAFORMINSTANCECATALOGID = '800093A6-B727-490B-8CC4-C0C0CF2148F0');
  end
  if @FEATURETYPE = 21  -- SecurityFeatureType.ReportParameter

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_REPORT as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.REPORTCATALOGID = @FEATUREID;
  end
  if @FEATURETYPE = 22  -- SecurityFeatureType.SystemPrivilege

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_SYSTEMPRIVILEGE as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.SYSTEMPRIVILEGECATALOGID = @FEATUREID;
  end
  if @FEATURETYPE = 23  -- SecurityFeatureType.ConfigurationData

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_FORM as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      (PERMISSIONS.DATAFORMINSTANCECATALOGID = 'B3CE5EFC-4E28-428D-BBBC-40E8BAF1A21C'
        or PERMISSIONS.DATAFORMINSTANCECATALOGID = '3C132EA3-EF68-4CA5-A10C-9CC392562254');
  end
  if @FEATURETYPE = 24  -- SecurityFeatureType.BatchTemplateCustomize

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTEMPLATECUSTOMIZE as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.BATCHTEMPLATEID = @FEATUREID;
  end
  if @FEATURETYPE = 25  -- SecurityFeatureType.BatchProcessor

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHPROCESSOR as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.BATCHTEMPLATEID = @FEATUREID;

    --WI150493: Needs to also check the security for batch workflow, batch template, and batch type.  The reason is a user can have access to add a batch

    -- but they may not have BatchProcessor rights.  So, in that case they should still be able to see the sites on that form.  This logic reflects the logic in

    -- UFN_SECURITY_APPUSER_GRANTED_BATCHPROCESSOR.

    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHWORKFLOWSTATE as PERMISSIONS
      inner join dbo.BATCHWORKFLOWSTATE on BATCHWORKFLOWSTATE.ID = PERMISSIONS.BATCHWORKFLOWSTATEID
      inner join dbo.BATCH on BATCH.BATCHWORKFLOWSTATEID = BATCHWORKFLOWSTATE.ID
      inner join dbo.BATCHTEMPLATE on BATCHTEMPLATE.ID = BATCH.BATCHTEMPLATEID
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      BATCHTEMPLATE.ID = @FEATUREID;

    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTEMPLATE as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.BATCHTEMPLATEID = @FEATUREID;

    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE,
      SITEPERMISSION.SITEID
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTYPE as PERMISSIONS inner join
      dbo.BATCHTEMPLATE on PERMISSIONS.BATCHTYPECATALOGID = BATCHTEMPLATE.BATCHTYPECATALOGID
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      BATCHTEMPLATE.ID = @FEATUREID and
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID;

  end
  if @FEATURETYPE = 26  -- SecurityFeatureType.Page

  begin
    declare @PAGEEXPRESSIONFORMID uniqueidentifier;
    select @PAGEEXPRESSIONFORMID=
      coalesce(
          PAGEDEFINITIONSPEC.value(
            '
            declare namespace bbspec="bb_appfx_pagedefinition";
            declare namespace c="bb_appfx_commontypes";
            /bbspec:PageDefinitionSpec[1]/@ExpressionDataFormID
            '
            ,'nvarchar(36)')
          ,'00000000-0000-0000-0000-000000000000')
    from dbo.PAGEDEFINITIONCATALOG where ID = @FEATUREID;


    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_FORM as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.DATAFORMINSTANCECATALOGID = @PAGEEXPRESSIONFORMID;
  end
  if @FEATURETYPE = 27  -- SecurityFeatureType.MapEntity

  begin
    insert into @RAWSITELIST(
      SITESECURITYMODE,
      SITEID
    )
    select 
      PERMISSIONS.SITESECURITYMODE, 
      SITEPERMISSION.SITEID 
    from dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_MAPENTITY as PERMISSIONS
      left join dbo.SITEPERMISSION on SITEPERMISSION.SYSTEMROLEID = PERMISSIONS.SYSTEMROLEID and SITEPERMISSION.APPUSERID = PERMISSIONS.APPUSERID
    where 
      PERMISSIONS.APPUSERID = @CURRENTAPPUSERID and 
      PERMISSIONS.MAPENTITYCATALOGID = @FEATUREID;
  end

  --If the raw lists contains a role assignment that allows access to all records, return all sites.

  if exists( select 1 from @RAWSITELIST where SITESECURITYMODE=0)
  begin
    insert into @T (SITEID)
    values(null);

    insert into @T (SITEID)
      select [SITEID]
      from dbo.[UFN_SITESFORUSER](@CURRENTAPPUSERID);
  end
  else --Otherwise, return the listed sites (null for role assignments for records with no sites).

  begin
    insert into @T (SITEID)
    select distinct case SITESECURITYMODE when 1 then null else SITEID end from @RAWSITELIST;
  end

  return;
end