public Usuario Autenticar(string email, string senha)
        {
            //criptografar a senha..
            senha = criptografia.EncriptarSenha(senha);
            email = email.ToUpper();

            Usuario u = uRep.ObterPorEmailSenha(email, senha);

            if (u != null)
            {
                return(u);
            }
            else
            {
                throw new CustomException("Login e/ou Senha inválido.");
            }
        }
        public ActionResult Cadastro(UsuarioViewModelCadastro model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    usuarioRepository.BeginTransaction();

                    Usuario u = new Usuario()
                    {
                        Nome         = model.Nome,
                        Email        = model.Email.ToUpper(),
                        Senha        = criptografia.EncriptarSenha(model.Senha),
                        DataCadastro = DateTime.Now,
                        Ativo        = SimNao.Sim
                    };


                    if (usuarioRepository.EmailExistente(u.Email))
                    {
                        throw new CustomException("Já existe um cadastro com este email.");
                    }


                    usuarioRepository.Inserir(u);

                    usuarioRepository.Commit();

                    ViewBag.MsgSucesso = "Cadastro realizado com sucesso.";

                    ModelState.Clear();
                }
                catch (Exception e)
                {
                    usuarioRepository.Rollback();
                    ViewBag.MsgErro = e.Message;
                }
                finally
                {
                    usuarioRepository.Dispose();
                }
            }

            return(View());
        }
        public ActionResult Login(HomeViewModelLogin model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    Usuario u = usuarioRepository.ObterPorEmailSenha(model.EmailAcesso.ToUpper(), criptografia.EncriptarSenha(model.SenhaAcesso));

                    if (u != null && u.Ativo.Equals(SimNao.Sim))
                    {
                        //ticket de acesso do usuario
                        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(u.IdUsuario.ToString(), false, 5);

                        //criando um cookie para gravar o tiket do usuario
                        HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));

                        Response.Cookies.Add(cookie);

                        Session.Add("usuario", u);

                        return(RedirectToAction("Index", "Usuario", new { area = "AreaRestrita" }));
                    }
                    else
                    {
                        ViewBag.MsgErro = "Acesso Negado. Tente novamente.";
                    }
                }
                catch (Exception e)
                {
                    ViewBag.MsgErro = e.Message;
                } finally
                {
                    usuarioRepository.Dispose();
                }
            }

            return(View());
        }