This post helps you to pro-grammatically assign an access policy to role.Below is the code snippet:
Get access policy key:
/**
* Assign access policy to role
* @param roleName
*/
public void assignAccessPolicyToOIMRole(String roleName) {
Role role = null;
SearchCriteria criteria = null;
List<Role> roles = null;
tcAccessPolicyOperationsIntf
accessPolicyOperationsIntf=null;
try {
accessPolicyOperationsIntf=Platform
.getService(tcAccessPolicyOperationsIntf.class);
criteria = new SearchCriteria(RoleManagerConstants.ROLE_NAME,
roleName, SearchCriteria.Operator.EQUAL);
roles = roleManager.search(criteria, null, null);
HashMap<String, Object> roleMapAttrs = new HashMap<String,
Object>();
Map<String, List<String>> accessPoliciesMap = new
HashMap<String,List<String>>();
List<String> accessPolicies = new ArrayList<String>();
String accessPolicyName="Test Access
Policy";
String accessPolicyKey =getAccessPolicyKey(accessPolicyName,accessPolicyOperationsIntf);
accessPolicies.add(accessPolicyKey);
accessPoliciesMap.put("ADD",accessPolicies);
roleMapAttrs.put(RoleManagerConstants.ACCESS_POLICIES,
accessPoliciesMap);
role = new Role(roleMapAttrs);
RoleManagerResult roleManagerResult = roleManager.modify(
RoleManagerConstants.ROLE_NAME,
roleName, role);
} catch (RoleSearchException e) {
e.printStackTrace();
} catch (AccessDeniedException e) {
e.printStackTrace();
} catch (ValidationFailedException e) {
e.printStackTrace();
} catch (RoleModifyException e) {
e.printStackTrace();
} catch (NoSuchRoleException e) {
e.printStackTrace();
} catch (RoleLookupException e) {
e.printStackTrace();
}
private
String getAccessPolicyKey(String accessPolicyName,
tcAccessPolicyOperationsIntf
accessPolicyOperationsIntf) {
Map
<String,String> apAttributeList = new HashMap<String,String>();
String
accessPolicyKey = null;
try
{
apAttributeList.put("Access
Policies.Name", accessPolicyName);
tcResultSet
resultSet = accessPolicyOperationsIntf
.findAccessPolicies(apAttributeList);
if
(resultSet == null || resultSet.getRowCount() == 0) {
return
accessPolicyKey;
}
for
(int i = 0; i < resultSet.getRowCount(); i++) {
resultSet.goToRow(i);
accessPolicyKey
= resultSet.getStringValue("Access
Policies.Key");
}
} catch
(tcAPIException | tcColumnNotFoundException e) {
e.printStackTrace();
}
return
accessPolicyKey;
}
No comments:
Post a Comment