1 package org.openecomp.portalsdk.core.service;
4 import java.util.HashMap;
5 import java.util.HashSet;
6 import java.util.Iterator;
11 import org.openecomp.portalsdk.core.command.LoginBean;
12 import org.openecomp.portalsdk.core.domain.Role;
13 import org.openecomp.portalsdk.core.domain.User;
14 import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
15 import org.openecomp.portalsdk.core.menu.MenuBuilder;
16 import org.openecomp.portalsdk.core.service.support.FusionService;
17 import org.openecomp.portalsdk.core.util.SystemProperties;
18 import org.openecomp.portalsdk.core.web.support.AppUtils;
19 import org.openecomp.portalsdk.core.web.support.UserUtils;
20 import org.springframework.beans.factory.annotation.Autowired;
21 import org.springframework.transaction.annotation.Transactional;
25 public class LoginServiceCentralizedImpl extends FusionService implements LoginService {
27 private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(LoginServiceCentralizedImpl.class);
30 AppService appService;
33 private DataAccessService dataAccessService;
36 RestApiRequestBuilder restApiRequestBuilder;
39 UserService userService;
41 @SuppressWarnings("unused")
42 private MenuBuilder menuBuilder;
45 public LoginBean findUser(LoginBean bean, String menuPropertiesFilename, HashMap additionalParams)
47 return findUser(bean, menuPropertiesFilename, additionalParams, true);
50 @SuppressWarnings("rawtypes")
51 public LoginBean findUser(LoginBean bean, String menuPropertiesFilename, HashMap additionalParams,
52 boolean matchPassword) throws Exception {
56 if (bean.getUserid() != null && bean.getUserid() != null) {
57 user = (User) findUser(bean);
60 user = (User) findUser(bean.getLoginId(), bean.getLoginPwd());
62 user = (User) findUserWithoutPwd(bean.getLoginId());
67 if (AppUtils.isApplicationLocked()
68 && !UserUtils.hasRole(user, SystemProperties.getProperty(SystemProperties.SYS_ADMIN_ROLE_ID))) {
69 bean.setLoginErrorMessage(SystemProperties.MESSAGE_KEY_LOGIN_ERROR_APPLICATION_LOCKED);
72 // raise an error if the user is inactive
73 if (!user.getActive()) {
74 bean.setLoginErrorMessage(SystemProperties.MESSAGE_KEY_LOGIN_ERROR_USER_INACTIVE);
77 if (!userHasActiveRoles(user)) {
78 bean.setLoginErrorMessage(SystemProperties.MESSAGE_KEY_LOGIN_ERROR_USER_INACTIVE);
80 // only login the user if no errors have occurred
81 if (bean.getLoginErrorMessage() == null) {
83 // this will be a snapshot of the user's information as
84 // retrieved from the database
85 userCopy = (User) user.clone();
87 User appuser = getUser(userCopy);
89 appuser.setLastLoginDate(new Date());
91 // update the last logged in date for the user
92 // user.setLastLoginDate(new Date());
93 getDataAccessService().saveDomainObject(appuser, additionalParams);
95 // update the audit log of the user
96 // Check for the client device type and set log attributes
99 // save the above changes to the User and their audit trail
101 // create the application menu based on the user's privileges
103 Set appMenu = getMenuBuilder().getMenu(
104 SystemProperties.getProperty(SystemProperties.APPLICATION_MENU_SET_NAME), dataAccessService);
105 bean.setMenu(appMenu != null ? appMenu : new HashSet());
106 Set businessDirectMenu = getMenuBuilder().getMenu(
107 SystemProperties.getProperty(SystemProperties.BUSINESS_DIRECT_MENU_SET_NAME),
109 bean.setBusinessDirectMenu(businessDirectMenu != null ? businessDirectMenu : new HashSet());
111 bean.setUser(userCopy);
118 private boolean userHasActiveRoles(User user) {
119 boolean hasActiveRole = false;
120 Iterator roles = user.getRoles().iterator();
121 while (roles.hasNext()) {
122 Role role = (Role) roles.next();
123 if (role.getActive()) {
124 hasActiveRole = true;
128 return hasActiveRole;
131 @SuppressWarnings("null")
132 public User findUser(LoginBean bean) throws Exception {
134 String repsonse = restApiRequestBuilder.getViaREST("/user/" + bean.getUserid(), true, bean.getUserid());
135 user = userService.userMapper(repsonse);
136 user.setId(getUserIdByOrgUserId(user.getOrgUserId()));
140 public Long getUserIdByOrgUserId(String orgUserId) {
141 Map<String, String> params = new HashMap<String, String>();
142 params.put("orgUserId", orgUserId);
143 @SuppressWarnings("rawtypes")
144 List list = getDataAccessService().executeNamedQuery("getUserIdByorgUserId", params, null);
146 if (list != null && !list.isEmpty())
147 userId = (Long) list.get(0);
152 public User findUser(String loginId, String password) {
156 StringBuffer criteria = new StringBuffer();
157 criteria.append(" where login_id = '").append(loginId).append("'").append(" and login_pwd = '").append(password)
160 list = getDataAccessService().getList(User.class, criteria.toString(), null, null);
161 return (list == null || list.size() == 0) ? null : (User) list.get(0);
164 private User findUserWithoutPwd(String loginId) {
166 StringBuffer criteria = new StringBuffer();
167 criteria.append(" where login_id = '").append(loginId).append("'");
168 list = getDataAccessService().getList(User.class, criteria.toString(), null, null);
169 return (list == null || list.size() == 0) ? null : (User) list.get(0);
172 public DataAccessService getDataAccessService() {
173 return dataAccessService;
176 public void setDataAccessService(DataAccessService dataAccessService) {
177 this.dataAccessService = dataAccessService;
180 public MenuBuilder getMenuBuilder() {
181 return new MenuBuilder();
184 public void setMenuBuilder(MenuBuilder menuBuilder) {
185 this.menuBuilder = menuBuilder;
188 public User getUser(User user) {
191 StringBuffer criteria = new StringBuffer();
192 criteria.append(" where login_id = '").append(user.getLoginId()).append("'");
194 list = getDataAccessService().getList(User.class, criteria.toString(), null, null);
195 return (list == null || list.size() == 0) ? null : (User) list.get(0);