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