private void ValidarPoliticaSenha(TrocaSenhaEsqueceuVM model)
 {
     if ((model.Senha.Length < 8) || (model.ConfirmaSenha.Length < 8))
     {
         ModelState.AddModelError("model.Senha", "As senhas devem ter no mínimo 8 caracteres");
         ModelState.AddModelError("model.ConfirmaSenha", "As senhas devem ter no mínimo 8 caracteres");
     }
 }
        public ActionResult TrocaSenhaEsqueceu(string chaveurl)
        {
            List <ParametroCriptografia> param = Cripto.DescriptografarUrl(chaveurl, Key);

            // VERIFICA SE OS PARAMETROS FORAM MONTADOS CORRETAMENTE
            if (param.Count == 0)
            {
                ViewBag.DisplayForm    = false;
                ViewBag.DisplaySucesso = false;
                ViewBag.DisplayAlerta  = true;
                return(View());
            }

            int    id;
            string chaveEsqueceu;

            Int32.TryParse(param.First(p => p.Name == "id").Value, out id);
            chaveEsqueceu = param.First(p => p.Name == "chave").Value;

            Usuario usuario = _usuarioService.BuscarPorId(id);

            //VERIFICA SE O Usuario EXISTE
            if (usuario == null)
            {
                ViewBag.DisplayForm    = false;
                ViewBag.DisplaySucesso = false;
                ViewBag.DisplayAlerta  = true;
                return(View());
            }

            //VERIFICA SE A CHAVE DE TROCA DE SENHA CONFERE
            if (usuario.TROCAR_SENHA != chaveEsqueceu)
            {
                ViewBag.DisplayForm    = false;
                ViewBag.DisplaySucesso = false;
                ViewBag.DisplayAlerta  = true;
                return(View());
            }

            TrocaSenhaEsqueceuVM acesso = new TrocaSenhaEsqueceuVM();

            acesso.ID = usuario.ID;

            if (usuario.Contratante != null)
            {
                if (usuario.Contratante.TIPO_CADASTRO_ID != null)
                {
                    acesso.TipoCadastro = (int)usuario.Contratante.TIPO_CADASTRO_ID;
                }
            }

            ViewBag.DisplayForm    = true;
            ViewBag.DisplaySucesso = false;
            ViewBag.DisplayAlerta  = false;
            ViewBag.CPF_CNPJ       = (usuario.CPF_CNPJ.Length == 14 ? 1 : 2);

            return(View(acesso));
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="model"></param>
 private void ValidarPoliticaSenha(TrocaSenhaEsqueceuVM model)
 {
     if ((model.Senha.Length < 8) || (model.ConfirmaSenha.Length < 8))
     {
         ModelState.AddModelError("model.Senha", "As senhas devem ter no mínimo 8 caracteres");
         ModelState.AddModelError("model.ConfirmaSenha", "As senhas devem ter no mínimo 8 caracteres");
     }
     //Regex rgx = new Regex(@"(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\da-zA-Z]).{8,10}", RegexOptions.IgnoreCase);
     //MatchCollection matches = rgx.Matches(model.Senha);
     //if (matches.Count <= 0)
     //{
     //    ModelState.AddModelError("", "A senha deve respeitar a política de senha da empresa.");
     //}
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="model"></param>
        /// <param name="usuario"></param>
        private void Validar6UltimasSenhas(TrocaSenhaEsqueceuVM model, Usuario usuario)
        {
            List <USUARIO_SENHAS> historicoSenhaList = usuario.WFD_USUARIO_SENHAS_HIST
                                                       .OrderBy(x => x.SENHA_DT)
                                                       .Take(6)
                                                       .ToList();

            foreach (var item in historicoSenhaList)
            {
                if (PasswordHash.ValidatePassword(model.Senha, item.SENHA))
                {
                    ModelState.AddModelError("", "Erro ao tentar salvar a nova senha! A mesma corresponde a uma senha anteriormente cadastrada.");
                }
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="model"></param>
        /// <param name="usuario"></param>
        private void IncluirHistoricoIncluirNovaSenhaUsuario(TrocaSenhaEsqueceuVM model, Usuario usuario)
        {
            string senha = PasswordHash.CreateHash(model.Senha);

            USUARIO_SENHAS historicoSenha = new USUARIO_SENHAS
            {
                SENHA      = senha,
                USUARIO_ID = usuario.ID,
                SENHA_DT   = DateTime.Now
            };

            usuario.SENHA           = senha;
            usuario.TROCAR_SENHA    = null;
            usuario.PRIMEIRO_ACESSO = false;
            _usuarioService.IncluirUsuarioIncluirNovaSenhaUsuario(usuario, historicoSenha);
        }
        public ActionResult TrocaSenhaEsqueceu(TrocaSenhaEsqueceuVM model)
        {
            ViewBag.DisplayForm    = true;
            ViewBag.DisplaySucesso = false;
            ViewBag.DisplayAlerta  = false;

            ValidarPoliticaSenha(model);
            Usuario usuario = _usuarioService.BuscarPorId(model.ID);

            ViewBag.CPF_CNPJ = (usuario.CPF_CNPJ.Length == 14 ? 1 : 2);

            if (ModelState.IsValid)
            {
                if (usuario != null)
                {
                    //if (usuario.CPF_CNPJ != model.CPF.Replace(".", "").Replace("-", "").Replace("/", ""))
                    //{
                    //    if (usuario.CPF_CNPJ.Length == 14)
                    //        ModelState.AddModelError("CNPJ", "CNPJ Inválido!");
                    //    else
                    //        ModelState.AddModelError("CPF", "CPF Inválido!");
                    //}

                    //Validar6UltimasSenhas(model, usuario);

                    if (ModelState.IsValid)
                    {
                        IncluirHistoricoIncluirNovaSenhaUsuario(model, usuario);

                        ViewBag.DisplayForm    = false;
                        ViewBag.DisplaySucesso = true;
                        ViewBag.DisplayAlerta  = false;
                        return(View());
                    }
                }
                else
                {
                    ViewBag.DisplayForm    = true;
                    ViewBag.DisplaySucesso = false;
                    ViewBag.DisplayAlerta  = false;
                    ModelState.AddModelError("", "Erro ao tentar salvar a nova senha, o identificador do usuário não existe!");
                }
            }

            return(View(model));
        }