+
+ @SuppressWarnings("unused")
+ @Override
+ public ResponseEntity<String> checkIfNameSpaceIsValid(String namespace) throws Exception {
+ HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
+ HttpEntity<String> entity = new HttpEntity<>(headers);
+ logger.debug(EELFLoggerDelegate.debugLogger, "checkIfNameSpaceExists: Connecting to External Auth system for : "+namespace);
+ ResponseEntity<String> response = null;
+ try {
+
+ String namespaceUrl = SystemProperties.
+ getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_URL) + "nss/" + namespace;
+
+ response = template.exchange(namespaceUrl, HttpMethod.GET, entity, String.class);
+ logger.debug(EELFLoggerDelegate.debugLogger, "checkIfNameSpaceExists for"+ namespace ,
+ response.getStatusCode().value());
+ if (response.getStatusCode().value() == 200) {
+ String res = response.getBody();
+ JSONObject jsonObj = new JSONObject(res);
+ JSONArray namespaceArray = jsonObj.getJSONArray("ns");
+ if(!namespaceArray.getJSONObject(0).has("admin")){
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "No admins are available for requested namespace:" + namespace);
+ throw new HttpClientErrorException(HttpStatus.UNAUTHORIZED,
+ "Portal Mechid is not an admin of" + namespace);
+ }
+
+ JSONArray namespaceAdminArray = namespaceArray.getJSONObject(0).getJSONArray("admin");
+ ArrayList<String> list = new ArrayList<String>();
+ if (namespaceAdminArray != null) {
+ int len = namespaceAdminArray.length();
+ for (int i = 0; i < len; i++) {
+ list.add(namespaceAdminArray.get(i).toString());
+ }
+ }
+ logger.debug(EELFLoggerDelegate.debugLogger, "List of Admins of requested namespace" + list);
+ final String userName = SystemProperties
+ .getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_AUTH_USER_NAME);
+ boolean idExists = list.stream().anyMatch(t -> userName.equals(t));
+ if (false) {
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "Portal mechid is not admin of requested namespace:" + namespace);
+ throw new HttpClientErrorException(HttpStatus.UNAUTHORIZED,
+ "Portal Mechid is not an admin of" + namespace);
+ }
+ }
+
+ } catch (HttpClientErrorException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "checkIfNameSpaceExists failed", e);
+ EPLogUtil.logExternalAuthAccessAlarm(logger, e.getStatusCode());
+ throw e;
+ }
+ return response;
+
+ }