UFN_SECURITY_ADHOCQUERY_USERCANCHANGEALLOWOTHERSTOMODIFY

Checks to see if a user can change the 'Allow others to modify' flag on an existing ad-hoc query.

Return

Return Type
bit

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@OTHERSCANMODIFY bit IN
@APPUSERID uniqueidentifier IN

Definition

Copy


            create function dbo.UFN_SECURITY_ADHOCQUERY_USERCANCHANGEALLOWOTHERSTOMODIFY(@ID uniqueidentifier,
                @OTHERSCANMODIFY bit,
                @APPUSERID uniqueidentifier)
            returns bit
            as
            begin

                declare @RETURNVALUE bit;
                declare @EXISTINGID uniqueidentifier;
                declare @EXISTINGOWNERID uniqueidentifier;
                declare @EXISTINGOTHERSCANMODIFY bit;

                select @EXISTINGID = ADHOCQUERY.ID,
                    @EXISTINGOWNERID = ADHOCQUERY.OWNERID, 
                    @EXISTINGOTHERSCANMODIFY = ADHOCQUERY.OTHERSCANMODIFY
                from dbo.ADHOCQUERY 
                inner join dbo.APPUSER on ADHOCQUERY.OWNERID = APPUSER.ID
                where ADHOCQUERY.ID = @ID;

                if @EXISTINGID is null
                begin
                    /* Ad-hoc query doesn't yet exist; user has rights to set the flag. */
                    set @RETURNVALUE = 1;
                end
                else
                begin

                    declare @ISSYSADMIN bit;
                    select @ISSYSADMIN = ISSYSADMIN from dbo.APPUSER where ID = @APPUSERID;

                    if @EXISTINGOWNERID <> @APPUSERID and @ISSYSADMIN = 0
                    begin
                        if @EXISTINGOTHERSCANMODIFY = 0 or @EXISTINGOTHERSCANMODIFY <> @OTHERSCANMODIFY
                        begin
                            set @RETURNVALUE = 0;
                        end
                        else
                        begin
                            set @RETURNVALUE = 1;
                        end;
                    end
                    else
                    begin
                        set @RETURNVALUE = 1;
                    end;

                end;

                return @RETURNVALUE;

            end;