package com.photon.phresco.service.admin.actions; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import com.photon.phresco.commons.model.User; public class Login extends ServiceBaseAction { private static final long serialVersionUID = -1858839078372821734L; private static final Logger S_LOGGER = Logger.getLogger(Login.class); private static Boolean isDebugEnabled = S_LOGGER.isDebugEnabled(); private String username = null; private String password = null; private boolean loginFirst = true; public String login() { if (isDebugEnabled) { S_LOGGER.debug("Entering Method Login.login()"); } if (loginFirst) { return LOGIN_RESULT; } if (validateLogin()) { return authenticate(); } return LOGIN_FAILURE; } private String authenticate() { if (isDebugEnabled) { S_LOGGER.debug("Entering Method Login.authenticate()"); } User user = null; try { byte[] encodeBase64 = Base64.encodeBase64(password.getBytes()); String encodedPassword = new String(encodeBase64); user = doLogin(username, encodedPassword); if (StringUtils.isEmpty(user.getDisplayName())) { getHttpRequest().setAttribute(REQ_LOGIN_ERROR, getText(KEY_I18N_ERROR_LOGIN)); return LOGIN_FAILURE; } if (!user.isPhrescoEnabled()) { getHttpRequest().setAttribute(REQ_LOGIN_ERROR, getText(KEY_I18N_ERROR_LOGIN_ACCESS_DENIED)); return LOGIN_FAILURE; } getHttpSession().setAttribute(SESSION_USER_INFO, user); } catch (Exception e) { return LOGIN_FAILURE; } return LOGIN_SUCCESS; } private boolean validateLogin() { if (isDebugEnabled) { S_LOGGER.debug("Entering Method Login.validateLogin()"); } if(StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) { getHttpRequest().setAttribute(REQ_LOGIN_ERROR, getText(KEY_I18N_LOGIN_EMPTY_CRED)); return false; } return true; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public boolean isLoginFirst() { return loginFirst; } public void setLoginFirst(boolean loginFirst) { this.loginFirst = loginFirst; } }