UFN_SECURITY_APPUSER_GRANTED_SMARTFIELDINSTANCE_QUERYVIEW

Return

Return Type
bit

Parameters

Parameter Parameter Type Mode Description
@CURRENTAPPUSERID uniqueidentifier IN
@QUERYVIEWID uniqueidentifier IN

Definition

Copy


CREATE function dbo.UFN_SECURITY_APPUSER_GRANTED_SMARTFIELDINSTANCE_QUERYVIEW
(
  @CURRENTAPPUSERID uniqueidentifier,
  @QUERYVIEWID uniqueidentifier
)
returns bit
as
begin
  declare @RETURNVALUE bit = 0;
  declare @IS_SYS_ADMIN bit;
  declare @HASQUERYVIEWSYSTEMPRIVILEGE bit;

  select @IS_SYS_ADMIN = ISSYSADMIN from dbo.APPUSER where ID=@CURRENTAPPUSERID;

  if @IS_SYS_ADMIN = 0
    select @HASQUERYVIEWSYSTEMPRIVILEGE = dbo.UFN_SECURITY_APPUSER_GRANTED_SYSTEMPRIVILEGE_IN_SYSTEMROLE(@CURRENTAPPUSERID, '5f9bbcaf-9c67-4539-9880-ae4f709a9c1f')    

  if @IS_SYS_ADMIN = 1 or @HASQUERYVIEWSYSTEMPRIVILEGE = 1
  begin
    return 1;
  end
  else
  begin
    select 
      @RETURNVALUE = 1
    from dbo.QUERYVIEWCATALOG
      inner join dbo.SMARTFIELD 
        on dbo.UFN_SMARTFIELD_GETQUERYVIEWOBJECTNAME(SMARTFIELD.ID) = UPPER(QUERYVIEWCATALOG.OBJECTNAME)
      inner join dbo.SMARTFIELDCATALOG
        on SMARTFIELDCATALOG.ID = SMARTFIELD.SMARTFIELDCATALOGID
      inner join dbo.UFN_SECURITY_GETGRANTEDQUERYVIEWSFORUSER(@CURRENTAPPUSERID) GQV 
        on QUERYVIEWCATALOG.ID = GQV.QUERYVIEWCATALOGID
      cross apply dbo.UFN_SITEID_MAPFROM_SMARTFIELDID(SMARTFIELD.ID) as SMARTFIELDSITE
    where QUERYVIEWCATALOG.ID = @QUERYVIEWID and
      (
        SMARTFIELDCATALOG.HASSITEFILTER = 0
        or
        exists (select 1 from dbo.UFN_SECURITY_APPUSER_GRANTED_QUERYVIEW_FORSITE_TVF(@CURRENTAPPUSERID, QUERYVIEWCATALOG.ID, SMARTFIELDSITE.SITEID))
      );
  end

  return @RETURNVALUE;
end