Skip to content

Instantly share code, notes, and snippets.

@dhaniksahni
Created December 5, 2019 19:34
Show Gist options
  • Save dhaniksahni/3345f4ac3745aee98db72163550e091c to your computer and use it in GitHub Desktop.
Save dhaniksahni/3345f4ac3745aee98db72163550e091c to your computer and use it in GitHub Desktop.
global class FieldExplorerController {
//Retrieve All Custom Object in Org
@Auraenabled(cacheable=true)
global static List<String> getAllCustomSObjects()
{
List<String> sObjectList = new List<String>();
for(Schema.SObjectType objTyp : Schema.getGlobalDescribe().Values())
{
Schema.DescribeSObjectResult describeSObjectResultObj = objTyp.getDescribe();
if(describeSObjectResultObj.isCustom())
{
String name = objTyp.getDescribe().getName();
if(!name.containsignorecase('history') && !name.containsignorecase('tag')&&
!name.containsignorecase('share') && !name.containsignorecase('feed'))
{
sObjectList.add(name);
}
}
}
system.debug('SObjectList****' + sObjectList);
return sObjectList;
}
//Retrieve All Objects in org
@Auraenabled(cacheable=true)
public static List<string> getObjects()
{
List<string> sObjectList = new List<string>();
for(Schema.SObjectType objTyp : Schema.getGlobalDescribe().Values()){
String name = objTyp.getDescribe().getName();
if((!name.containsignorecase('history') && !name.containsignorecase('tag')&&
!name.containsignorecase('share') && !name.containsignorecase('feed')) &&
name.toLowerCase().right(3) == '__c'){
sObjectList.add(name);
}
}
return sObjectList;
}
//Get All fields of given object
@Auraenabled(cacheable=true)
public static List<FieldWrap> getFields(string objectName)
{
Map<String, Schema.SObjectType> gd = Schema.getGlobalDescribe();
Schema.SObjectType ctype = gd.get(objectName);
Map<String, Schema.SobjectField> fmap = ctype.getDescribe().fields.getMap();
List<FieldWrap> strList = new List<FieldWrap>();
for(String fieldName: fmap.keySet()) {
FieldWrap wmp = new FieldWrap();
wmp.name = fmap.get(fieldName).getDescribe().getName();
wmp.label = fmap.get(fieldName).getDescribe().getLabel();
strList.add(wmp);
}
return strList;
}
//retrieve Orgs User
@Auraenabled(cacheable=true)
public static List<User> getOrgUsers()
{
return [select id, name from User where isactive = true];
}
//Get Access of all fields
@Auraenabled(cacheable=true)
public static List<FieldAccess> getObjectAccess(string objectName,string userId)
{
List<FieldAccess> fields=new List<FieldAccess>();
//Get DurableId of all fields for given user
List<UserFieldAccess> lists=[SELECT Durableid FROM UserFieldAccess
WHERE FieldDefinition.EntityDefinition.QualifiedApiName=:objectName
AND User.Id=:userId];
List<string> ids=new List<string>();
for(UserFieldAccess field:lists)
{
ids.add(field.Durableid);
}
//Get Field access for given user
List<UserFieldAccess> accesses=[SELECT DurableId,EntityDefinitionId,FieldDefinition.QualifiedApiName,FieldDefinitionId,Id,IsAccessible,IsCreatable,IsUpdatable,UserId FROM UserFieldAccess
WHERE DurableId =:ids];
//Create Access List
FieldAccess access;
for(UserFieldAccess field:accesses)
{
access=new FieldAccess();
access.Id=field.Id;
access.EntityDefinitionId=field.EntityDefinitionId;
access.FieldDefinitionId=field.FieldDefinitionId;
access.IsAccessible=field.IsAccessible;
access.IsUpdatable=field.IsUpdatable;
access.IsCreatable=field.IsCreatable;
access.FieldName=field.FieldDefinition.QualifiedApiName;
fields.add(access);
}
return fields;
}
//Get access of any fields
@Auraenabled(cacheable=true)
public static List<FieldAccess> getFieldsAccess(string objectName,string fieldName, string userId)
{
List<FieldAccess> fields=new List<FieldAccess>();
//Map<Id,User> users=new Map<Id, User>([select id, name from User where id=:userId]);
List<UserFieldAccess> lists=[SELECT Durableid FROM UserFieldAccess
WHERE FieldDefinition.EntityDefinition.QualifiedApiName=:objectName
AND FieldDefinition.QualifiedApiName=:fieldName
AND User.Id=:userId];
List<string> ids=new List<string>();
for(UserFieldAccess field:lists)
{
ids.add(field.Durableid);
}
//Get Field access for given user
List<UserFieldAccess> accesses=[SELECT DurableId,EntityDefinitionId,FieldDefinition.QualifiedApiName,FieldDefinitionId,Id,IsAccessible,IsCreatable,IsUpdatable,UserId FROM UserFieldAccess
WHERE DurableId =:ids];
//Create Access List
FieldAccess access;
for(UserFieldAccess field:accesses)
{
access=new FieldAccess();
access.Id=field.Id;
access.EntityDefinitionId=field.EntityDefinitionId;
access.FieldDefinitionId=field.FieldDefinitionId;
access.IsAccessible=field.IsAccessible;
access.IsUpdatable=field.IsUpdatable;
access.IsCreatable=field.IsCreatable;
access.FieldName=field.FieldDefinition.QualifiedApiName;
fields.add(access);
}
return fields;
}
public class FieldWrap
{
@Auraenabled
public string Name{get;set;}
@Auraenabled
public string Label{get;set;}
}
public class FieldAccess
{
@Auraenabled
public string Id{get;set;}
@Auraenabled
public string EntityDefinitionId{get;set;}
@Auraenabled
public string FieldDefinitionId{get;set;}
@Auraenabled
public boolean IsAccessible{get;set;}
@Auraenabled
public boolean IsUpdatable{get;set;}
@Auraenabled
public boolean IsCreatable{get;set;}
@Auraenabled
public string FieldName{get;set;}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment