UserRolesController methods up
[portal.git] / portal-BE / src / main / java / org / onap / portal / service / user / FnUserService.java
index 23732d6..7962755 100644 (file)
 
 package org.onap.portal.service.user;
 
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
+import org.hibernate.criterion.Criterion;
+import org.hibernate.criterion.Restrictions;
+import org.json.JSONArray;
+import org.json.JSONObject;
 import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.utils.EPCommonSystemProperties;
+import org.onap.portal.utils.EPSystemProperties;
+import org.onap.portalsdk.core.domain.FusionObject.Utilities;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.util.SystemProperties;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.repository.query.Param;
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.stereotype.Service;
@@ -55,66 +70,199 @@ import org.springframework.transaction.annotation.Transactional;
 @Transactional
 public class FnUserService implements UserDetailsService {
 
-       private final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FnUserService.class);
+    private final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FnUserService.class);
 
-       private final FnUserDao fnUserDao;
+    private final FnUserDao fnUserDao;
 
-       @Autowired
-       public FnUserService(FnUserDao fnUserDao) {
-              this.fnUserDao = fnUserDao;
-       }
+    @Autowired
+    public FnUserService(FnUserDao fnUserDao) {
+        this.fnUserDao = fnUserDao;
+    }
 
-       @Override
-       public FnUser loadUserByUsername(final String username) throws UsernameNotFoundException {
-              Optional<FnUser> fnUser = fnUserDao.findByLoginId(username);
-              if (fnUser.isPresent()) {
-                     return fnUser.get();
-              } else {
-                     throw new UsernameNotFoundException("User not found for username: " + username);
-              }
-       }
+    @Override
+    public FnUser loadUserByUsername(final String username) throws UsernameNotFoundException {
+        Optional<FnUser> fnUser = fnUserDao.findByLoginId(username);
+        if (fnUser.isPresent()) {
+            return fnUser.get();
+        } else {
+            throw new UsernameNotFoundException("User not found for username: " + username);
+        }
+    }
 
-       public FnUser saveFnUser(final FnUser fnUser) {
-              return fnUserDao.save(fnUser);
-       }
+    public FnUser saveFnUser(final FnUser fnUser) {
+        return fnUserDao.save(fnUser);
+    }
 
-       public Optional<FnUser> getUser(final Long id) {
-              return Optional.of(fnUserDao.getOne(id));
-       }
+    public Optional<FnUser> getUser(final Long id) {
+        return Optional.of(fnUserDao.getOne(id));
+    }
 
-       public List<FnUser> getUserWithOrgUserId(final String orgUserIdValue) {
-              return fnUserDao.getUserWithOrgUserId(orgUserIdValue).orElse(new ArrayList<>());
-       }
+    public List<FnUser> getUserWithOrgUserId(final String orgUserIdValue) {
+        return fnUserDao.getUserWithOrgUserId(orgUserIdValue).orElse(new ArrayList<>());
+    }
 
-       public List<FnUser> getUsersByOrgIds(final List<String> orgIds) {
-              return fnUserDao.getUsersByOrgIds(orgIds).orElse(new ArrayList<>());
-       }
+    public List<FnUser> getUsersByOrgIds(final List<String> orgIds) {
+        return fnUserDao.getUsersByOrgIds(orgIds).orElse(new ArrayList<>());
+    }
 
-       public List<FnUser> getActiveUsers() {
-              return fnUserDao.getActiveUsers().orElse(new ArrayList<>());
-       }
+    public List<FnUser> getActiveUsers() {
+        return fnUserDao.getActiveUsers().orElse(new ArrayList<>());
+    }
 
-       public void deleteUser(final FnUser fnUser) {
-              fnUserDao.delete(fnUser);
-       }
+    public void deleteUser(final FnUser fnUser) {
+        fnUserDao.delete(fnUser);
+    }
 
-       public boolean existById(final Long userId) {
-              return fnUserDao.existsById(userId);
-       }
+    public boolean existById(final Long userId) {
+        return fnUserDao.existsById(userId);
+    }
 
-       public List<FnUser> findAll() {
-              return fnUserDao.findAll();
-       }
+    public List<FnUser> findAll() {
+        return fnUserDao.findAll();
+    }
 
-       public List<FnUser> saveAll(final List<FnUser> fnUsers) {
-              return fnUserDao.saveAll(fnUsers);
-       }
+    public List<FnUser> saveAll(final List<FnUser> fnUsers) {
+        return fnUserDao.saveAll(fnUsers);
+    }
 
-       public FnUser save(final FnUser user) {
-              return fnUserDao.save(user);
-       }
+    public FnUser save(final FnUser user) {
+        return fnUserDao.save(user);
+    }
 
