1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
public with sharing class ApexClassPermission { //比较两个ApexClas的权限设定,如果相同返回true,如果不同返回false public static Boolean checkApexClassPermission(Map<String,String> argApexClassNames){ for(String key : argApexClassNames.keySet()){ boolean ret = checkApexClassPermission(key , argApexClassNames.get(key)); System.debug('$key:'+key +'$value:'+ argApexClassNames.get(key) + '$ret:'+ret); } return true; } //比较两个ApexClas的权限设定,如果相同返回true,如果不同返回false public static Boolean checkApexClassPermission(String argApexClassName01 , String argApexClassName02 ){ list<user> userlist = [select id from user where IsActive = true]; Map<String , Id> ApexClassMap = new Map<String , Id> (); list<ApexClass> ApexClassList = [SELECT Id , Name FROM ApexClass ]; for(ApexClass item : ApexClassList){ ApexClassMap.put(item.Name,item.Id); } Map<Id,List<PermissionSetAssignment>> PermissionSetAssignmentMap = new Map<Id,List<PermissionSetAssignment>>(); list<PermissionSetAssignment> PermissionSetAssignmentList =[select Id, PermissionSetId , Assigneeid from PermissionSetAssignment ]; for(PermissionSetAssignment item : PermissionSetAssignmentList){ if(PermissionSetAssignmentMap.containsKey(item.Assigneeid)){ list<PermissionSetAssignment> tempList= PermissionSetAssignmentMap.get(item.Assigneeid); tempList.add(item); PermissionSetAssignmentMap.put(item.Assigneeid, tempList); } else { list<PermissionSetAssignment> tempList= new list<PermissionSetAssignment>(); tempList.add(item); PermissionSetAssignmentMap.put(item.Assigneeid, tempList); } } list<SetupEntityAccess> SetupEntityAccessAllList = [SELECT Id, Parent.name ,ParentId, SetupEntityId FROM SetupEntityAccess where SetupEntityType='ApexClass']; for(user u : userlist){ if(!PermissionSetAssignmentMap.containsKey(u.id)){ System.debug('$u.id'+u.id); continue; } list<PermissionSetAssignment> PermissionSetAssignmentListByUser = PermissionSetAssignmentMap.get(u.id); set<String> SetupEntityAccess01 = new set<String>(); set<String> SetupEntityAccess02 = new set<String>(); for(PermissionSetAssignment item : PermissionSetAssignmentListByUser){ Id ApexClassId01 = ApexClassMap.get(argApexClassName01); Id ApexClassId02 = ApexClassMap.get(argApexClassName02); list<SetupEntityAccess> SetupEntityAccessList = new list<SetupEntityAccess> (); for(SetupEntityAccess sitem : SetupEntityAccessAllList ){ if(sitem.SetupEntityid == ApexClassId01 && sitem.ParentId==item.PermissionSetId){ SetupEntityAccessList.add(sitem); } } for(SetupEntityAccess sitem : SetupEntityAccessList){ SetupEntityAccess01.add(sitem.ParentId ); } list<SetupEntityAccess> SetupEntityAccessList02 = new list<SetupEntityAccess> (); for(SetupEntityAccess sitem : SetupEntityAccessAllList ){ if(sitem.SetupEntityid == ApexClassId02 && sitem.ParentId==item.PermissionSetId){ SetupEntityAccessList02.add(sitem); } } for(SetupEntityAccess sitem : SetupEntityAccessList02){ SetupEntityAccess02.add(sitem.ParentId ); } } System.debug('▲▲▲▲▲▲▲▲▲▲▲▲▲▲'+SetupEntityAccess01); System.debug('▲▲▲▲▲▲▲▲▲▲▲▲▲▲'+SetupEntityAccess02); if(SetupEntityAccess01.size()!=SetupEntityAccess02.size()){ return false; } for (String myname : SetupEntityAccess01) { if(!SetupEntityAccess02.contains(myname)){ return false; } } } return true; } } |