Exemplo n.º 1
0
        public ActionResult Index(LoginModel model)
        {
            //Cria o objeto cliente somente com o filtro passado
            cliente cliente = db.clientes.ToList().Find(x => x.LOGIN == model.Login);
            //cliente cliente = db.clientes.Single(x => x.NOME == model.Login);
            if (cliente == null)
            {
                ModelState.AddModelError("", "Inválido Login ou Senha");
            }
            if (ModelState.IsValid)
            {
                //Descriptar senha vinda do banco de dados
                string texto = cliente.SENHA;
                //Está chave tem que ser a mesma que a do texto Encriptado.
                string key = "Criptografia";
                Criptografia.Criptografia crip = new Criptografia.Criptografia(CryptProvider.DES);
                crip.Key = key;
                string senhaDecrypt = crip.Decrypt(texto);

                //if (cliente != null && model.Login == cliente.LOGIN && model.Senha == cliente.SENHA) alterado para funcionar descriptografia
                if (model.Login == cliente.LOGIN && model.Senha == senhaDecrypt)
                {
                    //FormsAuthentication.SetAuthCookie(model.Login, false);
                    FormsService.SignIn(model.Login, false);

                    //Ao autenticar usuário no sistema, incluir ROLE ADM e NOR e ainda incluí-lo na ROLE respectiva
                    if (cliente.TIPOCLIENTE.ToUpper() == "ADM")
                    {
                        // Criando Role ADM
                        if (!Roles.RoleExists("ADM"))
                        {
                            Roles.CreateRole("ADM");
                        }
                        // Definindo Usuário para uma Role
                        if(!Roles.IsUserInRole(cliente.LOGIN, "ADM"))
                        {
                            //Antes de associar o Login a uma nova Role, excluir de associação de outras Roles.
                            string[] strRolesForUser = Roles.GetRolesForUser(cliente.LOGIN);
                            if (strRolesForUser.Length > 0)
                            {
                                Roles.RemoveUserFromRoles(cliente.LOGIN, strRolesForUser);
                            }
                            //Associar Login a Role
                            Roles.AddUserToRole(cliente.LOGIN, "ADM");
                        }
                    }
                    else if (cliente.TIPOCLIENTE.ToUpper() == "NOR")
                    {
                        // Criando Role NOR
                        if (!Roles.RoleExists("NOR"))
                        {
                            Roles.CreateRole("NOR");
                        }
                        // Definindo Usuário para uma Role
                        if (!Roles.IsUserInRole(cliente.LOGIN, "NOR"))
                        {
                            //Antes de associar o Login a uma nova Role, excluir de associação de outras Roles.
                            string[] strRolesForUser = Roles.GetRolesForUser(cliente.LOGIN);
                            if (strRolesForUser.Length > 0)
                            {
                                Roles.RemoveUserFromRoles(cliente.LOGIN, strRolesForUser);
                            }
                            Roles.AddUserToRole(cliente.LOGIN, "NOR");
                        }
                    }
                    else
                    {
                        //Se entrar aqui significa que o Login não possui Papel e deve ser exibida a msg na tela com Logoff
                        ModelState.AddModelError("", "Login sem Grupo Definido: Contate o Administrador");
                        LogOff();
                    }
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    ModelState.AddModelError("", "Inválido Login ou Senha");
                }
            }
            return View();
        }
Exemplo n.º 2
0
 public ActionResult RecLoginEmail(LoginModel model)
 {
     TempData["RecLoginSenha"] = null;
     //Retirar não numéricos do CPF
     string Cliente_CPF = Util.RemoveNaoNumericos(model.cpf);
     model.cpf = Cliente_CPF;
     //Cria o objeto cliente somente com o filtro passado
     cliente cliente = db.clientes.ToList().Find(x => x.CPF ==model.cpf);
     if (cliente == null)
     {
         cliente = db.clientes.ToList().Find(x => x.EMAIL == model.email.ToLower());
         if (cliente == null)
         {
             ModelState.AddModelError("", "CPF ou E-MAIL não se encontram vinculados a nenhum Login");
             return View(model);
         }
     }
     //Descriptografar senha e confirmasenha antes de enviar a banco
     string texto = cliente.SENHA;
     //Está chave tem que ser a mesma que a do texto Encriptado.
     string key = "Criptografia";
     Criptografia.Criptografia crip = new Criptografia.Criptografia(CryptProvider.DES);
     crip.Key = key;
     cliente.SENHA = crip.Decrypt(texto);
     //Fim da Descriptografia
     //Início Chamada Enviar E-mail ao Cliente com seu Login e Senha
     SendMail.EnviaEmail(cliente.EMAIL, cliente.NOME,
         "Recuperação de Login e Senha do ReclameAgora",
         "Prezado(a) <span color:Blue><b>" + cliente.NOME.ToString() + "</b></span>,<br /><br />" +
         "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
         "Seu Login e Senha foram recuperados e seguem abaixo: <br /><br />" +
         "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
         "Login = <b>" + cliente.LOGIN.ToString() + "</b>.<br /><br />" +
         "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
         "Senha = <b>" + cliente.SENHA.ToString() + "</b>.<br /><br />" +
         "<a href=\"http://reclameagora.apphb.com/Login\" title=\"ReclameAgora\"> http://reclameagora.apphb.com/Login</a> <br /><br />" +
         "Atenciosamente,<br />" +
         "Equipe ReclameAgora");
     //Fim da Chamada Enviar E-mail
     TempData["RecLoginSenha"] = "Seu Login e Senha foram recuperados com sucesso e enviados em alguns instantes para o E-mail já cadastrado no sistema.";
     return RedirectToAction("RecLoginEmail", "Login");
 }