UFN_CLIENTUSERS_OBJECTSWITHTASKRIGHT

Checks which objects of a particular type a user has a particular right for, accounting for ownership, admin-rights, task rights, and object rights.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@CLIENTUSERSID int IN
@OBJECTTYPEID int IN
@TASKENUM int IN
@TASKGUID uniqueidentifier IN

Definition

Copy


create function dbo.UFN_CLIENTUSERS_OBJECTSWITHTASKRIGHT
(
    @CLIENTUSERSID int,
    @OBJECTTYPEID int,
  @TASKENUM int,
    @TASKGUID uniqueidentifier
)
returns 
@OUTPUT table 
(
    RECORDID int
    OBJECTGUID uniqueidentifier
)
as
begin

declare @SITESWITHOVERIDE table (SiteID int)
if @TASKGUID is not null
begin
    insert into @SITESWITHOVERIDE
    select F.CLIENTSITESID  from [dbo].[UFN_CLIENTUSERS_TASKS](@CLIENTUSERSID, @TASKGUID) F
end


declare @SHOWALL bit
set @SHOWALL = (select CU.IsSupervisor | CU.InternalUser from dbo.ClientUsers CU where CU.ID = @CLIENTUSERSID)

if @SHOWALL <> 1
    set @SHOWALL = (select 1 from @SITESWITHOVERIDE where SiteID is null)

if @SHOWALL = 1
    begin
    insert into @OUTPUT
        select SO.RECORDID, SO.OBJECTGUID from dbo.V_CMSSECURABLEOBJECTS SO where SO.OBJECTTYPEID = @OBJECTTYPEID order by SO.RECORDID
    end
else
    begin
    insert into @OUTPUT
        select SO.RECORDID, SO.OBJECTGUID from dbo.V_CMSSECURABLEOBJECTS SO where SO.OBJECTTYPEID = @OBJECTTYPEID and SO.OwnerID = @CLIENTUSERSID -- Objects you own

        union
        select SO.RECORDID, SO.OBJECTGUID from dbo.UFN_CLIENTUSERS_OBJECTTASKOBJECTS(@CLIENTUSERSID,@TASKENUM,@OBJECTTYPEID) F
        inner join dbo.V_CMSSECURABLEOBJECTS SO on SO.OBJECTGUID = F.OBJECTGUID
        where F.VALUE = 1 -- Objects have explicit view rights on

        union
        select SO.RECORDID, SO.OBJECTGUID  from dbo.V_CMSSECURABLEOBJECTS SO
        inner join @SITESWITHOVERIDE SWO on SWO.SiteID = SO.CLIENTSITESID
        where SO.OBJECTTYPEID = @OBJECTTYPEID -- Objects in sites you have task rights for

        order by SO.RECORDID
    end

  return
 end