Esempio n. 1
0
        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());
        }