/*
* Copyright 1999-2012 Alibaba Group.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.alibaba.cobar.manager.web.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import com.alibaba.cobar.manager.dataobject.xml.UserDO;
import com.alibaba.cobar.manager.service.XmlAccesser;
import com.alibaba.cobar.manager.web.URLBroker;
/**
* (created at 2010-7-20)
*
* @author <a href="mailto:shuo.qius@alibaba-inc.com">QIU Shuo</a>
* @author wenfeng.cenwf 2011-4-7
*/
public class LoginAction extends SimpleFormController implements InitializingBean {
private XmlAccesser xmlAccesser;
public void setXmlAccesser(XmlAccesser xmlAccesser) {
this.xmlAccesser = xmlAccesser;
}
@SuppressWarnings("unused")
private static class Account {
private String userName;
private String password;
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;
}
}
@Override
public void afterPropertiesSet() throws Exception {
setCommandClass(Account.class);
if (xmlAccesser == null) {
throw new IllegalArgumentException("property 'xmlAccesser' is null!");
}
}
@Override
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response,
Object command,
BindException errors) throws Exception {
Account form = (Account) command;
UserDO user = xmlAccesser.getUserDAO().validateUser(form.getUserName().trim(), form.getPassword().trim());
if (user != null) {
if (logger.isInfoEnabled()) {
StringBuilder sb = new StringBuilder("User '");
sb.append(user.getUsername());
sb.append("' login!");
logger.info(sb.toString());
}
request.getSession().setAttribute("user", user);
//request.getSession().setMaxInactiveInterval(30);
String to = (String) request.getSession().getAttribute("lastRequest");
if (null != to) {
request.getSession().removeAttribute("click");
request.getSession().removeAttribute("lastRequest");
response.sendRedirect(to);
} else {
response.sendRedirect(URLBroker.redirectClusterListScreen());
}
} else {
// ??????
boolean flag = (Boolean) request.getSession().getAttribute("click");
if (flag) {
response.sendRedirect(URLBroker.redirectIndexPage("false"));
} else {
response.sendRedirect(URLBroker.redirectLogInPage("false"));
}
}
return null;
}
}