-       public void delete(final FnUser user) {
-              fnUserDao.delete(user);
-       }
+    public void delete(final FnUser user) {
+        fnUserDao.delete(user);
+    }
+
+    public List<FnUser> findByFirstNameAndLastName(final String firstName, final String lastName) {
+        return fnUserDao.findByFirstNameAndLastName(firstName, lastName).orElse(new ArrayList<>());
+    }
+
+    public List<FnUser> getUserByUserId(String userId) {
+        if (SystemProperties.getProperty(SystemProperties.AUTHENTICATION_MECHANISM).trim().equalsIgnoreCase("OIDC")) {
+            List<FnUser> users = new ArrayList<>();
+            List<FnUser> filterdUsers = new ArrayList<>();
+            BufferedReader in = null;
+            HttpURLConnection con = null;
+            try {
+                String url = EPSystemProperties.getProperty(EPSystemProperties.AUTH_USER_SERVER);
+                URL obj = new URL(url);
+
+                con = (HttpURLConnection) obj.openConnection();
+
+                // optional default is GET
+                con.setRequestMethod("GET");
+                con.setConnectTimeout(3000);
+                con.setReadTimeout(8000);
+
+                StringBuffer response = new StringBuffer();
+
+                in = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
+                String inputLine;
+                while ((inputLine = in.readLine()) != null) {
+                    response.append(inputLine);
+                }
+                JSONObject jObject = new JSONObject(response.toString()); // json
+                JSONArray jsonUsers = jObject.getJSONArray("response"); // get data object
+                for (int i = 0; i < jsonUsers.length(); i++) {
+                    JSONObject eachObject = jsonUsers.getJSONObject(i);
+                    FnUser eachUser = new FnUser();
+                    eachUser.setOrgUserId(eachObject.get("id").toString());// getString("id"));
+                    eachUser.setFirstName(eachObject.get("givenName").toString());
+                    eachUser.setLastName(eachObject.get("familyName").toString());
+                    eachUser.setEmail(eachObject.get("email").toString());
+                    users.add(eachUser);
+                }
+
+                for (FnUser user : users) {
+
+                    if (Utilities.nvl(userId).length() > 0) {
+                        if (!userId.equalsIgnoreCase(user.getOrgUserId())) {
+                            continue;
+                        }
+                    }
+                    filterdUsers.add(user);
+
+                }
+
+            } catch (Exception e) {
+                logger.error(EELFLoggerDelegate.errorLogger, "getUserByUserId failed", e);
+            } finally {
+                try {
+                    if (in != null) {
+                        in.close();
+                    }
+                    con.disconnect();
+                } catch (IOException e) {
+                    logger.error(EELFLoggerDelegate.errorLogger, "getUserByUserId 2 failed", e);
+                }
+            }
+            return filterdUsers;
+        } else {
+            List<FnUser> list = this.getUserWithOrgUserId(userId);
+            return (list == null || list.size() == 0) ? null : list;
+        }
+
+    }
+
+    public List<FnUser> getUserByFirstLastName(String firstName, String lastName) {
+        if (!SystemProperties.getProperty(SystemProperties.AUTHENTICATION_MECHANISM).trim().equalsIgnoreCase("OIDC")) {
+            List<FnUser> list = this.findByFirstNameAndLastName(firstName, lastName);
+            return (list == null || list.size() == 0) ? null : list;
+        } else {
+            List<FnUser> users = new ArrayList<>();
+            List<FnUser> filterdUsers = new ArrayList<>();
+            BufferedReader in = null;
+            HttpURLConnection con = null;
+            try {
+                String url = EPCommonSystemProperties.getProperty(EPCommonSystemProperties.AUTH_USER_SERVER);
+                URL obj = new URL(url);
+                con = (HttpURLConnection) obj.openConnection();
+                con.setRequestMethod("GET");
+                con.setConnectTimeout(3000);
+                con.setReadTimeout(8000);
+                StringBuffer response = new StringBuffer();
+                in = new BufferedReader(new InputStreamReader(con.getInputStream(), StandardCharsets.UTF_8));
+                String inputLine;
+                while ((inputLine = in.readLine()) != null) {
+                    response.append(inputLine);
+                }
+                JSONObject jObject = new JSONObject(response.toString());
+                JSONArray jsonUsers = jObject.getJSONArray("response");
+                for (int i = 0; i < jsonUsers.length(); i++) {
+                    JSONObject eachObject = jsonUsers.getJSONObject(i);
+                    FnUser eachUser = new FnUser();
+                    eachUser.setOrgUserId(eachObject.get("id").toString());
+                    eachUser.setFirstName(eachObject.get("givenName").toString());
+                    eachUser.setLastName(eachObject.get("familyName").toString());
+                    eachUser.setEmail(eachObject.get("email").toString());
+                    users.add(eachUser);
+                }
+                for (FnUser user : users) {
+                    if (Utilities.nvl(firstName).length() > 0) {
+                        if (!firstName.equalsIgnoreCase(user.getFirstName())) {
+                            continue;
+                        }
+                    }
+                    if (Utilities.nvl(lastName).length() > 0) {
+                        if (!lastName.equalsIgnoreCase(user.getLastName())) {
+                            continue;
+                        }
+                    }
+                    filterdUsers.add(user);
+                }
+            } catch (Exception e) {
+                logger.error(EELFLoggerDelegate.errorLogger, "getUserByFirstLastName failed", e);
+            } finally {
+                try {
+                    if (in != null) {
+                        in.close();
+                        con.disconnect();
+                    }
+                } catch (IOException e) {
+                    logger.error(EELFLoggerDelegate.errorLogger, "getUserByFirstLastName failed to close", e);
+                }
+            }
+            return filterdUsers;
+        }
+    }
 }