public ActionResult Login(LoginModel dadosLogin) { try { if (ModelState.IsValid) { // Obtendo o usuário. dadosLogin.Senha = Criptografia.GerarHashSenha(dadosLogin.Login + dadosLogin.Senha); Pessoa usuario = gerenciador.ObterByLoginSenhaUsuario(dadosLogin.Login, dadosLogin.Senha); // Autenticando. if (usuario != null) { FormsAuthentication.SetAuthCookie(usuario.Login, false); SessionHelper.Set(SessionKeys.Pessoa, (Usuario)usuario); if ((usuario.GetType() == typeof(Usuario) && ((Usuario)usuario).IsAdmin)) { return(RedirectToAction("Index", new { controller = "Administrador" })); } else { return(RedirectToAction("Index", new { controller = "Cliente" })); } } else { Pessoa empresa = gerenciador.ObterByLoginSenhaEmpresa(dadosLogin.Login, dadosLogin.Senha); if (empresa != null) { FormsAuthentication.SetAuthCookie(empresa.Login, false); SessionHelper.Set(SessionKeys.Pessoa, (Empresa)empresa); return(RedirectToAction("Index", new { controller = "Empresa" })); } } } ModelState.AddModelError("", "Usuário e/ou senha inválidos."); } catch { ModelState.AddModelError("", "A autenticação falhou. Forneça informações válidas e tente novamente."); } // Se ocorrer algum erro, reexibe o formulário. return(View()); }