Log In | Get Help   
Home My Page Projects Code Snippets Project Openings Accounting and Billing Portal
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files
[abportal] View of /src/main/java/eu/smartlm/abs/portal/security/login/LoginController.java
[abportal] / src / main / java / eu / smartlm / abs / portal / security / login / LoginController.java Repository:
ViewVC logotype

View of /src/main/java/eu/smartlm/abs/portal/security/login/LoginController.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (download) (annotate)
Wed Jul 28 10:05:51 2010 UTC (13 years, 9 months ago) by dgarcia
File size: 3426 byte(s)
First code commit
package eu.smartlm.abs.portal.security.login;

import javax.portlet.ActionResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.portlet.bind.annotation.ActionMapping;
import org.springframework.web.portlet.bind.annotation.RenderMapping;

import eu.smartlm.abs.portal.security.login.model.User;
import eu.smartlm.abs.portal.security.login.service.LoginService;
import eu.smartlm.abs.portal.view.event.LoginEventData;


/**
 * Login control that limits the query to the Accounting and Billing Database
 * @author David García Pérez - CESGA
 */
@Controller(value="loginController")
@RequestMapping(value = "VIEW")
@SessionAttributes(types = User.class)
public class LoginController {
	public static int LOGGED_IN = 100;
	public static int LOGGED_OUT = 200;
	public static String LOGIN_EVENT = "loginEvent";
	private int status = 200;
	private User user;
	
	@Autowired
	@Qualifier("myLoginService")
	private LoginService loginService;

	public void setLoginService(LoginService loginService) {
		this.loginService = loginService;
	}
	
	/**
	 * Pointer to the default jsp portlet to show
	 * @return the name of the jsp portlet
	 */
	@RenderMapping
	public String showLoginForm() {
		if(status == LOGGED_OUT)
			return "login";
		else if (status == LOGGED_IN)
			return "logged";
		else
			return "login";
	}
	
	/**
	 * Pointer to the jsp page with the logged information
	 * @return the name of the jsp page
	 */
	@RenderMapping(params = "myaction=loggedIn")
	public String showLoggedInPage() {
		return "logged";
	}
	
	/**
	 * User object that it is created to be passed to the jsp page
	 * @return a User Object
	 */
	@ModelAttribute("user")
	public User getCommandObject() {
		if (user == null) return new User();
		return user;
	}
	
	/**
	 * Initicialices the binder that associates fields of the jsp page to the user model
	 * @param binder
	 */
	@InitBinder("user")
	public void initBinder(WebDataBinder binder) { }
	

	/**
	 * Action to be processed when a user tries to login
	 */
	@ActionMapping(params = "myaction=loginUser")
	public void loginUser(@ModelAttribute User user, BindingResult bindingResult, ActionResponse response, SessionStatus sessionStatus) {
		
		if(loginService.isValidLogin(user)) {
			status = LOGGED_IN;
			this.user = loginService.getUser(user.getUsername());
			response.setEvent(LOGIN_EVENT, new LoginEventData(status, this.user));
			response.setRenderParameter("myaction", "loggedIn");
		} else {
			status = LOGGED_OUT;
		}
	}
	
	/**
	 * Action to be processed when a user logs out
	 */
	@ActionMapping(params = "myaction=logoutUser")
	public void loggoutUser(ActionResponse response, SessionStatus sessionStatus) {
		status = LOGGED_OUT;
		user = null;
		response.setEvent(LOGIN_EVENT, new LoginEventData(status, user));
		response.setRenderParameter("myaction" , "login");
		sessionStatus.setComplete();
	}
}

root@forge.cesga.es
ViewVC Help
Powered by ViewVC 1.0.0  

Powered By FusionForge