UFN_CONSTITUENT_CANAPPUSERMODIFY

Determines whether a user has permission to modify a constituent.

Return

Return Type
bit

Parameters

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

Definition

Copy


            create function dbo.UFN_CONSTITUENT_CANAPPUSERMODIFY
            (
                @CONSTITUENTID uniqueidentifier,
                @CURRENTAPPUSERID uniqueidentifier
            )
            returns bit
            with 
            execute as caller
            as
            begin
                declare @CANAPPUSERMODIFY bit

                if @CONSTITUENTID is null
                    set @CANAPPUSERMODIFY = 1
                else
                begin
                    declare @ISADMIN bit
                    declare @APPUSER_IN_NONRACROLE bit
                    declare @APPUSER_IN_NOSECGROUPROLE bit
                    declare @APPUSER_IN_NONSITEROLE bit
                    declare @APPUSER_IN_NOSITEROLE bit

                    set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID)

                    if @ISADMIN = 0
                    begin
                        set @APPUSER_IN_NONRACROLE = dbo.UFN_SECURITY_APPUSER_IN_NONRACROLE(@CURRENTAPPUSERID)
                        if @APPUSER_IN_NONRACROLE = 0
                            set @APPUSER_IN_NOSECGROUPROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE(@CURRENTAPPUSERID)

                        set @APPUSER_IN_NONSITEROLE = dbo.UFN_SECURITY_APPUSER_IN_NONSITEROLE(@CURRENTAPPUSERID)
                        if @APPUSER_IN_NONSITEROLE = 0
                            set @APPUSER_IN_NOSITEROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SITE_ROLE(@CURRENTAPPUSERID)
                    end

                    if (@ISADMIN = 1 or 
                        (
                            (@APPUSER_IN_NONRACROLE = 1 or
                            dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, @CONSTITUENTID, @APPUSER_IN_NOSECGROUPROLE) = 1)
                            and
                            (@APPUSER_IN_NONSITEROLE = 1 or
                            dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE(@CURRENTAPPUSERID, @CONSTITUENTID, @APPUSER_IN_NOSITEROLE) = 1)
                        ))
                        set @CANAPPUSERMODIFY = 1
                    else
                        set @CANAPPUSERMODIFY = 0
                end

                return @CANAPPUSERMODIFY
            end