UFN_SECURITY_APPUSER_GRANTED_BATCH_IN_NONSITEROLE

Returns true if the given user has permissions to the given batch in a role that has no site security defined.

Return

Return Type
bit

Parameters

Parameter Parameter Type Mode Description
@APPUSERID uniqueidentifier IN
@BATCHID uniqueidentifier IN

Definition

Copy


            CREATE function [dbo].[UFN_SECURITY_APPUSER_GRANTED_BATCH_IN_NONSITEROLE]
            (
            @APPUSERID uniqueidentifier,
            @BATCHID uniqueidentifier
            )
            returns bit as

            /*
            Returns true if the given user has permissions to the given task
            in a role whose site security is set to all records.

            */


            begin

            if exists
                (
                    select 
                        1 
                    from 
                        dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTEMPLATE as SECURITYVIEW
                            with (NOEXPAND, INDEX(IX_V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTEMPLATE_BATCHTEMPLATEID_APPUSERID))
                        inner join dbo.SYSTEMROLEAPPUSER on SYSTEMROLEAPPUSER.APPUSERID = SECURITYVIEW.APPUSERID and SYSTEMROLEAPPUSER.SYSTEMROLEID = SECURITYVIEW.SYSTEMROLEID
                        inner join dbo.BATCH on SECURITYVIEW.BATCHTEMPLATEID = BATCH.BATCHTEMPLATEID
                    where 
                        SECURITYVIEW.APPUSERID=@APPUSERID and 
                        BATCH.ID=@BATCHID and 
                        SECURITYVIEW.GRANTORDENY=1 and 
                        SYSTEMROLEAPPUSER.SECURITYMODECODE = 0
                    union all
                    select 
                        1
                    from 
                        dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTYPE as SECURITYVIEW
                        inner join dbo.BATCHTEMPLATE on BATCHTEMPLATE.BATCHTYPECATALOGID = SECURITYVIEW.BATCHTYPECATALOGID
                        inner join dbo.BATCH on BATCH.BATCHTEMPLATEID = BATCHTEMPLATE.ID                                
                        inner join dbo.SYSTEMROLEAPPUSER on SYSTEMROLEAPPUSER.APPUSERID = SECURITYVIEW.APPUSERID and SYSTEMROLEAPPUSER.SYSTEMROLEID = SECURITYVIEW.SYSTEMROLEID
                    where 
                        SECURITYVIEW.APPUSERID=@APPUSERID and 
                        BATCH.ID=@BATCHID and 
                        SECURITYVIEW.GRANTORDENY=1 and 
                        SYSTEMROLEAPPUSER.SECURITYMODECODE = 0
                    union all
                    select 
                        1
                    from 
                        dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHWORKFLOWSTATE as SECURITYVIEW
                            with (NOEXPAND, INDEX(IX_V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHWORKFLOWSTATE_BATCHWORKFLOWSTATEID_APPUSERID))                                
                        inner join dbo.BATCH on BATCH.BATCHWORKFLOWSTATEID = SECURITYVIEW.BATCHWORKFLOWSTATEID                                
                        inner join dbo.SYSTEMROLEAPPUSER on SYSTEMROLEAPPUSER.APPUSERID = SECURITYVIEW.APPUSERID and SYSTEMROLEAPPUSER.SYSTEMROLEID = SECURITYVIEW.SYSTEMROLEID
                    where 
                        SECURITYVIEW.APPUSERID=@APPUSERID and 
                        BATCH.ID=@BATCHID and 
                        SECURITYVIEW.GRANTORDENY=1 and 
                        SYSTEMROLEAPPUSER.SECURITYMODECODE = 0
                    union all
                    select 
                        1
                    from 
                        dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHPROCESSOR as SECURITYVIEW
                            with (NOEXPAND, INDEX(IX_V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTEMPLATEPROCESSOR_BATCHTEMPLATEID_APPUSERID))                                
                        inner join dbo.BATCH on BATCH.BATCHTEMPLATEID = SECURITYVIEW.BATCHTEMPLATEID                                
                        inner join dbo.SYSTEMROLEAPPUSER on SYSTEMROLEAPPUSER.APPUSERID = SECURITYVIEW.APPUSERID and SYSTEMROLEAPPUSER.SYSTEMROLEID = SECURITYVIEW.SYSTEMROLEID
                    where 
                        SECURITYVIEW.APPUSERID=@APPUSERID  and 
                        BATCH.ID=@BATCHID and 
                        SECURITYVIEW.GRANTORDENY=1 and 
                        SYSTEMROLEAPPUSER.SECURITYMODECODE = 0
                    union all
                    select 
                        1
                    from 
                        dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTEMPLATEAPPROVER as SECURITYVIEW
                            with (NOEXPAND, INDEX(IX_V_SECURITY_SYSTEMROLEASSIGNMENT_USER_BATCHTEMPLATEAPPROVER_BATCHTEMPLATEID_APPUSERID))                                
                        inner join dbo.BATCH on BATCH.BATCHTEMPLATEID = SECURITYVIEW.BATCHTEMPLATEID                                
                        inner join dbo.SYSTEMROLEAPPUSER on SYSTEMROLEAPPUSER.APPUSERID = SECURITYVIEW.APPUSERID and SYSTEMROLEAPPUSER.SYSTEMROLEID = SECURITYVIEW.SYSTEMROLEID
                    where 
                        SECURITYVIEW.APPUSERID=@APPUSERID and 
                        BATCH.ID=@BATCHID and SECURITYVIEW.GRANTORDENY=1 and 
                        SYSTEMROLEAPPUSER.SECURITYMODECODE = 0        
                ) return 1;

            return  0;

            end