import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.openecomp.portalapp.portal.domain.EPUser;
import org.openecomp.portalapp.portal.domain.EPUserApp;
import org.openecomp.portalapp.portal.domain.ExternalRoleDetails;
+import org.openecomp.portalapp.portal.logging.aop.EPAuditLog;
import org.openecomp.portalapp.portal.logging.aop.EPMetricsLog;
+import org.openecomp.portalapp.portal.logging.logic.EPLogUtil;
import org.openecomp.portalapp.portal.transport.BulkUploadRoleFunction;
import org.openecomp.portalapp.portal.transport.BulkUploadUserRoles;
import org.openecomp.portalapp.portal.transport.CentralApp;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestTemplate;
import com.fasterxml.jackson.core.JsonProcessingException;
@Service("externalAccessRolesService")
@EnableAspectJAutoProxy
@EPMetricsLog
+@EPAuditLog
public class ExternalAccessRolesServiceImpl implements ExternalAccessRolesService {
+ private static final String IS_NULL_STRING = "null";
+
+ private static final String EXTERNAL_AUTH_PERMS = "perms";
+
+ private static final String EXTERNAL_AUTH_ROLE_DESCRIPTION = "description";
+
+ private static final String WHERE_APP_ID_EQUALS = " where app_id = ";
+
+ private static final String IS_EMPTY_JSON_STRING = "{}";
+
+ private static final String CONNECTING_TO_EXTERNAL_AUTH_SYSTEM_LOG_MESSAGE = "Connecting to External Auth system";
+
+ private static final String WHERE_ROLE_ID_EQUALS = " where role_id = ";
+
+ private static final String APP_ROLE_ID = "appRoleId";
+
+ private static final String APP_ID = "appId";
+
+ private static final String PRIORITY = "priority";
+
+ private static final String ACTIVE = "active";
+
+ private static final String ROLE_NAME = "name";
+
+ private static final String ID = "id";
+
+ private static final String WHERE_ROLE_NAME_EQUALS = " where role_name = '";
+
+ private static final String APP_ID_EQUALS = " app_id = ";
+
private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ExternalAccessRolesServiceImpl.class);
@Autowired
private DataAccessService dataAccessService;
-
+
@Autowired
private SessionFactory sessionFactory;
-
RestTemplate template = new RestTemplate();
@SuppressWarnings("unchecked")
- public List<EPRole> getAppRoles(Long appId, Boolean extRequestValue) throws Exception {
+ public List<EPRole> getAppRoles(Long appId) throws Exception {
List<EPRole> applicationRoles = null;
String filter = null;
try {
if (appId == 1) {
filter = " where app_id is null";
} else {
- filter = " where app_id = " + appId;
+ filter = WHERE_APP_ID_EQUALS + appId;
}
applicationRoles = dataAccessService.getList(EPRole.class, filter, null, null);
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, "getAppRoles is failed", e);
+ logger.error(EELFLoggerDelegate.errorLogger, "getAppRoles: failed", e);
throw new Exception(e.getMessage());
}
return applicationRoles;
List<EPApp> app = null;
try {
app = (List<EPApp>) dataAccessService.getList(EPApp.class, " where ueb_key = '" + uebkey + "'", null, null);
+ if(!app.get(0).getEnabled()){
+ throw new Exception("Application:"+app.get(0).getName()+" is Unavailable");
+ }
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, "getApp is failed", e);
+ logger.error(EELFLoggerDelegate.errorLogger, "getApp: failed", e);
throw new Exception(e.getMessage());
}
return app;
}
- public String getSingleAppRole(String addRole, EPApp app) throws Exception {
- String response = "";
+ /**
+ * It returns single application role from external auth system
+ * @param addRole
+ * @param app
+ * @return JSON string which contains application role details
+ * @throws Exception
+ */
+ private String getSingleAppRole(String addRole, EPApp app) throws Exception {
HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
HttpEntity<String> entity = new HttpEntity<>(headers);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connecting to External Access system");
- response = template
+ logger.debug(EELFLoggerDelegate.debugLogger, "getSingleAppRole: Connecting to External Auth system");
+ ResponseEntity<String> response = template
.exchange(
SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "roles/"
+ app.getNameSpace() + "." + addRole.replaceAll(" ", "_"),
- HttpMethod.GET, entity, String.class)
- .getBody();
- logger.debug(EELFLoggerDelegate.debugLogger, "Connected to External Access system");
-
- return response;
+ HttpMethod.GET, entity, String.class);
+ logger.debug(EELFLoggerDelegate.debugLogger,
+ "getSingleAppRole: Finished GET app role from External Auth system and status code: {} ", response.getStatusCode().value());
+ return response.getBody();
}
@Override
ResponseEntity<String> addResponse = null;
HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
EPApp app = getApp(uebkey).get(0);
- String newRole = createNewRoleInExternalSystem(addRole, app);
+ String newRole = updateExistingRoleInExternalSystem(addRole, app);
HttpEntity<String> entity = new HttpEntity<>(newRole, headers);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connecting to External Access system");
+ logger.debug(EELFLoggerDelegate.debugLogger, "addRole: Connecting to External Auth system");
addResponse = template.exchange(
SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "role",
HttpMethod.POST, entity, String.class);
if (addResponse.getStatusCode().value() == 201) {
response = true;
- logger.debug(EELFLoggerDelegate.debugLogger, "Connected to External Access system");
+ logger.debug(EELFLoggerDelegate.debugLogger, "addRole: Finished adding role in the External Auth system and response code: {} ", addResponse.getStatusCode().value());
}
if (addResponse.getStatusCode().value() == 406) {
- logger.debug(EELFLoggerDelegate.debugLogger, "Connected to External Access system but something went wrong!");
- throw new Exception("Failed to create role");
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "addRole: Failed to add in the External Auth system due to {} and status code: {}", addResponse.getBody(), addResponse.getStatusCode().value());
}
return response;
}
- @Override
- public void updateRole(Role addRole, EPApp app) throws Exception {
- boolean addResponse = updateRoleInExternalSystem(addRole, app);
- if (!addResponse) {
- throw new Exception("Failed to update a role");
- }
- }
-
+ /**
+ *
+ * It deletes record in external auth system
+ *
+ * @param delRole
+ * @return JSON String which has status code and response body
+ * @throws Exception
+ */
private ResponseEntity<String> deleteRoleInExternalSystem(String delRole) throws Exception {
ResponseEntity<String> delResponse = null;
HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
HttpEntity<String> entity = new HttpEntity<>(delRole, headers);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connecting to External Access system");
+ logger.debug(EELFLoggerDelegate.debugLogger, "deleteRoleInExternalSystem: {} " , CONNECTING_TO_EXTERNAL_AUTH_SYSTEM_LOG_MESSAGE);
delResponse = template.exchange(
SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "role?force=true",
HttpMethod.DELETE, entity, String.class);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connected to External Access system");
+ logger.debug(EELFLoggerDelegate.debugLogger, "deleteRoleInExternalSystem: Finished DELETE operation in the External Auth system and status code: {} ", delResponse.getStatusCode().value());
return delResponse;
}
+ /**
+ * It updates role in external auth system
+ *
+ * @param updateExtRole
+ * @param app
+ * @return true if success else false
+ * @throws Exception
+ * If updateRoleInExternalSystem fails we catch it in logger for detail message
+ */
@SuppressWarnings("unchecked")
private boolean updateRoleInExternalSystem(Role updateExtRole, EPApp app) throws Exception {
boolean response = false;
ExternalAccessRolePerms extRolePerms = null;
ExternalAccessPerms extPerms = null;
List<EPRole> epRoleList = null;
- epRoleList = dataAccessService.getList(EPRole.class,
- " where role_id = " + updateExtRole.getId(), null, null);
+ epRoleList = dataAccessService.getList(EPRole.class, WHERE_ROLE_ID_EQUALS + updateExtRole.getId(), null, null);
String appRole = getSingleAppRole(epRoleList.get(0).getName(), app);
- if (!appRole.equals("{}")) {
+ if (!appRole.equals(IS_EMPTY_JSON_STRING)) {
JSONObject jsonObj = new JSONObject(appRole);
JSONArray extRole = jsonObj.getJSONArray("role");
- if (!extRole.getJSONObject(0).has("description")) {
- String roleName = extRole.getJSONObject(0).getString("name");
- String delRoleKey = "{\"name\":\"" + roleName + "\"}";
- deleteResponse = deleteRoleInExternalSystem(delRoleKey);
+ if (!extRole.getJSONObject(0).has(EXTERNAL_AUTH_ROLE_DESCRIPTION)) {
+ String roleName = extRole.getJSONObject(0).getString(ROLE_NAME);
+ Map<String, String> delRoleKeyMapper = new HashMap<>();
+ delRoleKeyMapper.put(ROLE_NAME, roleName);
+ String delRoleKeyValue = mapper.writeValueAsString(delRoleKeyMapper);
+ deleteResponse = deleteRoleInExternalSystem(delRoleKeyValue);
if (deleteResponse.getStatusCode().value() != 200) {
- throw new Exception("Failed to delete role in external access system!");
+ throw new Exception(deleteResponse.getBody());
}
addRole(updateExtRole, app.getUebKey());
} else {
- String desc = extRole.getJSONObject(0).getString("description");
- String name = extRole.getJSONObject(0).getString("name");
+ String desc = extRole.getJSONObject(0).getString(EXTERNAL_AUTH_ROLE_DESCRIPTION);
+ String name = extRole.getJSONObject(0).getString(ROLE_NAME);
List<ExternalAccessPerms> list = null;
- if (extRole.getJSONObject(0).has("perms")) {
- JSONArray perms = extRole.getJSONObject(0).getJSONArray("perms");
- ObjectMapper permsMapper = new ObjectMapper();
- list = permsMapper.readValue(perms.toString(), TypeFactory.defaultInstance()
+ if (extRole.getJSONObject(0).has(EXTERNAL_AUTH_PERMS)) {
+ JSONArray perms = extRole.getJSONObject(0).getJSONArray(EXTERNAL_AUTH_PERMS);
+ list = mapper.readValue(perms.toString(), TypeFactory.defaultInstance()
.constructCollectionType(List.class, ExternalAccessPerms.class));
}
- ObjectMapper roleMapper = new ObjectMapper();
- ExternalRoleDescription sysRoleList = roleMapper.readValue(desc, ExternalRoleDescription.class);
+ ExternalRoleDescription sysRoleList = mapper.readValue(desc, ExternalRoleDescription.class);
// If role name or role functions are updated then delete record in External System and add new record to avoid conflicts
Boolean existingRoleActive;
- boolean res;
+ boolean isActiveValueChanged;
// check role active status
existingRoleActive = new Boolean(sysRoleList.getActive());
- res = existingRoleActive.equals(updateExtRole.getActive());
+ isActiveValueChanged = existingRoleActive.equals(updateExtRole.getActive());
if (!sysRoleList.getName().equals(updateExtRole.getName())) {
- String deleteRoleKey = "{\"name\":\"" + name + "\"}";
- deleteResponse = deleteRoleInExternalSystem(deleteRoleKey);
+ Map<String, String> delRoleKeyMapper = new HashMap<>();
+ delRoleKeyMapper.put(ROLE_NAME, name);
+ String delRoleKeyValue = mapper.writeValueAsString(delRoleKeyMapper);
+ deleteResponse = deleteRoleInExternalSystem(delRoleKeyValue);
if (deleteResponse.getStatusCode().value() != 200) {
- throw new Exception("Failed to delete role in external access system!");
+ logger.error(EELFLoggerDelegate.errorLogger, "updateRoleInExternalSystem: Failed to delete role in external system due to {} ", deleteResponse.getBody());
+ throw new Exception(deleteResponse.getBody());
}
- response = addRole(updateExtRole, app.getUebKey());
- ObjectMapper addPermsMapper = new ObjectMapper();
- response = addRoleFunctionsInExternalSystem(updateExtRole, addPermsMapper, app);
+ addRole(updateExtRole, app.getUebKey());
+ addRoleFunctionsInExternalSystem(updateExtRole, mapper, app);
}
ExternalAccessRole updateRole = new ExternalAccessRole();
- if (!res || !sysRoleList.getPriority().equals(String.valueOf(updateExtRole.getPriority())) ||
- sysRoleList.getId().equals("null")) {
+ if (!isActiveValueChanged
+ || !sysRoleList.getPriority().equals(String.valueOf(updateExtRole.getPriority()))
+ || sysRoleList.getId().equals(IS_NULL_STRING)
+ || !sysRoleList.getId().equals(String.valueOf(epRoleList.get(0).getId()))) {
String updateDesc = "";
+ String appId = (app.getId().equals(PortalConstants.PORTAL_APP_ID)) ? " app_id is null"
+ : APP_ID_EQUALS + app.getId();
List<EPRole> getRole = dataAccessService.getList(EPRole.class,
- " where role_name = '" + updateExtRole.getName() + "'", null, null);
+ WHERE_ROLE_NAME_EQUALS + updateExtRole.getName() + "' and " + appId, null, null);
+ Map<String, Object> extSystemUpdateRoleJsonMapper = new LinkedHashMap<>();
+ extSystemUpdateRoleJsonMapper.put(ID, getRole.get(0).getId());
+ extSystemUpdateRoleJsonMapper.put(ROLE_NAME, updateExtRole.getName());
+ extSystemUpdateRoleJsonMapper.put(ACTIVE, updateExtRole.getActive());
+ extSystemUpdateRoleJsonMapper.put(PRIORITY, updateExtRole.getPriority());
if (app.getId().equals(PortalConstants.PORTAL_APP_ID)) {
- updateDesc = "{\"id\":\"" + getRole.get(0).getId() + "\",\"name\":\"" + updateExtRole.getName()
- + "\",\"active\":\"" + updateExtRole.getActive() + "\",\"priority\":\""
- + updateExtRole.getPriority() + "\",\"appId\":\"null\",\"appRoleId\":\"null\"}";
-
+ extSystemUpdateRoleJsonMapper.put(APP_ID, null);
+ extSystemUpdateRoleJsonMapper.put(APP_ROLE_ID, null);
} else {
- updateDesc = "{\"id\":\"" + getRole.get(0).getId() + "\",\"name\":\"" + updateExtRole.getName()
- + "\",\"active\":\"" + updateExtRole.getActive() + "\",\"priority\":\""
- + updateExtRole.getPriority() + "\",\"appId\":\"" + app.getId() + "\",\"appRoleId\":\""
- + getRole.get(0).getAppRoleId() + "\"}";
+ extSystemUpdateRoleJsonMapper.put(APP_ID, app.getId());
+ extSystemUpdateRoleJsonMapper.put(APP_ROLE_ID, getRole.get(0).getAppRoleId());
}
+ updateDesc = mapper.writeValueAsString(extSystemUpdateRoleJsonMapper);
updateRole.setName(app.getNameSpace() + "." + updateExtRole.getName().replaceAll(" ", "_"));
updateRole.setDescription(updateDesc);
String updateRoleDesc = mapper.writeValueAsString(updateRole);
HttpEntity<String> entity = new HttpEntity<>(updateRoleDesc, headers);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connecting to External Access system");
- template.exchange(
+ logger.debug(EELFLoggerDelegate.debugLogger,
+ "updateRoleInExternalSystem: {} " , CONNECTING_TO_EXTERNAL_AUTH_SYSTEM_LOG_MESSAGE);
+ ResponseEntity<String> updatePermsResponse = template.exchange(
SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "role",
HttpMethod.PUT, entity, String.class);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connected to External Access system");
+ logger.debug(EELFLoggerDelegate.debugLogger,
+ "updateRoleInExternalSystem: Finished updating in External Auth system and status code: {} ",
+ updatePermsResponse.getStatusCode().value());
}
List<RoleFunction> roleFunctionListNew = convertSetToListOfRoleFunctions(updateExtRole);
Map<String, RoleFunction> updateRoleFunc = new HashMap<>();
}
final Map<String, ExternalAccessPerms> extRolePermMap = new HashMap<>();
// Update permissions in the ExternalAccess System
- ObjectMapper permMapper = new ObjectMapper();
if (list != null) {
for (ExternalAccessPerms perm : list) {
if (!updateRoleFunc.containsKey(perm.getInstance())) {
- removePermForRole(perm, permMapper, name, headers);
+ removePermForRole(perm, mapper, name, headers);
}
extRolePermMap.put(perm.getInstance(), perm);
}
}
response = true;
- if (!roleFunctionListNew.isEmpty() || roleFunctionListNew.size() > 0) {
+ if (!roleFunctionListNew.isEmpty()) {
for (RoleFunction roleFunc : roleFunctionListNew) {
if (!extRolePermMap.containsKey(roleFunc.getCode())) {
String checkType = roleFunc.getCode().contains("menu") ? "menu" : "url";
app.getNameSpace() + "." + updateExtRole.getName().replaceAll(" ", "_"));
String updateRolePerms = mapper.writeValueAsString(extRolePerms);
HttpEntity<String> entity = new HttpEntity<>(updateRolePerms, headers);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connecting to External Access system");
+ logger.debug(EELFLoggerDelegate.debugLogger, "updateRoleInExternalSystem: {} " , CONNECTING_TO_EXTERNAL_AUTH_SYSTEM_LOG_MESSAGE);
ResponseEntity<String> addResponse = template.exchange(
SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL)
+ "role/perm",
if (addResponse.getStatusCode().value() != 201) {
response = false;
logger.debug(EELFLoggerDelegate.debugLogger,
- "Connected to External Access system but something went wrong! due to {} and statuscode: {}", addResponse.getStatusCode().getReasonPhrase(), addResponse.getStatusCode().value());
+ "updateRoleInExternalSystem: Connected to External Auth system but something went wrong! due to {} and statuscode: {}",
+ addResponse.getStatusCode().getReasonPhrase(),
+ addResponse.getStatusCode().value());
} else {
response = true;
- logger.debug(EELFLoggerDelegate.debugLogger, "Connected to External Access system");
+ logger.debug(EELFLoggerDelegate.debugLogger, "updateRoleInExternalSystem: Finished adding permissions to roles in External Auth system and status code: {} ", addResponse.getStatusCode().value());
}
}
}
}
}
} else {
- // It seems like role exists in local DB but not in External Access system
+ // It seems like role exists in local DB but not in External Access system
addRole(updateExtRole, app.getUebKey());
List<RoleFunction> roleFunctionListUpdate = convertSetToListOfRoleFunctions(updateExtRole);
response = true;
- if (!roleFunctionListUpdate.isEmpty() || roleFunctionListUpdate.size() > 0) {
- ObjectMapper addPermsMapper = new ObjectMapper();
- addRoleFunctionsInExternalSystem(updateExtRole, addPermsMapper, app);
+ if (!roleFunctionListUpdate.isEmpty()) {
+ addRoleFunctionsInExternalSystem(updateExtRole, mapper, app);
}
}
return response;
}
- private boolean addRoleFunctionsInExternalSystem(Role updateExtRole, ObjectMapper addPermsMapper, EPApp app) throws Exception {
+ /**
+ *
+ * It adds functions to the role in external auth system
+ *
+ * @param updateExtRole
+ * @param addPermsMapper
+ * @param app
+ * @return true if success else false
+ * @throws Exception
+ */
+ private boolean addRoleFunctionsInExternalSystem(Role updateExtRole, ObjectMapper addPermsMapper, EPApp app)
+ throws Exception {
boolean response = false;
ExternalAccessRolePerms extAddRolePerms = null;
ExternalAccessPerms extAddPerms = null;
HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
for (RoleFunction roleFunc : roleFunctionListAdd) {
String checkType = roleFunc.getCode().contains("menu") ? "menu" : "url";
- extAddPerms = new ExternalAccessPerms(app.getNameSpace() + "." + checkType, roleFunc.getCode(),
- "*");
+ extAddPerms = new ExternalAccessPerms(app.getNameSpace() + "." + checkType, roleFunc.getCode(), "*");
extAddRolePerms = new ExternalAccessRolePerms(extAddPerms,
app.getNameSpace() + "." + updateExtRole.getName().replaceAll(" ", "_"));
String updateRolePerms = addPermsMapper.writeValueAsString(extAddRolePerms);
HttpEntity<String> entity = new HttpEntity<>(updateRolePerms, headers);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connecting to External Access system");
+ logger.debug(EELFLoggerDelegate.debugLogger, "addRoleFunctionsInExternalSystem: {} " , CONNECTING_TO_EXTERNAL_AUTH_SYSTEM_LOG_MESSAGE);
ResponseEntity<String> addResponse = template.exchange(
- SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL)
- + "role/perm",
+ SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "role/perm",
HttpMethod.POST, entity, String.class);
if (addResponse.getStatusCode().value() != 201) {
response = false;
logger.debug(EELFLoggerDelegate.debugLogger,
- "Connected to External Access system but something went wrong! due to {} and statuscode: {}", addResponse.getStatusCode().getReasonPhrase(), addResponse.getStatusCode().value());
+ "addRoleFunctionsInExternalSystem: While adding permission to the role in External Auth system something went wrong! due to {} and statuscode: {}",
+ addResponse.getStatusCode().getReasonPhrase(), addResponse.getStatusCode().value());
} else {
response = true;
- logger.debug(EELFLoggerDelegate.debugLogger, "Connected to External Access system");
+ logger.debug(EELFLoggerDelegate.debugLogger, "addRoleFunctionsInExternalSystem: Finished adding permissions to roles in External Auth system and status code: {} ", addResponse.getStatusCode().value());
}
}
return response;
}
+ /**
+ *
+ * It converts list of functions in updateExtRole parameter to the RoleFunction object
+ *
+ * @param updateExtRole
+ * @return list of functions
+ */
@SuppressWarnings("unchecked")
- private List<RoleFunction> convertSetToListOfRoleFunctions(Role updateExtRole){
+ private List<RoleFunction> convertSetToListOfRoleFunctions(Role updateExtRole) {
Set<RoleFunction> roleFunctionSetList = updateExtRole.getRoleFunctions();
List<RoleFunction> roleFunctionList = new ArrayList<>();
ObjectMapper roleFuncMapper = new ObjectMapper();
}
return roleFunctionList.stream().distinct().collect(Collectors.toList());
}
-
- private void removePermForRole(ExternalAccessPerms perm, ObjectMapper permMapper,String name, HttpHeaders headers) throws Exception {
+
+ /**
+ * It delete permissions/functions in the external auth system
+ *
+ * @param perm
+ * @param permMapper
+ * @param name
+ * @param headers
+ * @throws Exception
+ */
+ private void removePermForRole(ExternalAccessPerms perm, ObjectMapper permMapper, String name, HttpHeaders headers)
+ throws Exception {
ExternalAccessRolePerms extAccessRolePerms = new ExternalAccessRolePerms(perm, name);
String permDetails = permMapper.writeValueAsString(extAccessRolePerms);
HttpEntity<String> deleteEntity = new HttpEntity<>(permDetails, headers);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connecting to External Access system");
- ResponseEntity<String> deletePermResponse = template.exchange(SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL)
- + "role/"+name+"/perm", HttpMethod.DELETE, deleteEntity, String.class);
+ logger.debug(EELFLoggerDelegate.debugLogger, "removePermForRole: {} " , CONNECTING_TO_EXTERNAL_AUTH_SYSTEM_LOG_MESSAGE);
+ ResponseEntity<String> deletePermResponse = template
+ .exchange(SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "role/"
+ + name + "/perm", HttpMethod.DELETE, deleteEntity, String.class);
if (deletePermResponse.getStatusCode().value() != 200) {
- throw new Exception("Failed to delete role function");
+ throw new Exception(deletePermResponse.getBody());
}
- logger.debug(EELFLoggerDelegate.debugLogger, "Connected to External Access system");
+ logger.debug(EELFLoggerDelegate.debugLogger, "removePermForRole: Finished deleting permission to role in External Auth system and status code: {}",
+ deletePermResponse.getStatusCode().value());
}
+ /**
+ * It will create new role in the External Auth System
+ *
+ * @param newRole
+ * @param app
+ * @return true if successfully added in the system else false
+ * @throws Exception
+ * If fails to add role in the system
+ */
private boolean addNewRoleInExternalSystem(List<EPRole> newRole, EPApp app) throws Exception {
boolean response = false;
HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
String addNewRole = "";
ExternalAccessRole extRole = new ExternalAccessRole();
String addDesc = null;
- addDesc = "{\"id\":\"" + newRole.get(0).getId() + "\",\"name\":\"" + newRole.get(0).getName() + "\",\"active\":\""
- + newRole.get(0).getActive() + "\",\"priority\":\"" +newRole.get(0).getPriority() + "\",\"appId\":\""
- + newRole.get(0).getAppId() + "\",\"appRoleId\":\"" + newRole.get(0).getAppRoleId() + "\"}";
-
+ Map<String, Object> extSystemJsonMapper = new LinkedHashMap<>();
+ extSystemJsonMapper.put(ID, newRole.get(0).getId());
+ extSystemJsonMapper.put(ROLE_NAME, newRole.get(0).getName());
+ extSystemJsonMapper.put(ACTIVE, newRole.get(0).getActive());
+ extSystemJsonMapper.put(PRIORITY, newRole.get(0).getPriority());
+ extSystemJsonMapper.put(APP_ID, newRole.get(0).getAppId());
+ extSystemJsonMapper.put(APP_ROLE_ID, newRole.get(0).getAppRoleId());
+ addDesc = mapper.writeValueAsString(extSystemJsonMapper);
extRole.setName(app.getNameSpace() + "." + newRole.get(0).getName().replaceAll(" ", "_"));
extRole.setDescription(addDesc);
addNewRole = mapper.writeValueAsString(extRole);
HttpEntity<String> deleteEntity = new HttpEntity<>(addNewRole, headers);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connecting to External Access system");
- ResponseEntity<String> addNewRoleInExternalSystem = template.exchange(SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL)
- + "role", HttpMethod.POST, deleteEntity, String.class);
+ logger.debug(EELFLoggerDelegate.debugLogger, "addNewRoleInExternalSystem: {} " , CONNECTING_TO_EXTERNAL_AUTH_SYSTEM_LOG_MESSAGE);
+ ResponseEntity<String> addNewRoleInExternalSystem = template.exchange(
+ SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "role",
+ HttpMethod.POST, deleteEntity, String.class);
if (addNewRoleInExternalSystem.getStatusCode().value() != 201) {
- throw new Exception("Failed to add Role in External System");
- } else{
- logger.debug(EELFLoggerDelegate.debugLogger, "Connected to External Access system");
+ throw new Exception(addNewRoleInExternalSystem.getBody());
+ } else {
+ logger.debug(EELFLoggerDelegate.debugLogger, "addNewRoleInExternalSystem: Finished adding into External Auth system and status code: {}",
+ addNewRoleInExternalSystem.getStatusCode().value());
response = true;
}
return response;
}
-
+
+ /**
+ *
+ * It updates existing role in the External Auth System
+ *
+ * @param addRole
+ * It Contains role information
+ * @param app
+ * @return string which is formatted to match with the external auth system
+ * @throws JsonProcessingException
+ */
@SuppressWarnings("unchecked")
- private String createNewRoleInExternalSystem(Role addRole, EPApp app) throws JsonProcessingException {
+ private String updateExistingRoleInExternalSystem(Role addRole, EPApp app) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
String addNewRole = "";
ExternalAccessRole extRole = new ExternalAccessRole();
List<EPRole> role = null;
String addDesc = null;
- if(app.getId().equals(PortalConstants.PORTAL_APP_ID)){
- role = dataAccessService.getList(EPRole.class,
- " where role_id = " + addRole.getId(), null, null);
- addDesc = "{\"id\":\"" + role.get(0).getId() + "\",\"name\":\"" + addRole.getName() + "\",\"active\":\""
- + role.get(0).getActive() + "\",\"priority\":\"" + role.get(0).getPriority()
- + "\",\"appId\":\"null\",\"appRoleId\":\"null\"}";
- } else{
- role = dataAccessService.getList(EPRole.class,
- " where app_role_id = " + addRole.getId(), null, null);
- addDesc = "{\"id\":\"" + role.get(0).getId() + "\",\"name\":\"" + addRole.getName() + "\",\"active\":\""
- + role.get(0).getActive() + "\",\"priority\":\"" + addRole.getPriority() + "\",\"appId\":\""
- + app.getId() + "\",\"appRoleId\":\"" + role.get(0).getAppRoleId() + "\"}";
+ Map<String, Object> extSystemUpdateRole = new LinkedHashMap<>();
+ if (app.getId().equals(PortalConstants.PORTAL_APP_ID)) {
+ role = dataAccessService.getList(EPRole.class, WHERE_ROLE_ID_EQUALS + addRole.getId(), null, null);
+ } else {
+ role = dataAccessService.getList(EPRole.class, " where app_role_id = " + addRole.getId(), null, null);
}
+ extSystemUpdateRole.put(ID, role.get(0).getId());
+ extSystemUpdateRole.put(ROLE_NAME, addRole.getName());
+ extSystemUpdateRole.put(ACTIVE, role.get(0).getActive());
+ extSystemUpdateRole.put(PRIORITY, role.get(0).getPriority());
+ extSystemUpdateRole.put(APP_ID, role.get(0).getAppId());
+ extSystemUpdateRole.put(APP_ROLE_ID, role.get(0).getAppRoleId());
+ addDesc = mapper.writeValueAsString(extSystemUpdateRole);
extRole.setName(app.getNameSpace() + "." + addRole.getName().replaceAll(" ", "_"));
extRole.setDescription(addDesc);
addNewRole = mapper.writeValueAsString(extRole);
return addNewRole;
}
+ /**
+ * It create a role in the external auth system and then in our local
+ *
+ * @param addRoleInDB
+ * @param app
+ * @return true else false
+ * @throws Exception
+ */
@SuppressWarnings("unchecked")
@Transactional
private boolean addRoleInEcompDB(Role addRoleInDB, EPApp app) throws Exception {
epRoleNew.setAppId(app.getId());
}
dataAccessService.saveDomainObject(epRoleNew, null);
- List <EPRole> getRoleCreated = null;
- if (!app.getId().equals(PortalConstants.PORTAL_APP_ID)) {
- List<EPRole> roleCreated = dataAccessService.getList(EPRole.class,
- " where role_name = '" + addRoleInDB.getName() +"' and app_id = "+ app.getId(), null, null);
- EPRole epUpdateRole = roleCreated.get(0);
- epUpdateRole.setAppRoleId(epUpdateRole.getId());
- dataAccessService.saveDomainObject(epUpdateRole, null);
- getRoleCreated = dataAccessService.getList(EPRole.class,
- " where role_name = '" + addRoleInDB.getName() +"' and app_id = "+ app.getId() , null, null);
- } else{
- getRoleCreated = dataAccessService.getList(EPRole.class,
- " where role_name = '" + addRoleInDB.getName() +"' and app_id is null", null, null);
- }
- // Add role in External Access system
- boolean response = addNewRoleInExternalSystem(getRoleCreated, app);
-
- if (!response) {
- throw new Exception("Failed to add role!");
+ List<EPRole> getRoleCreated = null;
+ if (!app.getId().equals(PortalConstants.PORTAL_APP_ID)) {
+ List<EPRole> roleCreated = dataAccessService.getList(EPRole.class,
+ WHERE_ROLE_NAME_EQUALS + addRoleInDB.getName() + "' and app_id = " + app.getId(), null,
+ null);
+ EPRole epUpdateRole = roleCreated.get(0);
+ epUpdateRole.setAppRoleId(epUpdateRole.getId());
+ dataAccessService.saveDomainObject(epUpdateRole, null);
+ getRoleCreated = dataAccessService.getList(EPRole.class,
+ WHERE_ROLE_NAME_EQUALS + addRoleInDB.getName() + "' and app_id = " + app.getId(), null,
+ null);
+ } else {
+ getRoleCreated = dataAccessService.getList(EPRole.class,
+ WHERE_ROLE_NAME_EQUALS + addRoleInDB.getName() + "' and app_id is null", null, null);
}
+ // Add role in External Auth system
+ result = addNewRoleInExternalSystem(getRoleCreated, app);
} else { // if role already exists then update it
if (app.getId().equals(PortalConstants.PORTAL_APP_ID)) {
applicationRoles = dataAccessService.getList(EPRole.class,
" where app_id is null " + " and role_id = " + addRoleInDB.getId(), null, null);
} else {
applicationRoles = dataAccessService.getList(EPRole.class,
- " where app_id = " + app.getId() + " and app_role_id = " + addRoleInDB.getId(), null, null);
+ WHERE_APP_ID_EQUALS + app.getId() + " and app_role_id = " + addRoleInDB.getId(), null, null);
}
- if(applicationRoles.isEmpty() && !app.getId().equals(PortalConstants.PORTAL_APP_ID)){
+ if (applicationRoles.isEmpty()) {
applicationRoles = dataAccessService.getList(EPRole.class,
- " where app_id = " + app.getId() + " and role_id = " + addRoleInDB.getId(), null, null);
+ WHERE_APP_ID_EQUALS + app.getId() + " and role_name = '" + addRoleInDB.getName() + "'", null,
+ null);
}
updateRoleInExternalSystem(addRoleInDB, app);
deleteRoleFunction(app, applicationRoles);
- if (applicationRoles.size() > 0 || !applicationRoles.isEmpty()) {
+ if (!applicationRoles.isEmpty()) {
epRole = applicationRoles.get(0);
epRole.setName(addRoleInDB.getName());
epRole.setPriority(addRoleInDB.getPriority());
if (app.getId().equals(PortalConstants.PORTAL_APP_ID)) {
epRole.setAppId(null);
epRole.setAppRoleId(null);
- } else if(!app.getId().equals(PortalConstants.PORTAL_APP_ID) && applicationRoles.get(0).getAppRoleId() == null){
+ } else if (!app.getId().equals(PortalConstants.PORTAL_APP_ID)
+ && applicationRoles.get(0).getAppRoleId() == null) {
epRole.setAppRoleId(epRole.getId());
}
dataAccessService.saveDomainObject(epRole, null);
}
-
+
saveRoleFunction(listWithoutDuplicates, app, applicationRoles);
+ result = true;
}
- result = true;
} catch (Exception e) {
logger.error(EELFLoggerDelegate.errorLogger, "addRoleInEcompDB is failed", e);
throw new Exception(e.getMessage());
return result;
}
+ /**
+ *
+ * It validates whether role exists in external auth system
+ *
+ * @param checkRole
+ * @param app
+ * @throws Exception
+ * If role exits
+ */
private void checkIfRoleExitsInExternalSystem(Role checkRole, EPApp app) throws Exception {
HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
- String roleName = app.getNameSpace()+"."+checkRole.getName().replaceAll(" ", "_");
+ String roleName = app.getNameSpace() + "." + checkRole.getName().replaceAll(" ", "_");
HttpEntity<String> checkRoleEntity = new HttpEntity<>(headers);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connecting to External Access system");
- ResponseEntity<String> checkRoleInExternalSystem = template.exchange(SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL)
- + "roles/"+roleName, HttpMethod.GET, checkRoleEntity, String.class);
- if(!checkRoleInExternalSystem.getBody().equals("{}")){
- logger.debug("Role already exists in external system ", checkRoleInExternalSystem.getBody());
+ logger.debug(EELFLoggerDelegate.debugLogger, "checkIfRoleExitsInExternalSystem: {} " , CONNECTING_TO_EXTERNAL_AUTH_SYSTEM_LOG_MESSAGE);
+ ResponseEntity<String> checkRoleInExternalSystem = template
+ .exchange(SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "roles/"
+ + roleName, HttpMethod.GET, checkRoleEntity, String.class);
+ if (!checkRoleInExternalSystem.getBody().equals(IS_EMPTY_JSON_STRING)) {
+ logger.debug("checkIfRoleExitsInExternalSystem: Role already exists in external system {} and status code: {} ", checkRoleInExternalSystem.getBody(), checkRoleInExternalSystem.getStatusCode().value());
throw new Exception("Role already exists in external system");
- }
+ }
}
- private void saveRoleFunction(List<RoleFunction> roleFunctionListNew, EPApp app, List<EPRole> applicationRoles) throws Exception {
+ /**
+ * It saves list of functions to the role in portal
+ *
+ * @param roleFunctionListNew
+ * @param app
+ * @param applicationRoles
+ * @throws Exception
+ */
+ private void saveRoleFunction(List<RoleFunction> roleFunctionListNew, EPApp app, List<EPRole> applicationRoles)
+ throws Exception {
for (RoleFunction roleFunc : roleFunctionListNew) {
EPAppRoleFunction appRoleFunc = new EPAppRoleFunction();
appRoleFunc.setAppId(app.getId());
dataAccessService.saveDomainObject(appRoleFunc, null);
}
}
-
+
+ /**
+ * It deletes all EPAppRoleFunction records in the portal
+ *
+ * @param app
+ * @param role
+ */
@SuppressWarnings("unchecked")
private void deleteRoleFunction(EPApp app, List<EPRole> role) {
List<EPAppRoleFunction> appRoleFunctionList = dataAccessService.getList(EPAppRoleFunction.class,
- " where app_id = " + app.getId() + " and role_id = " + role.get(0).getId(), null, null);
- if (!appRoleFunctionList.isEmpty() || appRoleFunctionList.size() > 0) {
+ WHERE_APP_ID_EQUALS + app.getId() + " and role_id = " + role.get(0).getId(), null, null);
+ if (!appRoleFunctionList.isEmpty()) {
for (EPAppRoleFunction approleFunction : appRoleFunctionList) {
dataAccessService.deleteDomainObject(approleFunction, null);
}
}
}
-
+
+ @Override
@SuppressWarnings("unchecked")
- public String getUser(String loginId, String uebkey) throws Exception {
+ public List<EPUser> getUser(String loginId){
+ return (List<EPUser>) dataAccessService.getList(EPUser.class,
+ " where org_user_id = '" + loginId + "'", null, null);
+ }
+
+ @Override
+ public String getUserWithRoles(String loginId, String uebkey) throws Exception {
final Map<String, String> params = new HashMap<>();
List<EPUser> userList = null;
CentralUser cenUser = null;
String result = null;
try {
params.put("orgUserIdValue", loginId);
- List<EPApp> appList = (List<EPApp>) getApp(uebkey);
- if (appList.size() > 0) {
+ List<EPApp> appList = getApp(uebkey);
+ if (!appList.isEmpty()) {
app = appList.get(0);
- userList = (List<EPUser>) dataAccessService.getList(EPUser.class,
- " where org_user_id = '" + loginId + "'", null, null);
- if (userList.size() > 0) {
+ userList = getUser(loginId);
+ if (!userList.isEmpty()) {
EPUser user = userList.get(0);
ObjectMapper mapper = new ObjectMapper();
Set<EPUserApp> userAppSet = user.getEPUserApps();
cenUser = createEPUser(user, userAppSet, app);
result = mapper.writeValueAsString(cenUser);
- } else if (userList.size() == 0) {
+ } else if (userList.isEmpty()) {
throw new Exception("User not found");
}
} else {
throw new Exception("Application not found");
}
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, "getUser is failed", e);
+ logger.error(EELFLoggerDelegate.errorLogger, "getUser: failed", e);
throw new Exception(e.getMessage());
}
return result;
}
-
+
@Override
public List<CentralRole> getRolesForApp(String uebkey) throws Exception {
- logger.debug(EELFLoggerDelegate.debugLogger, "Entering into getRolesForApp");
+ logger.debug(EELFLoggerDelegate.debugLogger, "getRolesForApp: Entering into getRolesForApp");
List<CentralRole> roleList = new ArrayList<>();
final Map<String, Long> params = new HashMap<>();
try {
List<EPApp> app = getApp(uebkey);
- List<EPRole> appRolesList = getAppRoles(app.get(0).getId(), null);
+ List<EPRole> appRolesList = getAppRoles(app.get(0).getId());
createCentralRoleObject(app, appRolesList, roleList, params);
} catch (Exception e) {
throw new Exception("getRolesForApp Failed", e);
}
- logger.debug(EELFLoggerDelegate.debugLogger, "Finished getRolesForApp");
+ logger.debug(EELFLoggerDelegate.debugLogger, "getRolesForApp: Finished getRolesForApp");
return roleList;
}
EPApp app = getApp(uebkey).get(0);
List<CentralRoleFunction> getRoleFuncList = null;
final Map<String, Long> params = new HashMap<>();
- params.put("appId", app.getId());
- //Sync all functions from external system into Ecomp portal DB
- logger.debug(EELFLoggerDelegate.debugLogger, "Entering into syncRoleFunctionFromExternalAccessSystem");
+ params.put(APP_ID, app.getId());
+ // Sync all functions from external system into Ecomp portal DB
+ logger.debug(EELFLoggerDelegate.debugLogger, "getRoleFuncList: Entering into syncRoleFunctionFromExternalAccessSystem");
syncRoleFunctionFromExternalAccessSystem(app);
- logger.debug(EELFLoggerDelegate.debugLogger, "Finished syncRoleFunctionFromExternalAccessSystem");
+ logger.debug(EELFLoggerDelegate.debugLogger, "getRoleFuncList: Finished syncRoleFunctionFromExternalAccessSystem");
getRoleFuncList = dataAccessService.executeNamedQuery("getAllRoleFunctions", params, null);
return getRoleFuncList;
}
+ /**
+ * It returns user detail information which is deep copy of EPUser.class object
+ *
+ * @param userInfo
+ * @param userAppSet
+ * @param app
+ * @return
+ * @throws Exception
+ */
@SuppressWarnings("unchecked")
- public CentralUser createEPUser(EPUser userInfo, Set<EPUserApp> userAppSet, EPApp app) throws Exception {
+ private CentralUser createEPUser(EPUser userInfo, Set<EPUserApp> userAppSet, EPApp app) throws Exception {
final Map<String, Long> params = new HashMap<>();
CentralUser userAppList = new CentralUser();
epApp.getUebTopicName());
cua.setApp(cenApp);
params.put("roleId", userApp.getRole().getId());
- params.put("appId", userApp.getApp().getId());
+ params.put(APP_ID, userApp.getApp().getId());
List<CentralRoleFunction> appRoleFunctionList = dataAccessService
.executeNamedQuery("getAppRoleFunctionList", params, null);
- SortedSet<CentralRoleFunction> roleFunctionSet = new TreeSet<CentralRoleFunction>();
+ SortedSet<CentralRoleFunction> roleFunctionSet = new TreeSet<>();
for (CentralRoleFunction roleFunc : appRoleFunctionList) {
CentralRoleFunction cenRoleFunc = new CentralRoleFunction(roleFunc.getId(),
roleFunc.getCode(), roleFunc.getName(), null, null);
roleFunctionSet.add(cenRoleFunc);
}
Long userRoleId = null;
- if(globalRole.toLowerCase().startsWith("global_") && epApp.getId().equals(PortalConstants.PORTAL_APP_ID)){
+ if (globalRole.toLowerCase().startsWith("global_")
+ && epApp.getId().equals(PortalConstants.PORTAL_APP_ID)) {
userRoleId = userApp.getRole().getId();
- } else{
+ } else {
userRoleId = userApp.getRole().getAppRoleId();
}
- CentralRole cenRole = new CentralRole(userRoleId,
- userApp.getRole().getCreated(), userApp.getRole().getModified(),
- userApp.getRole().getCreatedId(), userApp.getRole().getModifiedId(),
- userApp.getRole().getRowNum(), userApp.getRole().getName(),
- userApp.getRole().getActive(), userApp.getRole().getPriority(), roleFunctionSet, null,
- null);
+ CentralRole cenRole = new CentralRole(userRoleId, userApp.getRole().getCreated(),
+ userApp.getRole().getModified(), userApp.getRole().getCreatedId(),
+ userApp.getRole().getModifiedId(), userApp.getRole().getRowNum(),
+ userApp.getRole().getName(), userApp.getRole().getActive(),
+ userApp.getRole().getPriority(), roleFunctionSet, null, null);
cua.setRole(cenRole);
userAppList.userApps.add(cua);
userInfo.getInternal(), userInfo.getSelectedProfileId(), userInfo.getTimeZoneId(),
userInfo.isOnline(), userInfo.getChatId(), userAppList.userApps, null);
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, "createEPUser failed", e);
+ logger.error(EELFLoggerDelegate.errorLogger, "createEPUser: createEPUser failed", e);
throw new Exception(e.getMessage());
}
List<EPApp> app = null;
try {
app = getApp(uebkey);
- if (app.isEmpty() || app.size() == 0) {
+ if (app.isEmpty()) {
throw new Exception("Application not found");
}
String filter = null;
- if (app.get(0).getId() == PortalConstants.PORTAL_APP_ID) {
- filter = " where role_id = " + roleId + " and app_id is null ";
+ if (app.get(0).getId().equals(PortalConstants.PORTAL_APP_ID)) {
+ filter = WHERE_ROLE_ID_EQUALS + roleId + " and app_id is null ";
} else {
filter = " where app_role_id = " + roleId + " and app_id = " + app.get(0).getId();
}
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, "getRoleInfo failed", e);
+ logger.error(EELFLoggerDelegate.errorLogger, "getRoleInfo: failed", e);
throw new Exception(e.getMessage());
}
return roleList.get(0);
}
-
+
+ /**
+ *
+ * It returns list of app roles along with role functions and which went through deep copy
+ *
+ * @param app
+ * @param roleInfo
+ * @param roleList
+ * @param params
+ * @return
+ */
@SuppressWarnings("unchecked")
private List<CentralRole> createCentralRoleObject(List<EPApp> app, List<EPRole> roleInfo,
List<CentralRole> roleList, Map<String, Long> params) {
for (EPRole role : roleInfo) {
params.put("roleId", role.getId());
- params.put("appId", app.get(0).getId());
+ params.put(APP_ID, app.get(0).getId());
List<CentralRoleFunction> cenRoleFuncList = dataAccessService.executeNamedQuery("getAppRoleFunctionList",
params, null);
- SortedSet<CentralRoleFunction> roleFunctionSet = new TreeSet<CentralRoleFunction>();
+ SortedSet<CentralRoleFunction> roleFunctionSet = new TreeSet<>();
for (CentralRoleFunction roleFunc : cenRoleFuncList) {
CentralRoleFunction cenRoleFunc = new CentralRoleFunction(role.getId(), roleFunc.getCode(),
roleFunc.getName(), null, null);
roleFunctionSet.add(cenRoleFunc);
}
- SortedSet<CentralRole> childRoles = new TreeSet<CentralRole>();
+ SortedSet<CentralRole> childRoles = new TreeSet<>();
CentralRole cenRole = null;
if (role.getAppRoleId() == null) {
cenRole = new CentralRole(role.getId(), role.getCreated(), role.getModified(), role.getCreatedId(),
final Map<String, String> params = new HashMap<>();
try {
params.put("functionCode", functionCode);
- params.put("appId", String.valueOf(app.getId()));
+ params.put(APP_ID, String.valueOf(app.getId()));
getRoleFuncList = dataAccessService.executeNamedQuery("getRoleFunction", params, null);
- if (getRoleFuncList.isEmpty() | getRoleFuncList.size() == 0) {
+ if (getRoleFuncList.isEmpty()) {
return roleFunc;
}
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, "getRoleFunction failed", e);
+ logger.error(EELFLoggerDelegate.errorLogger, "getRoleFunction: failed", e);
throw new Exception("getRoleFunction failed", e);
}
return getRoleFuncList.get(0);
}
@Override
- public void saveCentralRoleFunction(CentralRoleFunction domainCentralRoleFunction, EPApp app) throws Exception {
+ public boolean saveCentralRoleFunction(CentralRoleFunction domainCentralRoleFunction, EPApp app) throws Exception {
+ boolean saveOrUpdateFunction = false;
try {
addRoleFunctionInExternalSystem(domainCentralRoleFunction, app);
dataAccessService.saveDomainObject(domainCentralRoleFunction, null);
+ saveOrUpdateFunction = true;
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, "saveCentralRoleFunction failed", e);
- throw new Exception(e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, "saveCentralRoleFunction: failed", e);
+ saveOrUpdateFunction = false;
}
+ return saveOrUpdateFunction;
}
-
+
+ /**
+ * It creates application permission in external auth system
+ *
+ * @param domainCentralRoleFunction
+ * @param app
+ * @throws Exception
+ */
@SuppressWarnings("unchecked")
private void addRoleFunctionInExternalSystem(CentralRoleFunction domainCentralRoleFunction, EPApp app)
throws Exception {
ObjectMapper mapper = new ObjectMapper();
final Map<String, String> params = new HashMap<>();
params.put("functionCd", domainCentralRoleFunction.getCode());
- params.put("appId", String.valueOf(app.getId()));
+ params.put(APP_ID, String.valueOf(app.getId()));
ExternalAccessPerms extPerms = new ExternalAccessPerms();
HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
List<CentralRoleFunction> appRoleFunc = dataAccessService.executeNamedQuery("getAppFunctionDetails", params,
}
String checkType = domainCentralRoleFunction.getCode().contains("menu") ? "menu" : "url";
HttpEntity<String> getSinglePermEntity = new HttpEntity<>(headers);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connecting to External Access system");
+ logger.debug(EELFLoggerDelegate.debugLogger, "addRoleFunctionInExternalSystem: {} ", CONNECTING_TO_EXTERNAL_AUTH_SYSTEM_LOG_MESSAGE);
ResponseEntity<String> getResponse = template.exchange(
SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "perms/"
+ app.getNameSpace() + "." + checkType + "/" + roleFuncName + "/*",
HttpMethod.GET, getSinglePermEntity, String.class);
if (getResponse.getStatusCode().value() != 200) {
+ EPLogUtil.logExternalAuthAccessAlarm(logger, getResponse.getStatusCode());
throw new Exception(getResponse.getBody());
}
- logger.debug(EELFLoggerDelegate.debugLogger, "Connected to External Access system");
+ logger.debug(EELFLoggerDelegate.debugLogger, "addRoleFunctionInExternalSystem: Finished GET permission from External Auth system and response: {} ", getResponse.getBody());
String res = getResponse.getBody();
- if (res.equals("{}")) {
- try{
- extPerms.setAction("*");
- extPerms.setInstance(domainCentralRoleFunction.getCode());
- extPerms.setType(app.getNameSpace() + "." + checkType);
- extPerms.setDescription(domainCentralRoleFunction.getName());
- String updateRole = mapper.writeValueAsString(extPerms);
- HttpEntity<String> entity = new HttpEntity<>(updateRole, headers);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connecting to External Access system");
- template.exchange(
- SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "perm",
- HttpMethod.POST, entity, String.class);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connected to External Access system");
- }catch(Exception e){
- logger.error(EELFLoggerDelegate.errorLogger, "Failed to add fucntion in external central auth system", e);
+ if (res.equals(IS_EMPTY_JSON_STRING)) {
+ try {
+ extPerms.setAction("*");
+ extPerms.setInstance(domainCentralRoleFunction.getCode());
+ extPerms.setType(app.getNameSpace() + "." + checkType);
+ extPerms.setDescription(domainCentralRoleFunction.getName());
+ String updateRole = mapper.writeValueAsString(extPerms);
+ HttpEntity<String> entity = new HttpEntity<>(updateRole, headers);
+ logger.debug(EELFLoggerDelegate.debugLogger, "addRoleFunctionInExternalSystem: {} " , CONNECTING_TO_EXTERNAL_AUTH_SYSTEM_LOG_MESSAGE);
+ ResponseEntity<String> addPermResponse= template.exchange(
+ SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "perm",
+ HttpMethod.POST, entity, String.class);
+ logger.debug(EELFLoggerDelegate.debugLogger, "addRoleFunctionInExternalSystem: Finished adding permission in and status code: {} ", addPermResponse.getStatusCode().value());
+ } catch(HttpClientErrorException e){
+ logger.error(EELFLoggerDelegate.errorLogger, "HttpClientErrorException - Failed to add function in external central auth system", e);
+ EPLogUtil.logExternalAuthAccessAlarm(logger, e.getStatusCode());
+ }catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "addRoleFunctionInExternalSystem: Failed to add fucntion in external central auth system",
+ e);
}
} else {
- try{
- extPerms.setAction("*");
- extPerms.setInstance(domainCentralRoleFunction.getCode());
- extPerms.setType(app.getNameSpace() + "." + checkType);
- extPerms.setDescription(domainCentralRoleFunction.getName());
- String updateRole = mapper.writeValueAsString(extPerms);
- HttpEntity<String> entity = new HttpEntity<>(updateRole, headers);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connecting to External Access system");
- template.exchange(
- SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "perm",
- HttpMethod.PUT, entity, String.class);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connected to External Access system");
- } catch(Exception e){
- logger.error(EELFLoggerDelegate.errorLogger, "Failed to add fucntion in external central auth system", e);
-
+ try {
+ extPerms.setAction("*");
+ extPerms.setInstance(domainCentralRoleFunction.getCode());
+ extPerms.setType(app.getNameSpace() + "." + checkType);
+ extPerms.setDescription(domainCentralRoleFunction.getName());
+ String updateRole = mapper.writeValueAsString(extPerms);
+ HttpEntity<String> entity = new HttpEntity<>(updateRole, headers);
+ logger.debug(EELFLoggerDelegate.debugLogger, "addRoleFunctionInExternalSystem: {} " , CONNECTING_TO_EXTERNAL_AUTH_SYSTEM_LOG_MESSAGE);
+ ResponseEntity<String> updatePermResponse = template.exchange(
+ SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "perm",
+ HttpMethod.PUT, entity, String.class);
+ logger.debug(EELFLoggerDelegate.debugLogger, "addRoleFunctionInExternalSystem: Finished updating permission in External Auth system and response: {} ", updatePermResponse.getBody());
+ } catch(HttpClientErrorException e){
+ logger.error(EELFLoggerDelegate.errorLogger, "HttpClientErrorException - Failed to add function in external central auth system", e);
+ EPLogUtil.logExternalAuthAccessAlarm(logger, e.getStatusCode());
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "addRoleFunctionInExternalSystem: Failed to update function in external central auth system",
+ e);
}
}
}
@Override
@Transactional
- public void deleteCentralRoleFunction(String code, String uebkey) {
+ public boolean deleteCentralRoleFunction(String code, EPApp app) {
+ boolean deleteFunctionResponse = false;
try {
- EPApp app = getApp(uebkey).get(0);
final Map<String, String> params = new HashMap<>();
params.put("functionCd", code);
- params.put("appId", String.valueOf(app.getId()));
- CentralRoleFunction domainCentralRoleFunction = (CentralRoleFunction) dataAccessService.executeNamedQuery("getAppFunctionDetails", params, null).get(0);
- deleteRoleFunctionInExternalSystem(domainCentralRoleFunction, app);
- //Delete role function dependecy records
- deleteAppRoleFunctions(code, app);
+ params.put(APP_ID, String.valueOf(app.getId()));
+ CentralRoleFunction domainCentralRoleFunction = (CentralRoleFunction) dataAccessService
+ .executeNamedQuery("getAppFunctionDetails", params, null).get(0);
+ deleteRoleFunctionInExternalSystem(domainCentralRoleFunction, app);
+ // Delete role function dependency records
+ deleteAppRoleFunctions(code, app);
dataAccessService.deleteDomainObject(domainCentralRoleFunction, null);
+ deleteFunctionResponse = true;
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, "deleteCentralRoleFunction failed", e);
+ logger.error(EELFLoggerDelegate.errorLogger, "deleteCentralRoleFunction: failed", e);
}
+ return deleteFunctionResponse;
}
+ /**
+ * It deletes app function record in portal
+ *
+ * @param code
+ * @param app
+ */
private void deleteAppRoleFunctions(String code, EPApp app) {
- dataAccessService.deleteDomainObjects(EPAppRoleFunction.class, " app_id = "+app.getId()+" and function_cd = '"+ code +"'", null);
+ dataAccessService.deleteDomainObjects(EPAppRoleFunction.class,
+ APP_ID_EQUALS + app.getId() + " and function_cd = '" + code + "'", null);
}
-
+
+ /**
+ *
+ * It deletes permission in the external auth system
+ *
+ * @param domainCentralRoleFunction
+ * @param app
+ * @throws Exception
+ */
private void deleteRoleFunctionInExternalSystem(CentralRoleFunction domainCentralRoleFunction, EPApp app)
throws Exception {
- try{
- ObjectMapper mapper = new ObjectMapper();
- ExternalAccessPerms extPerms = new ExternalAccessPerms();
- String checkType = domainCentralRoleFunction.getCode().contains("menu") ? "menu" : "url";
- HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
- extPerms.setAction("*");
- extPerms.setInstance(domainCentralRoleFunction.getCode());
- extPerms.setType(app.getNameSpace() + "." + checkType);
- extPerms.setDescription(domainCentralRoleFunction.getName());
- String updateRole = mapper.writeValueAsString(extPerms);
- HttpEntity<String> entity = new HttpEntity<>(updateRole, headers);
- template.exchange(
- SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "perm?force=true",
- HttpMethod.DELETE, entity, String.class);
- } catch(Exception e){
- if(e.getMessage().equalsIgnoreCase("404 Not Found")){
- logger.debug(EELFLoggerDelegate.debugLogger, " It seems like function is already deleted in external central auth system but exists in local DB", e.getMessage());
- } else{
- logger.error(EELFLoggerDelegate.errorLogger, "Failed to delete functions in External System", e);
+ try {
+ ObjectMapper mapper = new ObjectMapper();
+ ExternalAccessPerms extPerms = new ExternalAccessPerms();
+ String checkType = domainCentralRoleFunction.getCode().contains("menu") ? "menu" : "url";
+ HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
+ extPerms.setAction("*");
+ extPerms.setInstance(domainCentralRoleFunction.getCode());
+ extPerms.setType(app.getNameSpace() + "." + checkType);
+ extPerms.setDescription(domainCentralRoleFunction.getName());
+ String updateRole = mapper.writeValueAsString(extPerms);
+ HttpEntity<String> entity = new HttpEntity<>(updateRole, headers);
+ logger.debug(EELFLoggerDelegate.debugLogger,"deleteRoleFunctionInExternalSystem: {} " , CONNECTING_TO_EXTERNAL_AUTH_SYSTEM_LOG_MESSAGE);
+ ResponseEntity<String> delPermResponse = template.exchange(SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL)
+ + "perm?force=true", HttpMethod.DELETE, entity, String.class);
+ logger.debug(EELFLoggerDelegate.debugLogger, "deleteRoleFunctionInExternalSystem: Finished deleting permission in External Auth system and status code: {} ", delPermResponse.getStatusCode().value());
+ } catch(HttpClientErrorException e){
+ logger.error(EELFLoggerDelegate.errorLogger, "HttpClientErrorException - Failed to delete functions in External System", e);
+ EPLogUtil.logExternalAuthAccessAlarm(logger, e.getStatusCode());
+ } catch (Exception e) {
+ if (e.getMessage().equalsIgnoreCase("404 Not Found")) {
+ logger.debug(EELFLoggerDelegate.debugLogger,
+ " deleteRoleFunctionInExternalSystem: It seems like function is already deleted in external central auth system but exists in local DB",
+ e.getMessage());
+ } else {
+ logger.error(EELFLoggerDelegate.errorLogger, "deleteRoleFunctionInExternalSystem: Failed to delete functions in External System", e);
}
}
}
@Override
- public void saveRoleForApplication(Role saveRole, String uebkey) throws Exception {
+ public boolean saveRoleForApplication(Role saveRole, String uebkey) throws Exception {
+ boolean addRoleResponse = false;
try {
EPApp app = getApp(uebkey).get(0);
addRoleInEcompDB(saveRole, app);
+ addRoleResponse = true;
} catch (Exception e) {
logger.error(EELFLoggerDelegate.errorLogger, "saveRoleForApplication failed", e);
- throw new Exception(e.getMessage());
}
+ return addRoleResponse;
}
@SuppressWarnings("unchecked")
@Override
- public void deleteRoleForApplication(String deleteRole, String uebkey) throws Exception {
- Session localSession = null;
+ public boolean deleteRoleForApplication(String deleteRole, String uebkey) throws Exception {
+ Session localSession = sessionFactory.openSession();
Transaction transaction = null;
boolean result = false;
try {
- localSession = sessionFactory.openSession();
transaction = localSession.beginTransaction();
List<EPRole> epRoleList = null;
ResponseEntity<String> deleteResponse = null;
EPApp app = getApp(uebkey).get(0);
- if(app.getId() == 1)
- {
+ if (app.getId() == 1) {
epRoleList = dataAccessService.getList(EPRole.class,
- " where app_id is null " + "and role_name = '" + deleteRole +"'", null, null);
- }
- else{
- epRoleList = dataAccessService.getList(EPRole.class,
- " where app_id = " + app.getId() + " and role_name = '" + deleteRole +"'", null, null);
+ " where app_id is null " + "and role_name = '" + deleteRole + "'", null, null);
+ } else {
+ epRoleList = dataAccessService.getList(EPRole.class,
+ WHERE_APP_ID_EQUALS + app.getId() + " and role_name = '" + deleteRole + "'", null, null);
}
// Delete app role functions before deleting role
deleteRoleFunction(app, epRoleList);
- if(app.getId() == 1)
- {
+ if (app.getId() == 1) {
// Delete fn_user_ role
dataAccessService.deleteDomainObjects(EPUserApp.class,
- " app_id = " + app.getId() + " and role_id = " + epRoleList.get(0).getId(), null);
-
- deleteRoleDependeciesRecord(localSession, epRoleList.get(0).getId());
+ APP_ID_EQUALS + app.getId() + " and role_id = " + epRoleList.get(0).getId(), null);
+
+ deleteRoleDependencyRecords(localSession, epRoleList.get(0).getId(), app.getId());
}
// Delete Role in External System
String deleteRoleKey = "{\"name\":\"" + app.getNameSpace() + "."
+ epRoleList.get(0).getName().replaceAll(" ", "_") + "\"}";
deleteResponse = deleteRoleInExternalSystem(deleteRoleKey);
- if (deleteResponse.getStatusCode().value() != 200) {
- throw new Exception("Failed to delete role in external access system!");
+ if (deleteResponse.getStatusCode().value() != 200 || deleteResponse.getStatusCode().value() != 404) {
+ EPLogUtil.logExternalAuthAccessAlarm(logger, deleteResponse.getStatusCode());
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "deleteRoleForApplication: Failed to delete role in external auth system! due to {} ",
+ deleteResponse.getBody());
}
- logger.debug(EELFLoggerDelegate.debugLogger, "about to commit the transaction");
+ logger.debug(EELFLoggerDelegate.debugLogger, "deleteRoleForApplication: about to commit the transaction");
transaction.commit();
- logger.debug(EELFLoggerDelegate.debugLogger, "committed the transaction");
+ logger.debug(EELFLoggerDelegate.debugLogger, "deleteRoleForApplication: committed the transaction");
dataAccessService.deleteDomainObject(epRoleList.get(0), null);
result = true;
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, "deleteRoleForApplication failed", e);
- throw new Exception(e.getMessage());
- }finally {
+ logger.error(EELFLoggerDelegate.errorLogger, "deleteRoleForApplication: failed", e);
+ result = false;
+ } finally {
localSession.close();
- if (!result) {
- throw new Exception(
- "Exception occurred in deleteRoleForApplication while closing database session for role: '" + deleteRole + "'.");
- }
}
+ return result;
}
+ /**
+ *
+ * It deletes application user role in external auth system
+ *
+ * @param role
+ * @param app
+ * @param LoginId
+ * @throws Exception
+ */
private void deleteUserRoleInExternalSystem(EPRole role, EPApp app, String LoginId) throws Exception {
HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
HttpEntity<String> entity = new HttpEntity<>(headers);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connecting to External Access system");
+ logger.debug(EELFLoggerDelegate.debugLogger,"deleteUserRoleInExternalSystem: {} " , CONNECTING_TO_EXTERNAL_AUTH_SYSTEM_LOG_MESSAGE);
ResponseEntity<String> getResponse = template
.exchange(
SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "userRole/"
.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_USER_DOMAIN)
+ "/" + app.getNameSpace() + "." + role.getName().replaceAll(" ", "_"),
HttpMethod.GET, entity, String.class);
+ logger.debug(EELFLoggerDelegate.debugLogger, "deleteUserRoleInExternalSystem: Finished GET user roles from External Auth system and response: {} ", getResponse.getBody());
if (getResponse.getStatusCode().value() != 200) {
throw new Exception(getResponse.getBody());
}
- logger.debug(EELFLoggerDelegate.debugLogger, "Connected to External Access system");
String res = getResponse.getBody();
- if (!res.equals("{}")) {
+ if (!res.equals(IS_EMPTY_JSON_STRING)) {
HttpEntity<String> userRoleentity = new HttpEntity<>(headers);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connecting to External Access system");
+ logger.debug(EELFLoggerDelegate.debugLogger, "deleteUserRoleInExternalSystem: {} " , CONNECTING_TO_EXTERNAL_AUTH_SYSTEM_LOG_MESSAGE);
ResponseEntity<String> deleteResponse = template
.exchange(
SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL)
if (deleteResponse.getStatusCode().value() != 200) {
throw new Exception("Failed to delete user role");
}
- logger.debug(EELFLoggerDelegate.debugLogger, "Connected to External Access system");
+ logger.debug(EELFLoggerDelegate.debugLogger, "deleteUserRoleInExternalSystem: Finished deleting user role in External Auth system and status code: {} ", deleteResponse.getStatusCode().value());
}
}
appId = app.get(0).getId();
}
List<EPRole> epRole = dataAccessService.getList(EPRole.class,
- " where app_id = " + appId + " and active_yn = 'Y'", null, null);
+ WHERE_APP_ID_EQUALS + appId + " and active_yn = 'Y'", null, null);
roleList = createCentralRoleObject(app, epRole, roleList, params);
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, "getActiveRoles failed", e);
+ logger.error(EELFLoggerDelegate.errorLogger, "getActiveRoles: failed", e);
throw new Exception(e.getMessage());
}
return roleList;
@SuppressWarnings("unchecked")
@Override
- public void deleteDependcyRoleRecord(Long roleId, String uebkey, String LoginId) throws Exception {
+ public boolean deleteDependencyRoleRecord(Long roleId, String uebkey, String LoginId) throws Exception {
boolean result = false;
- Session localSession = null;
+ Session localSession = sessionFactory.openSession();
Transaction transaction = null;
EPApp app = null;
try {
- localSession = sessionFactory.openSession();
transaction = localSession.beginTransaction();
List<EPRole> epRoleList = null;
app = getApp(uebkey).get(0);
epRoleList = dataAccessService.getList(EPRole.class,
- " where app_id = " + app.getId() + " and app_role_id = " + roleId, null, null);
- if(epRoleList.isEmpty()){
+ WHERE_APP_ID_EQUALS + app.getId() + " and app_role_id = " + roleId, null, null);
+ if (epRoleList.isEmpty()) {
epRoleList = dataAccessService.getList(EPRole.class,
- " where app_id = " + app.getId() + " and role_id = " + roleId, null, null);
+ WHERE_APP_ID_EQUALS + app.getId() + " and role_id = " + roleId, null, null);
}
// Delete User Role in External System before deleting role
deleteUserRoleInExternalSystem(epRoleList.get(0), app, LoginId);
// Delete user app roles
dataAccessService.deleteDomainObjects(EPUserApp.class,
- " app_id = " + app.getId() + " and role_id = " + epRoleList.get(0).getId(), null);
-
- deleteRoleDependeciesRecord(localSession, epRoleList.get(0).getId());
- logger.debug(EELFLoggerDelegate.debugLogger, "about to commit the transaction");
+ APP_ID_EQUALS + app.getId() + " and role_id = " + epRoleList.get(0).getId(), null);
+
+ deleteRoleDependencyRecords(localSession, epRoleList.get(0).getId(), app.getId());
+ logger.debug(EELFLoggerDelegate.debugLogger, "deleteDependencyRoleRecord: about to commit the transaction");
transaction.commit();
- logger.debug(EELFLoggerDelegate.debugLogger, "committed the transaction");
+ logger.debug(EELFLoggerDelegate.debugLogger, "deleteDependencyRoleRecord: committed the transaction");
result = true;
+ } catch(HttpClientErrorException e){
+ logger.error(EELFLoggerDelegate.errorLogger, "HttpClientErrorException - Failed to deleteRoleDependeciesRecord", e);
+ EPLogUtil.logExternalAuthAccessAlarm(logger, e.getStatusCode());
} catch (Exception e) {
- EcompPortalUtils.rollbackTransaction(transaction,
- "deleteDependcyRoleRecord rollback, exception = " + e);
+ EcompPortalUtils.rollbackTransaction(transaction, "deleteDependencyRoleRecord: rollback, exception = " + e);
logger.error(EELFLoggerDelegate.errorLogger, EcompPortalUtils.getStackTrace(e));
- }finally {
+ result = false;
+ } finally {
localSession.close();
- if (!result) {
- throw new Exception(
- "Exception occurred in syncAppRoles while closing database session for role: '" + app.getId() + "'.");
- }
}
+ return result;
}
+ @Override
@SuppressWarnings("unchecked")
@Transactional
- public void syncRoleFunctionFromExternalAccessSystem(EPApp app){
- try{
- ResponseEntity<String> response = null;
- HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
- HttpEntity<String> entity = new HttpEntity<>(headers);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connecting to External Access system");
- response = template.exchange(SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL)
- + "perms/ns/" + app.getNameSpace(), HttpMethod.GET, entity, String.class);
-
- String res = response.getBody();
- logger.debug(EELFLoggerDelegate.debugLogger, "Connected to External Access system and the result is :", res);
- JSONObject jsonObj = new JSONObject(res);
- JSONArray extPerms = jsonObj.getJSONArray("perm");
- for (int i = 0; i < extPerms.length(); i++) {
- if (extPerms.getJSONObject(i).getString("type").equals(app.getNameSpace() + ".access")) {
- extPerms.remove(i);
- i--;
+ public void syncRoleFunctionFromExternalAccessSystem(EPApp app) {
+ try {
+ ResponseEntity<String> response = null;
+ HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
+ HttpEntity<String> entity = new HttpEntity<>(headers);
+ logger.debug(EELFLoggerDelegate.debugLogger, "syncRoleFunctionFromExternalAccessSystem: {} " , CONNECTING_TO_EXTERNAL_AUTH_SYSTEM_LOG_MESSAGE);
+ response = template
+ .exchange(SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL)
+ + "perms/ns/" + app.getNameSpace(), HttpMethod.GET, entity, String.class);
+
+ String res = response.getBody();
+ logger.debug(EELFLoggerDelegate.debugLogger, "syncRoleFunctionFromExternalAccessSystem: Finished GET permissions from External Auth system and response: {} ", response.getBody());
+ JSONObject jsonObj = new JSONObject(res);
+ JSONArray extPerms = jsonObj.getJSONArray("perm");
+ for (int i = 0; i < extPerms.length(); i++) {
+ if (extPerms.getJSONObject(i).getString("type").equals(app.getNameSpace() + ".access")) {
+ extPerms.remove(i);
+ i--;
+ }
}
- }
- ExternalAccessPermsDetail permDetails = null;
- List<ExternalAccessPermsDetail> permsDetailList = new ArrayList<>();
- for (int i = 0; i < extPerms.length(); i++) {
- if (extPerms.getJSONObject(i).has("roles")) {
- ObjectMapper rolesListMapper = new ObjectMapper();
- JSONArray resRoles = extPerms.getJSONObject(i).getJSONArray("roles");
- List<String> list = rolesListMapper.readValue(resRoles.toString(),
- TypeFactory.defaultInstance().constructCollectionType(List.class, String.class));
- permDetails = new ExternalAccessPermsDetail(extPerms.getJSONObject(i).getString("type"),
- extPerms.getJSONObject(i).getString("instance"), extPerms.getJSONObject(i).getString("action"),
- list, extPerms.getJSONObject(i).getString("description"));
- permsDetailList.add(permDetails);
- } else {
- permDetails = new ExternalAccessPermsDetail(extPerms.getJSONObject(i).getString("type"),
- extPerms.getJSONObject(i).getString("instance"), extPerms.getJSONObject(i).getString("action"),
- extPerms.getJSONObject(i).getString("description"));
- permsDetailList.add(permDetails);
+ ExternalAccessPermsDetail permDetails = null;
+ List<ExternalAccessPermsDetail> permsDetailList = new ArrayList<>();
+ for (int i = 0; i < extPerms.length(); i++) {
+ if (extPerms.getJSONObject(i).has("roles")) {
+ ObjectMapper rolesListMapper = new ObjectMapper();
+ JSONArray resRoles = extPerms.getJSONObject(i).getJSONArray("roles");
+ List<String> list = rolesListMapper.readValue(resRoles.toString(),
+ TypeFactory.defaultInstance().constructCollectionType(List.class, String.class));
+ permDetails = new ExternalAccessPermsDetail(extPerms.getJSONObject(i).getString("type"),
+ extPerms.getJSONObject(i).getString("instance"),
+ extPerms.getJSONObject(i).getString("action"), list,
+ extPerms.getJSONObject(i).getString(EXTERNAL_AUTH_ROLE_DESCRIPTION));
+ permsDetailList.add(permDetails);
+ } else {
+ permDetails = new ExternalAccessPermsDetail(extPerms.getJSONObject(i).getString("type"),
+ extPerms.getJSONObject(i).getString("instance"),
+ extPerms.getJSONObject(i).getString("action"),
+ extPerms.getJSONObject(i).getString(EXTERNAL_AUTH_ROLE_DESCRIPTION));
+ permsDetailList.add(permDetails);
+ }
}
- }
- final Map<String, Long> params = new HashMap<>();
- final Map<String, CentralRoleFunction> roleFuncMap = new HashMap<>();
- params.put("appId", app.getId());
- List<CentralRoleFunction> appFunctions = dataAccessService.executeNamedQuery("getAllRoleFunctions", params,
- null);
- if (appFunctions.size() > 0) {
- for (CentralRoleFunction roleFunc : appFunctions) {
- roleFuncMap.put(roleFunc.getCode(), roleFunc);
- }
- }
- // delete all application role functions
- dataAccessService.deleteDomainObjects(EPAppRoleFunction.class, " app_id = " + app.getId(), null);
-
- // Add if new functions and app role functions were added in Externalsystem
- for (ExternalAccessPermsDetail permsDetail : permsDetailList) {
- if (!roleFuncMap.containsKey(permsDetail.getInstance())) {
- CentralRoleFunction addFunction = new CentralRoleFunction();
- addFunction.setAppId(app.getId());
- addFunction.setCode(permsDetail.getInstance());
- addFunction.setName(permsDetail.getDescription());
- dataAccessService.saveDomainObject(addFunction, null);
+ final Map<String, Long> params = new HashMap<>();
+ final Map<String, CentralRoleFunction> roleFuncMap = new HashMap<>();
+ params.put(APP_ID, app.getId());
+ List<CentralRoleFunction> appFunctions = dataAccessService.executeNamedQuery("getAllRoleFunctions", params,
+ null);
+ if (!appFunctions.isEmpty()) {
+ for (CentralRoleFunction roleFunc : appFunctions) {
+ roleFuncMap.put(roleFunc.getCode(), roleFunc);
+ }
}
+ // delete all application role functions
+ dataAccessService.deleteDomainObjects(EPAppRoleFunction.class, APP_ID_EQUALS + app.getId(), null);
+
+ // Add if new functions and app role functions were added in external auth system
+ for (ExternalAccessPermsDetail permsDetail : permsDetailList) {
+ if (!roleFuncMap.containsKey(permsDetail.getInstance())) {
+ try{
+ CentralRoleFunction addFunction = new CentralRoleFunction();
+ addFunction.setAppId(app.getId());
+ addFunction.setCode(permsDetail.getInstance());
+ addFunction.setName(permsDetail.getDescription());
+ dataAccessService.saveDomainObject(addFunction, null);
+ } catch(Exception e){
+ logger.error(EELFLoggerDelegate.errorLogger, "syncRoleFunctionFromExternalAccessSystem: Failed to add function", e);
+ }
+ }
List<EPRole> epRolesList = null;
List<String> roles = permsDetail.getRoles();
if (roles != null) {
- for (String roleList : roles) {
- if (app.getId().equals(PortalConstants.PORTAL_APP_ID)) {
- epRolesList = dataAccessService.getList(EPRole.class,
- " where app_id is null " + " and role_name = '"
- + roleList.substring(app.getNameSpace().length() + 1).replaceAll("_", " ") +"'",
- null, null);
- } else {
- epRolesList = dataAccessService.getList(EPRole.class,
- " where app_id = " + app.getId() + " and role_name = '"
- + roleList.substring(app.getNameSpace().length() + 1).replaceAll("_", " ") +"'",
- null, null);
- }
- if(epRolesList.isEmpty()){
+ for (String roleList : roles) {
if (app.getId().equals(PortalConstants.PORTAL_APP_ID)) {
epRolesList = dataAccessService.getList(EPRole.class,
" where app_id is null " + " and role_name = '"
- + roleList.substring(app.getNameSpace().length() + 1)
+ + roleList.substring(app.getNameSpace().length() + 1).replaceAll("_", " ")
+ "'",
null, null);
} else {
epRolesList = dataAccessService.getList(EPRole.class,
- " where app_id = " + app.getId() + " and role_name = '"
- + roleList.substring(app.getNameSpace().length() + 1)+"'",
+ WHERE_APP_ID_EQUALS + app.getId() + " and role_name = '"
+ + roleList.substring(app.getNameSpace().length() + 1).replaceAll("_", " ")
+ + "'",
null, null);
}
- }
- // save all application role functions
- if (epRolesList.size() > 0 || !epRolesList.isEmpty()) {
- EPAppRoleFunction addAppRoleFunc = new EPAppRoleFunction();
- addAppRoleFunc.setAppId(app.getId());
- addAppRoleFunc.setCode(permsDetail.getInstance());
- addAppRoleFunc.setRoleId(epRolesList.get(0).getId());
- dataAccessService.saveDomainObject(addAppRoleFunc, null);
+ if (epRolesList.isEmpty()) {
+ if (app.getId().equals(PortalConstants.PORTAL_APP_ID)) {
+ epRolesList = dataAccessService.getList(EPRole.class,
+ " where app_id is null " + " and role_name = '"
+ + roleList.substring(app.getNameSpace().length() + 1) + "'",
+ null, null);
+ } else {
+ epRolesList = dataAccessService.getList(EPRole.class,
+ WHERE_APP_ID_EQUALS + app.getId() + " and role_name = '"
+ + roleList.substring(app.getNameSpace().length() + 1) + "'",
+ null, null);
+ }
+ }
+ // save all application role functions
+ if (!epRolesList.isEmpty()) {
+ try{
+ EPAppRoleFunction addAppRoleFunc = new EPAppRoleFunction();
+ addAppRoleFunc.setAppId(app.getId());
+ addAppRoleFunc.setCode(permsDetail.getInstance());
+ addAppRoleFunc.setRoleId(epRolesList.get(0).getId());
+ dataAccessService.saveDomainObject(addAppRoleFunc, null);
+ } catch(Exception e){
+ logger.error(EELFLoggerDelegate.errorLogger, "syncRoleFunctionFromExternalAccessSystem: Failed to save app role function ", e);
+ }
+ }
}
}
}
- }
- logger.debug(EELFLoggerDelegate.debugLogger, "Finished syncRoleFunctionFromExternalAccessSystem");
- } catch(Exception e){
- logger.error(EELFLoggerDelegate.errorLogger, "Failed syncRoleFunctionFromExternalAccessSystem", e);
+ logger.debug(EELFLoggerDelegate.debugLogger, "syncRoleFunctionFromExternalAccessSystem: Finished syncRoleFunctionFromExternalAccessSystem");
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "syncRoleFunctionFromExternalAccessSystem: Failed syncRoleFunctionFromExternalAccessSystem", e);
}
}
-
+
+ @Override
@SuppressWarnings("unchecked")
public Integer bulkUploadFunctions(String uebkey) throws Exception {
EPApp app = getApp(uebkey).get(0);
addRoleFunctionInExternalSystem(cenRoleFunc, app);
functionsAdded++;
}
+ } catch(HttpClientErrorException e){
+ logger.error(EELFLoggerDelegate.errorLogger, "HttpClientErrorException - bulkUploadFunctions failed", e);
+ EPLogUtil.logExternalAuthAccessAlarm(logger, e.getStatusCode());
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadFunctions failed", e.getMessage(), e);
+ logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadFunctions: failed", e.getMessage(), e);
}
return functionsAdded;
}
+ @Override
public Integer bulkUploadRoles(String uebkey) throws Exception {
List<EPApp> app = getApp(uebkey);
- List<EPRole> roles = getAppRoles(app.get(0).getId(), null);
+ List<EPRole> roles = getAppRoles(app.get(0).getId());
List<CentralRole> cenRoleList = new ArrayList<>();
final Map<String, Long> params = new HashMap<>();
Integer rolesListAdded = 0;
rolesListAdded++;
}
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadRoles failed", e);
+ logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadRoles: failed", e);
throw new Exception(e.getMessage());
}
return rolesListAdded;
}
-
+
+ /**
+ * It creating new role in external auth system while doing bulk upload
+ *
+ * @param role
+ * @param app
+ * @throws Exception
+ */
private void addRoleInExternalSystem(Role role, EPApp app) throws Exception {
- String addRoleNew = createNewRoleInExternalSystem(role, app);
+ String addRoleNew = updateExistingRoleInExternalSystem(role, app);
HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
- try{
- HttpEntity<String> entity = new HttpEntity<>(addRoleNew, headers);
- template.exchange(
- SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "role",
- HttpMethod.POST, entity, String.class);
- } catch(Exception e){
+ try {
+ HttpEntity<String> entity = new HttpEntity<>(addRoleNew, headers);
+ template.exchange(
+ SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "role",
+ HttpMethod.POST, entity, String.class);
+ } catch(HttpClientErrorException e){
+ logger.error(EELFLoggerDelegate.errorLogger, "HttpClientErrorException - Failed to addRoleInExternalSystem", e);
+ EPLogUtil.logExternalAuthAccessAlarm(logger, e.getStatusCode());
+ } catch (Exception e) {
if (e.getMessage().equalsIgnoreCase("409 Conflict")) {
- logger.error(EELFLoggerDelegate.errorLogger, "Role already exits but does not break functionality");
+ logger.error(EELFLoggerDelegate.errorLogger, "addRoleInExternalSystem: Role already exits but does not break functionality", e);
} else {
- logger.error(EELFLoggerDelegate.errorLogger, "Failed to addRoleInExternalSystem", e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, "addRoleInExternalSystem: Failed to addRoleInExternalSystem", e.getMessage());
}
}
}
-
+
+ @Override
@SuppressWarnings("unchecked")
public Integer bulkUploadRolesFunctions(String uebkey) throws Exception {
EPApp app = getApp(uebkey).get(0);
- List<EPRole> roles = getAppRoles(app.getId(), null);
+ List<EPRole> roles = getAppRoles(app.getId());
final Map<String, Long> params = new HashMap<>();
Integer roleFunctions = 0;
try {
for (EPRole role : roles) {
params.put("roleId", role.getId());
- List<BulkUploadRoleFunction> appRoleFunc = dataAccessService.executeNamedQuery("uploadAllRoleFunctions", params, null);
- if(!appRoleFunc.isEmpty()){
- for(BulkUploadRoleFunction addRoleFunc : appRoleFunc){
+ List<BulkUploadRoleFunction> appRoleFunc = dataAccessService.executeNamedQuery("uploadAllRoleFunctions",
+ params, null);
+ if (!appRoleFunc.isEmpty()) {
+ for (BulkUploadRoleFunction addRoleFunc : appRoleFunc) {
addRoleFunctionsInExternalSystem(addRoleFunc, role, app);
roleFunctions++;
}
}
}
+ } catch(HttpClientErrorException e){
+ logger.error(EELFLoggerDelegate.errorLogger, "HttpClientErrorException - Failed to bulkUploadRolesFunctions", e);
+ EPLogUtil.logExternalAuthAccessAlarm(logger, e.getStatusCode());
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadRolesFunctions failed", e);
+ logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadRolesFunctions: failed", e);
}
return roleFunctions;
}
-
- private void addRoleFunctionsInExternalSystem(BulkUploadRoleFunction addRoleFunc, EPRole role, EPApp app){
- String checkType = addRoleFunc.getFunctionCd().contains("menu") ? "menu" : "url";
- ExternalAccessRolePerms extRolePerms = null;
- ExternalAccessPerms extPerms = null;
- ObjectMapper mapper = new ObjectMapper();
- try{
+
+ /**
+ * Its adding a role function while doing bulk upload
+ *
+ * @param addRoleFunc
+ * @param role
+ * @param app
+ */
+ private void addRoleFunctionsInExternalSystem(BulkUploadRoleFunction addRoleFunc, EPRole role, EPApp app) {
+ String checkType = addRoleFunc.getFunctionCd().contains("menu") ? "menu" : "url";
+ ExternalAccessRolePerms extRolePerms = null;
+ ExternalAccessPerms extPerms = null;
+ ObjectMapper mapper = new ObjectMapper();
+ try {
HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
- extPerms = new ExternalAccessPerms(app.getNameSpace() + "." + checkType, addRoleFunc.getFunctionCd(), "*", addRoleFunc.getFunctionName());
+ extPerms = new ExternalAccessPerms(app.getNameSpace() + "." + checkType, addRoleFunc.getFunctionCd(), "*",
+ addRoleFunc.getFunctionName());
extRolePerms = new ExternalAccessRolePerms(extPerms,
app.getNameSpace() + "." + role.getName().replaceAll(" ", "_"));
String updateRolePerms = mapper.writeValueAsString(extRolePerms);
HttpEntity<String> entity = new HttpEntity<>(updateRolePerms, headers);
- template
- .exchange(SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL)
- + "role/perm", HttpMethod.POST, entity, String.class);
- } catch(Exception e){
- if (e.getMessage().equalsIgnoreCase("409 Conflict")) {
- logger.error(EELFLoggerDelegate.errorLogger, "RoleFunction already exits but does not break functionality",e);
- } else {
- logger.error(EELFLoggerDelegate.errorLogger, "Failed to addRoleFunctionsInExternalSystem", e.getMessage());
- }
+ template.exchange(
+ SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "role/perm",
+ HttpMethod.POST, entity, String.class);
+ } catch (Exception e) {
+ if (e.getMessage().equalsIgnoreCase("409 Conflict")) {
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "addRoleFunctionsInExternalSystem: RoleFunction already exits but does not break functionality", e);
+ } else {
+ logger.error(EELFLoggerDelegate.errorLogger, "addRoleFunctionsInExternalSystem: Failed to addRoleFunctionsInExternalSystem",
+ e.getMessage());
}
+ }
}
@Override
} catch (Exception e) {
if (e.getMessage().equalsIgnoreCase("409 Conflict")) {
logger.error(EELFLoggerDelegate.errorLogger,
- "RoleFunction already exits but does not break functionality");
+ "bulkUploadPartnerRoleFunctions: RoleFunction already exits but does not break functionality");
} else {
- logger.error(EELFLoggerDelegate.errorLogger, "Failed to addRoleFunctionsInExternalSystem",
+ logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadPartnerRoleFunctions: Failed to addRoleFunctionsInExternalSystem",
e.getMessage());
}
}
}
}
-
+
+ @Override
@SuppressWarnings("unchecked")
@Transactional
- public void SyncApplicationRolesWithEcompDB(EPApp app){
- try{
- ResponseEntity<String> response = null;
- List<EPRole> finalRoleList = new ArrayList<>();
- ExternalRoleDescription ApplicationRole = new ExternalRoleDescription();
- ExternalAccessPerms externalAccessPerms = null;
- List<String> functionCodelist = new ArrayList<>();
- List<ExternalRoleDetails> externalRoleDetailsList = new ArrayList<>();
- ObjectMapper mapper = new ObjectMapper();
- HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
- HttpEntity<String> entity = new HttpEntity<>(headers);
- logger.debug(EELFLoggerDelegate.debugLogger, "Connecting to External Access system");
- response = template.exchange(SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL)
- + "roles/ns/" + app.getNameSpace(), HttpMethod.GET, entity, String.class);
- String res = response.getBody();
- logger.debug(EELFLoggerDelegate.debugLogger, "Connected to External Access system and the result is :", res);
- JSONObject jsonObj = new JSONObject(res);
- JSONArray extRole = jsonObj.getJSONArray("role");
- for (int i = 0; i < extRole.length(); i++) {
- if (extRole.getJSONObject(i).getString("name").equals(app.getNameSpace() + ".admin")
- || extRole.getJSONObject(i).getString("name").equals(app.getNameSpace() + ".owner")
- ) {
- extRole.remove(i);
- i--;
- }
- if(!app.getId().equals(PortalConstants.PORTAL_APP_ID) && extRole.getJSONObject(i).get("name").equals(app.getNameSpace()+"."+PortalConstants.ADMIN_ROLE.replaceAll(" ", "_"))){
- extRole.remove(i);
- i--;
- }
- }
- List<EPAppRoleFunction> applicationRoleFunctionList = new ArrayList<>();
- for (int i = 0; i < extRole.length(); i++) {
- ExternalRoleDetails externalRoleDetail = new ExternalRoleDetails();
- EPAppRoleFunction ePAppRoleFunction = new EPAppRoleFunction();
- JSONObject Role = (JSONObject) extRole.get(i);
- if(!extRole.getJSONObject(i).has("description"))
- {
- ApplicationRole.setActive("true");
- ApplicationRole.setAppId("null");
- ApplicationRole.setPriority("null");
- ApplicationRole.setAppRoleId("null");
- String roleName =extRole.getJSONObject(i).getString("name");
- ApplicationRole.setName(roleName.substring(app.getNameSpace().length()+1));
- }
- else {
- String desc = extRole.getJSONObject(i).getString("description");
- ApplicationRole = mapper.readValue(desc, ExternalRoleDescription.class);
+ public void syncApplicationRolesWithEcompDB(EPApp app) {
+ try {
+ ResponseEntity<String> response = null;
+ List<EPRole> finalRoleList = new ArrayList<>();
+ ExternalRoleDescription ApplicationRole = new ExternalRoleDescription();
+ ExternalAccessPerms externalAccessPerms = null;
+ List<String> functionCodelist = new ArrayList<>();
+ List<ExternalRoleDetails> externalRoleDetailsList = new ArrayList<>();
+ ObjectMapper mapper = new ObjectMapper();
+ HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
+ HttpEntity<String> entity = new HttpEntity<>(headers);
+ logger.debug(EELFLoggerDelegate.debugLogger, "syncApplicationRolesWithEcompDB: {} " , CONNECTING_TO_EXTERNAL_AUTH_SYSTEM_LOG_MESSAGE);
+ response = template
+ .exchange(SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL)
+ + "roles/ns/" + app.getNameSpace(), HttpMethod.GET, entity, String.class);
+ String res = response.getBody();
+ logger.debug(EELFLoggerDelegate.debugLogger, "syncApplicationRolesWithEcompDB: Finished GET roles from External Auth system and the result is :",
+ res);
+ JSONObject jsonObj = new JSONObject(res);
+ JSONArray extRole = jsonObj.getJSONArray("role");
+ for (int i = 0; i < extRole.length(); i++) {
+ if (extRole.getJSONObject(i).getString(ROLE_NAME).equals(app.getNameSpace() + ".admin")
+ || extRole.getJSONObject(i).getString(ROLE_NAME).equals(app.getNameSpace() + ".owner")) {
+ extRole.remove(i);
+ i--;
+ }
+ if (!app.getId().equals(PortalConstants.PORTAL_APP_ID) && extRole.getJSONObject(i).get(ROLE_NAME)
+ .equals(app.getNameSpace() + "." + PortalConstants.ADMIN_ROLE.replaceAll(" ", "_"))) {
+ extRole.remove(i);
+ i--;
+ }
}
-
+ List<EPAppRoleFunction> applicationRoleFunctionList = new ArrayList<>();
+ for (int i = 0; i < extRole.length(); i++) {
+ ExternalRoleDetails externalRoleDetail = new ExternalRoleDetails();
+ EPAppRoleFunction ePAppRoleFunction = new EPAppRoleFunction();
+ JSONObject Role = (JSONObject) extRole.get(i);
+ if (!extRole.getJSONObject(i).has(EXTERNAL_AUTH_ROLE_DESCRIPTION)) {
+ ApplicationRole.setActive("true");
+ ApplicationRole.setAppId(IS_NULL_STRING);
+ ApplicationRole.setPriority(IS_NULL_STRING);
+ ApplicationRole.setAppRoleId(IS_NULL_STRING);
+ String roleName = extRole.getJSONObject(i).getString(ROLE_NAME);
+ ApplicationRole.setName(roleName.substring(app.getNameSpace().length() + 1));
+ } else {
+ String desc = extRole.getJSONObject(i).getString(EXTERNAL_AUTH_ROLE_DESCRIPTION);
+ ApplicationRole = mapper.readValue(desc, ExternalRoleDescription.class);
+ }
- SortedSet<ExternalAccessPerms> externalAccessPermsOfRole = new TreeSet<>();
- if (extRole.getJSONObject(i).has("perms")) {
- JSONArray extPerm = (JSONArray) Role.get("perms");
- for (int j = 0; j < extPerm.length(); j++) {
- JSONObject perms = extPerm.getJSONObject(j);
- externalAccessPerms = new ExternalAccessPerms(perms.getString("type"), perms.getString("instance"),
- perms.getString("action"));
- ePAppRoleFunction.setCode(externalAccessPerms.getInstance());
- functionCodelist.add(ePAppRoleFunction.getCode());
- externalAccessPermsOfRole.add(externalAccessPerms);
+ SortedSet<ExternalAccessPerms> externalAccessPermsOfRole = new TreeSet<>();
+ if (extRole.getJSONObject(i).has(EXTERNAL_AUTH_PERMS)) {
+ JSONArray extPerm = (JSONArray) Role.get(EXTERNAL_AUTH_PERMS);
+ for (int j = 0; j < extPerm.length(); j++) {
+ JSONObject perms = extPerm.getJSONObject(j);
+ externalAccessPerms = new ExternalAccessPerms(perms.getString("type"),
+ perms.getString("instance"), perms.getString("action"));
+ ePAppRoleFunction.setCode(externalAccessPerms.getInstance());
+ functionCodelist.add(ePAppRoleFunction.getCode());
+ externalAccessPermsOfRole.add(externalAccessPerms);
+ }
}
- }
- if (ApplicationRole.getActive().equals("null")) {
- externalRoleDetail.setActive(false);
- } else {
- externalRoleDetail.setActive(Boolean.parseBoolean(ApplicationRole.getActive().toString()));
- }
- externalRoleDetail.setName(ApplicationRole.getName());
-
- if (ApplicationRole.getAppId().equals("null") && app.getId() == 1) {
- externalRoleDetail.setAppId(null);
- } else if(ApplicationRole.getAppId().equals("null")){
- externalRoleDetail.setAppId(app.getId());
- }else {
- externalRoleDetail.setAppId(Long.parseLong(ApplicationRole.getAppId().toString()));
+ if (ApplicationRole.getActive().equals(IS_NULL_STRING)) {
+ externalRoleDetail.setActive(false);
+ } else {
+ externalRoleDetail.setActive(Boolean.parseBoolean(ApplicationRole.getActive().toString()));
+ }
+ externalRoleDetail.setName(ApplicationRole.getName());
+
+ if (ApplicationRole.getAppId().equals(IS_NULL_STRING) && app.getId() == 1) {
+ externalRoleDetail.setAppId(null);
+ } else if (ApplicationRole.getAppId().equals(IS_NULL_STRING)) {
+ externalRoleDetail.setAppId(app.getId());
+ } else {
+ externalRoleDetail.setAppId(Long.parseLong(ApplicationRole.getAppId().toString()));
+ }
+
+ if (ApplicationRole.getPriority().equals(IS_NULL_STRING)) {
+ externalRoleDetail.setPriority(null);
+ } else {
+ externalRoleDetail.setPriority(Integer.parseInt(ApplicationRole.getPriority().toString()));
+ }
+
+ if (ApplicationRole.getAppRoleId().equals(IS_NULL_STRING) && app.getId() == 1) {
+ externalRoleDetail.setAppRoleId(null);
+ }
+
+ if (!externalAccessPermsOfRole.isEmpty()) {
+ for (ExternalAccessPerms externalpermission : externalAccessPermsOfRole) {
+ EPAppRoleFunction apRoleFunction = new EPAppRoleFunction();
+ apRoleFunction.setAppId(app.getId());
+ apRoleFunction.setRoleId(Long.parseLong(ApplicationRole.getId()));
+ apRoleFunction.setCode(externalpermission.getInstance());
+ applicationRoleFunctionList.add(apRoleFunction);
+ }
+ }
+ externalRoleDetailsList.add(externalRoleDetail);
}
- if (ApplicationRole.getPriority().equals("null")) {
- externalRoleDetail.setPriority(null);
- } else {
- externalRoleDetail.setPriority(Integer.parseInt(ApplicationRole.getPriority().toString()));
+ for (ExternalRoleDetails externalRole : externalRoleDetailsList) {
+ EPRole ecompRole = convertExternalRoleDetailstoEpRole(externalRole);
+ finalRoleList.add(ecompRole);
}
- if (ApplicationRole.getAppRoleId().equals("null") && app.getId() == 1) {
- externalRoleDetail.setAppRoleId(null);
+ List<EPRole> applicationRolesList = new ArrayList<>();
+ applicationRolesList = getAppRoles(app.getId());
+ List<String> applicationRoleIdList = new ArrayList<>();
+ for (EPRole applicationRole : applicationRolesList) {
+ applicationRoleIdList.add(applicationRole.getName());
}
- if (!externalAccessPermsOfRole.isEmpty() || externalAccessPermsOfRole.size() > 0) {
- for (ExternalAccessPerms externalpermission : externalAccessPermsOfRole) {
- EPAppRoleFunction apRoleFunction = new EPAppRoleFunction();
- apRoleFunction.setAppId(app.getId());
- apRoleFunction.setRoleId(Long.parseLong(ApplicationRole.getId()));
- apRoleFunction.setCode(externalpermission.getInstance());
- applicationRoleFunctionList.add(apRoleFunction);
+ List<EPRole> roleListToBeAddInEcompDB = new ArrayList<>();
+ for (EPRole aafRole : finalRoleList) {
+ if (!applicationRoleIdList.contains(aafRole.getName())) {
+ roleListToBeAddInEcompDB.add(aafRole);
}
}
- externalRoleDetailsList.add(externalRoleDetail);
- }
-
- for (ExternalRoleDetails externalRole : externalRoleDetailsList) {
- EPRole ecompRole = new EPRole();
- ecompRole = convertExternalRoleDetailstoEpRole(externalRole);
- finalRoleList.add(ecompRole);
- }
- List<EPRole> applicationRolesList = new ArrayList<>();
- applicationRolesList = getAppRoles(app.getId(), null);
- List<String> applicationRoleIdList = new ArrayList<>();
- for (EPRole applicationRole : applicationRolesList) {
- applicationRoleIdList.add(applicationRole.getName());
- }
-
- List<EPRole> roleListToBeAddInEcompDB = new ArrayList<>();
- for (EPRole aafRole : finalRoleList) {
- if (!applicationRoleIdList.contains(aafRole.getName())) {
- roleListToBeAddInEcompDB.add(aafRole);
+ // Check if roles exits in external Access system and make it
+ // inactive
+ final Map<String, EPRole> checkRolesInactive = new HashMap<>();
+ for (EPRole extrole : finalRoleList) {
+ checkRolesInactive.put(extrole.getName(), extrole);
}
- }
-
- // Check if roles exits in external Access system and make it inactive
- final Map<String, EPRole> checkRolesInactive = new HashMap<>();
- for(EPRole extrole : finalRoleList){
- checkRolesInactive.put(extrole.getName(), extrole);
- }
for (EPRole role : applicationRolesList) {
final Map<String, String> extRoleParams = new HashMap<>();
List<EPRole> roleList = new ArrayList<>();
if (app.getId() == 1) {
roleList = dataAccessService.executeNamedQuery("getPortalAppRoles", extRoleParams, null);
} else {
- extRoleParams.put("appId", app.getId().toString());
+ extRoleParams.put(APP_ID, app.getId().toString());
roleList = dataAccessService.executeNamedQuery("getRoletoUpdateAAF", extRoleParams, null);
}
EPRole updateRoleInactive = roleList.get(0);
updateRoleInactive.setActive(false);
- dataAccessService.saveDomainObject(updateRoleInactive, null);
+ dataAccessService.saveDomainObject(updateRoleInactive, null);
}
}
-
+
for (EPRole roleItem : finalRoleList) {
final Map<String, String> roleParams = new HashMap<>();
List<EPRole> currentList = new ArrayList<>();
if (app.getId() == 1) {
currentList = dataAccessService.executeNamedQuery("getPortalAppRoles", roleParams, null);
} else {
- roleParams.put("appId", app.getId().toString());
+ roleParams.put(APP_ID, app.getId().toString());
currentList = dataAccessService.executeNamedQuery("getRoletoUpdateAAF", roleParams, null);
}
}
}
- EPRole roleToBeAddedInEcompDB = new EPRole();
- for (int i = 0; i < roleListToBeAddInEcompDB.size(); i++) {
- roleToBeAddedInEcompDB = roleListToBeAddInEcompDB.get(i);
- if(app.getId() == 1)
- {
- roleToBeAddedInEcompDB.setAppRoleId(null);
- }
- dataAccessService.saveDomainObject(roleToBeAddedInEcompDB, null);
- List <EPRole> getRoleCreatedInSync = null;
- if (!app.getId().equals(PortalConstants.PORTAL_APP_ID)) {
- getRoleCreatedInSync = dataAccessService.getList(EPRole.class,
- " where role_name = '" + roleToBeAddedInEcompDB.getName() +"'", null, null);
- EPRole epUpdateRole = getRoleCreatedInSync.get(0);
- epUpdateRole.setAppRoleId(epUpdateRole.getId());
- dataAccessService.saveDomainObject(epUpdateRole, null);
- }
- List<EPRole> roleList = new ArrayList<>();
- final Map<String, String> params = new HashMap<>();
+ EPRole roleToBeAddedInEcompDB = new EPRole();
+ for (int i = 0; i < roleListToBeAddInEcompDB.size(); i++) {
+ roleToBeAddedInEcompDB = roleListToBeAddInEcompDB.get(i);
+ if (app.getId() == 1) {
+ roleToBeAddedInEcompDB.setAppRoleId(null);
+ }
+ dataAccessService.saveDomainObject(roleToBeAddedInEcompDB, null);
+ List<EPRole> getRoleCreatedInSync = null;
+ if (!app.getId().equals(PortalConstants.PORTAL_APP_ID)) {
+ getRoleCreatedInSync = dataAccessService.getList(EPRole.class,
+ WHERE_ROLE_NAME_EQUALS + roleToBeAddedInEcompDB.getName() + "'", null, null);
+ EPRole epUpdateRole = getRoleCreatedInSync.get(0);
+ epUpdateRole.setAppRoleId(epUpdateRole.getId());
+ dataAccessService.saveDomainObject(epUpdateRole, null);
+ }
+ List<EPRole> roleList = new ArrayList<>();
+ final Map<String, String> params = new HashMap<>();
- params.put("appRoleName", roleToBeAddedInEcompDB.getName());
- if (app.getId() == 1) {
- roleList = dataAccessService.executeNamedQuery("getPortalAppRoles", params, null);
- } else {
- params.put("appId", app.getId().toString());
- roleList = dataAccessService.executeNamedQuery("getRoletoUpdateAAF", params, null);
+ params.put("appRoleName", roleToBeAddedInEcompDB.getName());
+ if (app.getId() == 1) {
+ roleList = dataAccessService.executeNamedQuery("getPortalAppRoles", params, null);
+ } else {
+ params.put(APP_ID, app.getId().toString());
+ roleList = dataAccessService.executeNamedQuery("getRoletoUpdateAAF", params, null);
+ }
+ EPRole role = roleList.get(0);
+ Role aaFrole = new Role();
+ aaFrole.setId(role.getId());
+ aaFrole.setActive(role.getActive());
+ aaFrole.setPriority(role.getPriority());
+ aaFrole.setName(role.getName());
+ updateRoleInExternalSystem(aaFrole, app);
}
- EPRole role = roleList.get(0);
- Role aaFrole = new Role();
- aaFrole.setId(role.getId());
- aaFrole.setActive(role.getActive());
- aaFrole.setPriority(role.getPriority());
- aaFrole.setName(role.getName());
- updateRoleInExternalSystem(aaFrole, app);
- }
- dataAccessService.deleteDomainObjects(EPAppRoleFunction.class, " app_id = " + app.getId(), null);
+ dataAccessService.deleteDomainObjects(EPAppRoleFunction.class, APP_ID_EQUALS + app.getId(), null);
for (EPAppRoleFunction rolefun : applicationRoleFunctionList) {
dataAccessService.saveDomainObject(rolefun, null);
}
-
- logger.debug(EELFLoggerDelegate.debugLogger, "Finished SyncApplicationRolesWithEcompDB");
- }catch(Exception e){
+ logger.debug(EELFLoggerDelegate.debugLogger, "syncApplicationRolesWithEcompDB: Finished");
+ } catch(HttpClientErrorException e){
logger.error(EELFLoggerDelegate.errorLogger, "Failed to SyncApplicationRolesWithEcompDB", e);
+ EPLogUtil.logExternalAuthAccessAlarm(logger, e.getStatusCode());
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "syncApplicationRolesWithEcompDB: Failed ", e);
}
}
- public EPRole convertExternalRoleDetailstoEpRole(ExternalRoleDetails externalRoleDetails) {
+ /**
+ *
+ * It converts from ExternalRoleDetails.class object to EPRole.class object
+ *
+ * @param externalRoleDetails
+ * @return EPRole object
+ */
+ private EPRole convertExternalRoleDetailstoEpRole(ExternalRoleDetails externalRoleDetails) {
EPRole role = new EPRole();
role.setActive(externalRoleDetails.isActive());
role.setAppId(externalRoleDetails.getAppId());
return userRolesAdded;
}
- private void addUserRoleInExternalSystem(BulkUploadUserRoles userRolesUpload){
- try{
- String name = "";
- ObjectMapper mapper = new ObjectMapper();
- if (EPCommonSystemProperties.containsProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_USER_DOMAIN)) {
- name = userRolesUpload.getOrgUserId()
- + SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_USER_DOMAIN);
- }
- ExternalAccessUser extUser = new ExternalAccessUser(name,
- userRolesUpload.getAppNameSpace() + "." + userRolesUpload.getRoleName().replaceAll(" ", "_"));
- String userRole = mapper.writeValueAsString(extUser);
- HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
- HttpEntity<String> entity = new HttpEntity<>(userRole, headers);
- template.exchange(
- SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "userRole",
- HttpMethod.POST, entity, String.class);
+ /**
+ * Its adding a user role in external auth system while doing bulk upload
+ *
+ * @param userRolesUpload
+ */
+ private void addUserRoleInExternalSystem(BulkUploadUserRoles userRolesUpload) {
+ try {
+ String name = "";
+ ObjectMapper mapper = new ObjectMapper();
+ if (EPCommonSystemProperties
+ .containsProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_USER_DOMAIN)) {
+ name = userRolesUpload.getOrgUserId()
+ + SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_USER_DOMAIN);
+ }
+ ExternalAccessUser extUser = new ExternalAccessUser(name,
+ userRolesUpload.getAppNameSpace() + "." + userRolesUpload.getRoleName().replaceAll(" ", "_"));
+ String userRole = mapper.writeValueAsString(extUser);
+ HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
+ HttpEntity<String> entity = new HttpEntity<>(userRole, headers);
+ template.exchange(
+ SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "userRole",
+ HttpMethod.POST, entity, String.class);
+ } catch(HttpClientErrorException e){
+ logger.error(EELFLoggerDelegate.errorLogger, "HttpClientErrorException - Failed to addUserRoleInExternalSystem", e);
+ EPLogUtil.logExternalAuthAccessAlarm(logger, e.getStatusCode());
} catch (Exception e) {
if (e.getMessage().equalsIgnoreCase("409 Conflict")) {
- logger.error(EELFLoggerDelegate.errorLogger, "UserRole already exits but does not break functionality");
+ logger.error(EELFLoggerDelegate.errorLogger, "addUserRoleInExternalSystem: UserRole already exits but does not break functionality");
} else {
- logger.error(EELFLoggerDelegate.errorLogger, "Failed to addUserRoleInExternalSystem", e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, "addUserRoleInExternalSystem: Failed to addUserRoleInExternalSystem", e.getMessage());
}
}
}
@Override
- public void deleteRoleDependeciesRecord(Session localSession, Long roleId) throws Exception {
+ public void deleteRoleDependencyRecords(Session localSession, Long roleId, Long appId) throws Exception {
try {
+ String sql = "";
+ Query query = null;
+
+ //It should delete only when it portal's roleId
+ if(appId.equals(PortalConstants.PORTAL_APP_ID)){
// Delete from fn_role_function
- String sql = "DELETE FROM fn_role_function WHERE role_id=" + roleId;
+ sql = "DELETE FROM fn_role_function WHERE role_id=" + roleId;
logger.debug(EELFLoggerDelegate.debugLogger, "Executing query: " + sql);
- Query query = localSession.createSQLQuery(sql);
+ query = localSession.createSQLQuery(sql);
query.executeUpdate();
- // Delete from ep_app_role_function
- sql = "DELETE FROM ep_app_role_function WHERE role_id=" + roleId;
+ // Delete from fn_role_composite
+ sql = "DELETE FROM fn_role_composite WHERE parent_role_id=" + roleId + " OR child_role_id=" + roleId;
logger.debug(EELFLoggerDelegate.debugLogger, "Executing query: " + sql);
- query = localSession.createSQLQuery(sql);
+ query = localSession.createSQLQuery(sql);
query.executeUpdate();
+ }
- // Delete from ep_role_notification
- sql = "DELETE FROM ep_role_notification WHERE role_id=" + roleId;
+ // Delete from ep_app_role_function
+ sql = "DELETE FROM ep_app_role_function WHERE role_id=" + roleId;
logger.debug(EELFLoggerDelegate.debugLogger, "Executing query: " + sql);
query = localSession.createSQLQuery(sql);
query.executeUpdate();
-
- // Delete from fn_role_composite
- sql = "DELETE FROM fn_role_composite WHERE parent_role_id=" + roleId + " OR child_role_id="
- + roleId;
+
+ // Delete from ep_role_notification
+ sql = "DELETE FROM ep_role_notification WHERE role_id=" + roleId;
logger.debug(EELFLoggerDelegate.debugLogger, "Executing query: " + sql);
query = localSession.createSQLQuery(sql);
query.executeUpdate();
-
+
// Delete from fn_user_pseudo_role
sql = "DELETE FROM fn_user_pseudo_role WHERE pseudo_role_id=" + roleId;
logger.debug(EELFLoggerDelegate.debugLogger, "Executing query: " + sql);
query = localSession.createSQLQuery(sql);
query.executeUpdate();
-
- //Delete form EP_WIDGET_CATALOG_ROLE
+
+ // Delete form EP_WIDGET_CATALOG_ROLE
sql = "DELETE FROM EP_WIDGET_CATALOG_ROLE WHERE role_id=" + roleId;
logger.debug(EELFLoggerDelegate.debugLogger, "Executing query: " + sql);
query = localSession.createSQLQuery(sql);
query.executeUpdate();
-
- //Delete form EP_WIDGET_CATALOG_ROLE
+
+ // Delete form EP_WIDGET_CATALOG_ROLE
sql = "DELETE FROM ep_user_roles_request_det WHERE requested_role_id=" + roleId;
logger.debug(EELFLoggerDelegate.debugLogger, "Executing query: " + sql);
query = localSession.createSQLQuery(sql);
query.executeUpdate();
-
- //Delete form fn_menu_functional_roles
+
+ // Delete form fn_menu_functional_roles
sql = "DELETE FROM fn_menu_functional_roles WHERE role_id=" + roleId;
logger.debug(EELFLoggerDelegate.debugLogger, "Executing query: " + sql);
query = localSession.createSQLQuery(sql);
query.executeUpdate();
-
+
} catch (Exception e) {
- logger.debug(EELFLoggerDelegate.debugLogger, "deleteRoleDependeciesRecord failed " , e);
- throw new Exception("delete Failed"+ e.getMessage());
+ logger.debug(EELFLoggerDelegate.debugLogger, "deleteRoleDependeciesRecord: failed ", e);
+ throw new Exception("delete Failed" + e.getMessage());
}
-
+
}
-
@SuppressWarnings("unchecked")
@Override
public List<String> getMenuFunctionsList(String uebkey) throws Exception {
List<String> appMenuFunctionsList = null;
- try{
- EPApp app = getApp(uebkey).get(0);
- final Map<String, Long> appParams = new HashMap<>();
- appParams.put("appId", app.getId());
- appMenuFunctionsList = dataAccessService.executeNamedQuery("getMenuFunctions", appParams, null);
- } catch(Exception e){
- logger.error(EELFLoggerDelegate.errorLogger, "Failed getMenuFunctionsList", e);
+ try {
+ EPApp app = getApp(uebkey).get(0);
+ final Map<String, Long> appParams = new HashMap<>();
+ appParams.put(APP_ID, app.getId());
+ appMenuFunctionsList = dataAccessService.executeNamedQuery("getMenuFunctions", appParams, null);
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "getMenuFunctionsList: Failed", e);
return appMenuFunctionsList;
}
return appMenuFunctionsList;