2 * ================================================================================
\r
4 * ================================================================================
\r
5 * Copyright (C) 2017 AT&T Intellectual Property
\r
6 * ================================================================================
\r
7 * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * you may not use this file except in compliance with the License.
\r
9 * You may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * Unless required by applicable law or agreed to in writing, software
\r
14 * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * See the License for the specific language governing permissions and
\r
17 * limitations under the License.
\r
18 * ================================================================================
\r
20 package org.openecomp.portalapp.portal.service;
\r
22 import java.util.List;
\r
24 import javax.annotation.PostConstruct;
\r
25 import javax.servlet.http.HttpServletResponse;
\r
27 import org.hibernate.Session;
\r
28 import org.hibernate.SessionFactory;
\r
29 import org.hibernate.Transaction;
\r
30 import org.springframework.beans.factory.annotation.Autowired;
\r
31 import org.springframework.context.annotation.EnableAspectJAutoProxy;
\r
32 import org.springframework.stereotype.Service;
\r
34 import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
\r
35 import org.openecomp.portalsdk.core.service.DataAccessService;
\r
36 import org.openecomp.portalsdk.core.util.SystemProperties;
\r
37 import org.openecomp.portalapp.portal.domain.EPUser;
\r
38 import org.openecomp.portalapp.portal.logging.aop.EPMetricsLog;
\r
39 import org.openecomp.portalapp.portal.transport.FieldsValidator;
\r
40 import org.openecomp.portalapp.portal.transport.PortalAdmin;
\r
41 import org.openecomp.portalapp.portal.transport.PortalAdminUserRole;
\r
42 import org.openecomp.portalapp.portal.utils.EPCommonSystemProperties;
\r
43 import org.openecomp.portalapp.portal.utils.EcompPortalUtils;
\r
45 @Service("portalAdminService")
\r
46 @org.springframework.context.annotation.Configuration
\r
47 @EnableAspectJAutoProxy
\r
49 public class PortalAdminServiceImpl implements PortalAdminService {
\r
51 private String SYS_ADMIN_ROLE_ID = "1";
\r
52 private String ECOMP_APP_ID = "1";
\r
54 EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(PortalAdminServiceImpl.class);
\r
57 private SessionFactory sessionFactory;
\r
59 private DataAccessService dataAccessService;
\r
61 SearchService searchService;
\r
64 private void init() {
\r
65 SYS_ADMIN_ROLE_ID = SystemProperties.getProperty(SystemProperties.SYS_ADMIN_ROLE_ID);
\r
66 ECOMP_APP_ID = SystemProperties.getProperty(EPCommonSystemProperties.ECOMP_APP_ID);
\r
69 public List<PortalAdmin> getPortalAdmins() {
\r
71 String sql = "SELECT u.user_id, u.first_name, u.last_name, u.login_id "
\r
72 + " FROM fn_user u, fn_user_role ur WHERE u.user_id = ur.user_id AND ur.role_id="
\r
73 + SYS_ADMIN_ROLE_ID;
\r
76 @SuppressWarnings("unchecked")
\r
77 List<PortalAdmin> portalAdmins = dataAccessService.executeSQLQuery(sql, PortalAdmin.class, null);
\r
78 logger.debug(EELFLoggerDelegate.debugLogger, "getPortalAdmins was successful");
\r
79 return portalAdmins;
\r
81 } catch (Exception e) {
\r
82 logger.error(EELFLoggerDelegate.errorLogger,
\r
83 "Exception occurred while performing getPortalAdmins operation, Details: "
\r
84 + EcompPortalUtils.getStackTrace(e));
\r
89 @SuppressWarnings("unchecked")
\r
90 public FieldsValidator createPortalAdmin(String orgUserId) {
\r
91 FieldsValidator fieldsValidator = new FieldsValidator();
\r
92 logger.debug(EELFLoggerDelegate.debugLogger, "LR: createPortalAdmin: test 1");
\r
93 boolean result = false;
\r
94 EPUser user = null;
\r
95 boolean createNewUser = false;
\r
96 List<EPUser> localUserList = dataAccessService.getList(EPUser.class, " where orgUserId='" + orgUserId + "'",
\r
98 if (localUserList.size() > 0) {
\r
99 user = localUserList.get(0);
\r
101 createNewUser = true;
\r
104 if (user!=null && isLoggedInUserPortalAdmin(user.getId())) {
\r
105 fieldsValidator.httpStatusCode = new Long(HttpServletResponse.SC_CONFLICT);
\r
106 logger.error(EELFLoggerDelegate.errorLogger, "User '" + user.getOrgUserId() + "' already has PortalAdmin role assigned.");
\r
108 else if (user != null || createNewUser) {
\r
109 Session localSession = null;
\r
110 Transaction transaction = null;
\r
112 localSession = sessionFactory.openSession();
\r
114 transaction = localSession.beginTransaction();
\r
115 if (createNewUser) {
\r
116 user = this.searchService.searchUserByUserId(orgUserId);
\r
117 if (user != null) {
\r
118 // insert the user with active true in order to
\r
119 // pass login phase.
\r
120 user.setActive(true);
\r
121 localSession.save(EPUser.class.getName(), user);
\r
124 if (user != null) {
\r
125 Long userid = user.getId();
\r
126 PortalAdminUserRole userRole = new PortalAdminUserRole();
\r
127 userRole.userId = userid;
\r
128 userRole.roleId = Long.valueOf(SYS_ADMIN_ROLE_ID);
\r
129 userRole.appId = Long.valueOf(ECOMP_APP_ID);
\r
131 localSession.save(PortalAdminUserRole.class.getName(), userRole);
\r
133 // logger.debug(EELFLoggerDelegate.debugLogger, "after saving menu object, new id: " + userid);
\r
135 transaction.commit();
\r
137 } catch (Exception e) {
\r
138 EcompPortalUtils.rollbackTransaction(transaction,
\r
139 "createPortalAdmin rollback, exception = " + e);
\r
140 logger.error(EELFLoggerDelegate.errorLogger, EcompPortalUtils.getStackTrace(e));
\r
142 EcompPortalUtils.closeLocalSession(localSession, "createPortalAdmin");
\r
145 logger.debug(EELFLoggerDelegate.debugLogger, "LR: createPortalAdmin: no result. setting httpStatusCode to "
\r
146 + HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
\r
147 fieldsValidator.httpStatusCode = new Long(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
\r
148 logger.error(EELFLoggerDelegate.errorLogger, "PortalAdminServiceImpl.createPortalAdmin: bad request");
\r
151 return fieldsValidator;
\r
154 public FieldsValidator deletePortalAdmin(Long userId) {
\r
155 FieldsValidator fieldsValidator = new FieldsValidator();
\r
156 logger.debug(EELFLoggerDelegate.debugLogger, "deletePortalAdmin: test 1");
\r
157 boolean result = false;
\r
158 Session localSession = null;
\r
159 Transaction transaction = null;
\r
162 localSession = sessionFactory.openSession();
\r
163 transaction = localSession.beginTransaction();
\r
164 dataAccessService.deleteDomainObjects(PortalAdminUserRole.class,
\r
165 "user_id='" + userId + "' AND role_id='" + SYS_ADMIN_ROLE_ID + "'", null);
\r
166 transaction.commit();
\r
168 } catch (Exception e) {
\r
169 EcompPortalUtils.rollbackTransaction(transaction, "deletePortalAdmin rollback, exception = " + e);
\r
170 logger.error(EELFLoggerDelegate.errorLogger, EcompPortalUtils.getStackTrace(e));
\r
172 EcompPortalUtils.closeLocalSession(localSession, "deletePortalAdmin");
\r
176 logger.debug(EELFLoggerDelegate.debugLogger, "deletePortalAdmin: no result. setting httpStatusCode to "
\r
177 + HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
\r
178 fieldsValidator.httpStatusCode = new Long(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
\r
180 return fieldsValidator;
\r
183 private void logQuery(String sql) {
\r
184 logger.debug(EELFLoggerDelegate.debugLogger, "Executing query: " + sql);
\r
187 private boolean isLoggedInUserPortalAdmin(Long userId) {
\r
189 String sql = "SELECT u.user_id, u.first_name, u.last_name, u.login_id " +
\r
190 " FROM fn_user u, fn_user_role ur " +
\r
191 " WHERE u.user_id = ur.user_id " +
\r
192 " AND ur.user_id=" + userId +
\r
193 " AND ur.role_id=" + SYS_ADMIN_ROLE_ID;
\r
197 @SuppressWarnings("unchecked")
\r
198 List<PortalAdmin> portalAdmins = dataAccessService.executeSQLQuery(sql, PortalAdmin.class, null);
\r
199 logger.debug(EELFLoggerDelegate.debugLogger, portalAdmins.toString());
\r
200 if (portalAdmins==null || portalAdmins.size()<=0) {
\r
205 } catch (Exception e) {
\r
206 logger.error(EELFLoggerDelegate.errorLogger, "Exception occurred while performing isLoggedInUserPortalAdmin operation, Details: " + EcompPortalUtils.getStackTrace(e));
\r