2 * ============LICENSE_START==========================================
4 * ===================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ===================================================================
8 * Unless otherwise specified, all software contained herein is licensed
9 * under the Apache License, Version 2.0 (the "License");
10 * you may not use this software except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
21 * Unless otherwise specified, all documentation contained herein is licensed
22 * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
23 * you may not use this documentation except in compliance with the License.
24 * You may obtain a copy of the License at
26 * https://creativecommons.org/licenses/by/4.0/
28 * Unless required by applicable law or agreed to in writing, documentation
29 * distributed under the License is distributed on an "AS IS" BASIS,
30 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31 * See the License for the specific language governing permissions and
32 * limitations under the License.
34 * ============LICENSE_END============================================
38 package org.onap.portalapp.portal.service;
40 import java.io.BufferedReader;
41 import java.io.IOException;
42 import java.io.InputStreamReader;
43 import java.net.HttpURLConnection;
45 import java.util.ArrayList;
46 import java.util.List;
48 import org.json.JSONArray;
49 import org.json.JSONObject;
50 import org.onap.portalapp.portal.domain.EPUser;
51 import org.onap.portalapp.portal.utils.EPSystemProperties;
52 import org.onap.portalsdk.core.domain.FusionObject.Utilities;
53 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
54 import org.onap.portalsdk.core.onboarding.util.CipherUtil;
55 import org.onap.portalsdk.core.service.DataAccessService;
56 import org.onap.portalsdk.core.util.SystemProperties;
57 import org.springframework.beans.factory.annotation.Autowired;
58 import org.springframework.stereotype.Service;
59 import org.springframework.transaction.annotation.Transactional;
61 @Service("userService")
63 public class UserServiceImpl implements UserService {
65 EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(UserServiceImpl.class);
68 private DataAccessService dataAccessService;
70 public DataAccessService getDataAccessService() {
71 return dataAccessService;
74 public void setDataAccessService(DataAccessService dataAccessService) {
75 this.dataAccessService = dataAccessService;
78 @SuppressWarnings("rawtypes")
80 public List getUserByUserId(String userId) {
82 if (SystemProperties.getProperty(SystemProperties.AUTHENTICATION_MECHANISM).trim().equalsIgnoreCase("OIDC")) {
83 List<EPUser> users = new ArrayList<EPUser>();
84 List<EPUser> filterdUsers = new ArrayList<EPUser>();
85 BufferedReader in = null;
86 HttpURLConnection con = null;
88 String url = EPSystemProperties.getProperty(EPSystemProperties.AUTH_USER_SERVER);
89 URL obj = new URL(url);
91 con = (HttpURLConnection) obj.openConnection();
93 // optional default is GET
94 con.setRequestMethod("GET");
95 con.setConnectTimeout(3000);
96 con.setReadTimeout(8000);
98 StringBuffer response = new StringBuffer();
100 in = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
102 while ((inputLine = in.readLine()) != null)
103 response.append(inputLine);
104 JSONObject jObject = new JSONObject(response.toString()); // json
105 JSONArray jsonUsers = jObject.getJSONArray("response"); // get data object
106 for (int i = 0; i < jsonUsers.length(); i++) {
107 JSONObject eachObject = jsonUsers.getJSONObject(i);
108 EPUser eachUser = new EPUser();
109 eachUser.setOrgUserId(eachObject.get("id").toString());// getString("id"));
110 eachUser.setFirstName(eachObject.get("givenName").toString());
111 eachUser.setLastName(eachObject.get("familyName").toString());
112 eachUser.setEmail(eachObject.get("email").toString());
116 for (int i = 0; i < users.size(); i++) {
118 if (Utilities.nvl(userId).length() > 0) {
119 if (!userId.equalsIgnoreCase(users.get(i).getOrgUserId())) {
123 filterdUsers.add(users.get(i));
127 } catch (Exception e) {
128 logger.error(EELFLoggerDelegate.errorLogger, "getUserByUserId failed", e);
133 } catch (IOException e) {
134 logger.error(EELFLoggerDelegate.errorLogger, "getUserByUserId 2 failed", e);
143 StringBuffer criteria = new StringBuffer();
144 criteria.append(" where org_user_id = '").append(userId).append("'");
145 list = getDataAccessService().getList(EPUser.class, criteria.toString(), null, null);
146 return (list == null || list.size() == 0) ? null : list;
152 @SuppressWarnings("rawtypes")
154 public List getUserByFirstLastName(String firstName, String lastName) {
156 if (!SystemProperties.getProperty(SystemProperties.AUTHENTICATION_MECHANISM).trim().equalsIgnoreCase("OIDC")) {
159 StringBuffer criteria = new StringBuffer();
160 if (firstName != null)
161 criteria.append(" where first_name = '").append(firstName).append("'");
162 if (lastName != null)
163 criteria.append(" where last_name = '").append(lastName).append("'");
164 list = getDataAccessService().getList(EPUser.class, criteria.toString(), null, null);
165 return (list == null || list.size() == 0) ? null : list;
169 List<EPUser> users = new ArrayList<EPUser>();
170 List<EPUser> filterdUsers = new ArrayList<EPUser>();
171 BufferedReader in = null;
172 HttpURLConnection con = null;
174 String url = EPSystemProperties.getProperty(EPSystemProperties.AUTH_USER_SERVER);
175 URL obj = new URL(url);
177 con = (HttpURLConnection) obj.openConnection();
179 // optional default is GET
180 con.setRequestMethod("GET");
181 con.setConnectTimeout(3000);
182 con.setReadTimeout(8000);
184 StringBuffer response = new StringBuffer();
186 in = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
188 while ((inputLine = in.readLine()) != null)
189 response.append(inputLine);
190 JSONObject jObject = new JSONObject(response.toString()); // json
191 JSONArray jsonUsers = jObject.getJSONArray("response"); // get data object
192 for (int i = 0; i < jsonUsers.length(); i++) {
193 JSONObject eachObject = jsonUsers.getJSONObject(i);
194 EPUser eachUser = new EPUser();
195 eachUser.setOrgUserId(eachObject.get("id").toString());// getString("id"));
196 eachUser.setFirstName(eachObject.get("givenName").toString());
197 eachUser.setLastName(eachObject.get("familyName").toString());
198 eachUser.setEmail(eachObject.get("email").toString());
202 for (int i = 0; i < users.size(); i++) {
204 if (Utilities.nvl(firstName).length() > 0) {
205 if (!firstName.equalsIgnoreCase(users.get(i).getFirstName())) {
209 if (Utilities.nvl(lastName).length() > 0) {
210 if (!lastName.equalsIgnoreCase(users.get(i).getLastName())) {
215 filterdUsers.add(users.get(i));
219 } catch (Exception e) {
220 logger.error(EELFLoggerDelegate.errorLogger, "getUserByFirstLastName failed", e);
225 } catch (IOException e) {
226 logger.error(EELFLoggerDelegate.errorLogger, "getUserByFirstLastName 2 failed", e);
235 public String saveNewUser(EPUser newUser, String checkDuplicate) throws Exception {
238 StringBuffer criteria = new StringBuffer();
239 criteria.append(" where org_user_id = '").append(newUser.getLoginId()).append("'");
240 list = getDataAccessService().getList(EPUser.class, criteria.toString(), null, null);
241 if (list == null || list.size() == 0) {
242 newUser.setActive(true);
243 newUser.setOrgUserId(newUser.getLoginId());
244 newUser.setLoginPwd(CipherUtil.encryptPKC(newUser.getLoginPwd()));
245 getDataAccessService().saveDomainObject(newUser, null);
247 if (checkDuplicate.equals("Yes")) {
248 // userId already exist in database
249 return "Record already exist";
252 EPUser oldUser = (EPUser) list.get(0);
253 oldUser.setFirstName(newUser.getFirstName());
254 oldUser.setLastName(newUser.getLastName());
255 oldUser.setMiddleInitial(newUser.getMiddleInitial());
256 if (!oldUser.getLoginPwd().equals(newUser.getLoginPwd()))
257 oldUser.setLoginPwd(CipherUtil.encryptPKC(newUser.getLoginPwd()));
259 oldUser.setLoginPwd(newUser.getLoginPwd());
260 getDataAccessService().saveDomainObject(oldUser, null);
266 } catch (Exception e) {
267 logger.error(EELFLoggerDelegate.errorLogger, "saveNewUser failed", e);
268 throw new Exception(e);