Add WITH SYSTEM_MODE to fflib_AppBindingsSelector class

This should avoid the requirement of adding read permission to the custom medata object. Particular for external users
This commit is contained in:
Wim Velzeboer
2024-02-22 20:15:45 +00:00
parent 181aef1359
commit 604f9a5399
@@ -28,16 +28,13 @@
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
public virtual without sharing class fflib_AppBindingsSelector extends fflib_SObjectSelector
{
public virtual without sharing class fflib_AppBindingsSelector extends fflib_SObjectSelector {
// Used for mocking
@TestVisible
private static System.Type SELECTOR_IMPL_TYPE = fflib_AppBindingsSelector.class;
public List<Schema.SObjectField> getSObjectFieldList()
{
return new List<Schema.SObjectField>
{
public List<Schema.SObjectField> getSObjectFieldList() {
return new List<Schema.SObjectField>{
fflib_AppBinding__mdt.Id,
fflib_AppBinding__mdt.BindingObject__c,
fflib_AppBinding__mdt.BindingObjectAlternate__c,
@@ -50,18 +47,15 @@ public virtual without sharing class fflib_AppBindingsSelector extends fflib_SOb
};
}
public static fflib_AppBindingsSelector newInstance()
{
public static fflib_AppBindingsSelector newInstance() {
return (fflib_AppBindingsSelector) SELECTOR_IMPL_TYPE.newInstance();
}
public Schema.SObjectType getSObjectType()
{
public Schema.SObjectType getSObjectType() {
return fflib_AppBinding__mdt.SObjectType;
}
public virtual List<fflib_AppBinding__mdt> selectAll()
{
public virtual List<fflib_AppBinding__mdt> selectAll() {
/**
Todo - Waiting to uncomment the following section
until fflib-apex-common fixes the getFieldPath issue
@@ -81,12 +75,11 @@ public virtual without sharing class fflib_AppBindingsSelector extends fflib_SOb
return (List<fflib_AppBinding__mdt>) Database.query(
String.format(
'SELECT {0} FROM {1}',
new List<String>
{
getFieldListString()
+ ', BindingObject__r.QualifiedApiName'
+ ', ApplicationPackage__r.DeveloperName',
'SELECT {0} FROM {1} WITH SYSTEM_MODE',
new List<String>{
getFieldListString() +
', BindingObject__r.QualifiedApiName' +
', ApplicationPackage__r.DeveloperName',
getSObjectType().getDescribe().getName()
}
)