package br.usp.ime.academicdevoir.controller; import br.com.caelum.vraptor.Get; import br.com.caelum.vraptor.Path; import br.com.caelum.vraptor.Post; import br.com.caelum.vraptor.Resource; import br.com.caelum.vraptor.Result; import br.usp.ime.academicdevoir.dao.UsuarioDao; import br.usp.ime.academicdevoir.entidade.Usuario; import br.usp.ime.academicdevoir.infra.Privilegio; import br.usp.ime.academicdevoir.infra.Public; import br.usp.ime.academicdevoir.infra.UsuarioSession; @Public @Resource /** * Controlador de login. */ public class LoginController { /** * @uml.property name="result" * @uml.associationEnd multiplicity="(1 1)" */ private final Result result; /** * @uml.property name="usuarioSession" * @uml.associationEnd multiplicity="(1 1)" */ private UsuarioSession usuarioSession; /** * @uml.property name="usuarioDao" * @uml.associationEnd multiplicity="(1 1)" */ private UsuarioDao usuarioDao; public LoginController(Result result, UsuarioDao usuarioDao, UsuarioSession alunodao) { this.result = result; this.usuarioDao = usuarioDao; this.usuarioSession = alunodao; } @Path("/") public void index() { result.redirectTo(LoginController.class).login(); } @Get @Path("/login") public void login() { } @Post("/autenticar") public void login(Usuario usuario) { Usuario user = usuarioDao.fazLogin(usuario.getLogin(), usuario.getSenha()); if (user != null) { usuarioSession.setUsuario(user); Privilegio pr = user.getPrivilegio(); if (pr.equals(Privilegio.PROFESSOR)) { result.redirectTo(ProfessoresController.class).home(); } else if (pr.equals(Privilegio.ADMINISTRADOR)) { result.redirectTo(AdministradorController.class).home(); } else { result.redirectTo(AlunosController.class).home(); } } else { result.include("error", "Login ou senha incorreta!") .redirectTo(this).login(); } } @Get("/logout") public void logout() { usuarioSession.logout(); result.redirectTo(this).login(); } public void acessoNegado() { } }