1 package org.openecomp.portalsdk.core.service;
4 import java.util.HashMap;
5 import java.util.HashSet;
6 import java.util.Iterator;
10 import org.openecomp.portalsdk.core.command.LoginBean;
11 import org.openecomp.portalsdk.core.domain.Role;
12 import org.openecomp.portalsdk.core.domain.User;
13 import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
14 import org.openecomp.portalsdk.core.menu.MenuBuilder;
15 import org.openecomp.portalsdk.core.service.support.FusionService;
16 import org.openecomp.portalsdk.core.util.SystemProperties;
17 import org.openecomp.portalsdk.core.web.support.AppUtils;
18 import org.openecomp.portalsdk.core.web.support.UserUtils;
19 import org.springframework.beans.factory.annotation.Autowired;
20 import org.springframework.transaction.annotation.Transactional;
24 public class LoginServiceCentralizedImpl extends FusionService implements LoginService {
26 private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(LoginServiceCentralizedImpl.class);
29 AppService appService;
32 private DataAccessService dataAccessService;
35 RestApiRequestBuilder restApiRequestBuilder;
38 UserService userService;
40 @SuppressWarnings("unused")
41 private MenuBuilder menuBuilder;
44 public LoginBean findUser(LoginBean bean, String menuPropertiesFilename, HashMap additionalParams)
46 return findUser(bean, menuPropertiesFilename, additionalParams, true);
49 @SuppressWarnings("rawtypes")
50 public LoginBean findUser(LoginBean bean, String menuPropertiesFilename, HashMap additionalParams,
51 boolean matchPassword) throws Exception {
55 if (bean.getUserid() != null && bean.getUserid() != null) {
56 user = (User) findUser(bean);
59 user = (User) findUser(bean.getLoginId(), bean.getLoginPwd());
61 user = (User) findUserWithoutPwd(bean.getLoginId());
66 if (AppUtils.isApplicationLocked()
67 && !UserUtils.hasRole(user, SystemProperties.getProperty(SystemProperties.SYS_ADMIN_ROLE_ID))) {
68 bean.setLoginErrorMessage(SystemProperties.MESSAGE_KEY_LOGIN_ERROR_APPLICATION_LOCKED);
71 // raise an error if the user is inactive
72 if (!user.getActive()) {
73 bean.setLoginErrorMessage(SystemProperties.MESSAGE_KEY_LOGIN_ERROR_USER_INACTIVE);
76 if (!userHasActiveRoles(user)) {
77 bean.setLoginErrorMessage(SystemProperties.MESSAGE_KEY_LOGIN_ERROR_USER_INACTIVE);
79 // only login the user if no errors have occurred
80 if (bean.getLoginErrorMessage() == null) {
82 // this will be a snapshot of the user's information as
83 // retrieved from the database
84 userCopy = (User) user.clone();
86 User appuser = getUser(userCopy);
88 appuser.setLastLoginDate(new Date());
90 // update the last logged in date for the user
91 // user.setLastLoginDate(new Date());
92 getDataAccessService().saveDomainObject(appuser, additionalParams);
94 // update the audit log of the user
95 // Check for the client device type and set log attributes
98 // save the above changes to the User and their audit trail
100 // create the application menu based on the user's privileges
102 Set appMenu = getMenuBuilder().getMenu(
103 SystemProperties.getProperty(SystemProperties.APPLICATION_MENU_SET_NAME), dataAccessService);
104 bean.setMenu(appMenu != null ? appMenu : new HashSet());
105 Set businessDirectMenu = getMenuBuilder().getMenu(
106 SystemProperties.getProperty(SystemProperties.BUSINESS_DIRECT_MENU_SET_NAME),
108 bean.setBusinessDirectMenu(businessDirectMenu != null ? businessDirectMenu : new HashSet());
110 bean.setUser(userCopy);
117 private boolean userHasActiveRoles(User user) {
118 boolean hasActiveRole = false;
119 Iterator roles = user.getRoles().iterator();
120 while (roles.hasNext()) {
121 Role role = (Role) roles.next();
122 if (role.getActive()) {
123 hasActiveRole = true;
127 return hasActiveRole;
130 @SuppressWarnings("null")
131 public User findUser(LoginBean bean) throws Exception {
133 String repsonse = restApiRequestBuilder.getViaREST("/user/" + bean.getUserid(), true, bean.getUserid());
134 user = userService.userMapper(repsonse);
139 public User findUser(String loginId, String password) {
143 StringBuffer criteria = new StringBuffer();
144 criteria.append(" where login_id = '").append(loginId).append("'").append(" and login_pwd = '").append(password)
147 list = getDataAccessService().getList(User.class, criteria.toString(), null, null);
148 return (list == null || list.size() == 0) ? null : (User) list.get(0);
151 private User findUserWithoutPwd(String loginId) {
153 StringBuffer criteria = new StringBuffer();
154 criteria.append(" where login_id = '").append(loginId).append("'");
155 list = getDataAccessService().getList(User.class, criteria.toString(), null, null);
156 return (list == null || list.size() == 0) ? null : (User) list.get(0);
159 public DataAccessService getDataAccessService() {
160 return dataAccessService;
163 public void setDataAccessService(DataAccessService dataAccessService) {
164 this.dataAccessService = dataAccessService;
167 public MenuBuilder getMenuBuilder() {
168 return new MenuBuilder();
171 public void setMenuBuilder(MenuBuilder menuBuilder) {
172 this.menuBuilder = menuBuilder;
175 public User getUser(User user) {
178 StringBuffer criteria = new StringBuffer();
179 criteria.append(" where login_id = '").append(user.getLoginId()).append("'");
181 list = getDataAccessService().getList(User.class, criteria.toString(), null, null);
182 return (list == null || list.size() == 0) ? null : (User) list.get(0);