예제 #1
0
        public ActionResult Login(LoginModel model)
        {
            // Busca Solicitação
            var  osAvulsa = this.RetornaOSAvulsa();
            long?cliente  = null;

            if (ModelState.IsValid)
            {
                try
                {
                    // Autentica Usuario
                    var modelUsu = autorizacaoServico.Autenticar(new BHJet_Servico.Autorizacao.Filtro.AutenticacaoFiltro()
                    {
                        usuario = model.Login,
                        senha   = model.Senha,
                        area    = TipoAplicacao.Interna
                    });

                    // Tickets
                    var userData        = JsonConvert.SerializeObject(model.Login);
                    var ticket          = new FormsAuthenticationTicket(1, model.Login, DateTime.Now, DateTime.Now.AddMinutes(120), false, userData, FormsAuthentication.FormsCookiePath);
                    var encryptedCookie = FormsAuthentication.Encrypt(ticket);
                    var cookie          = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedCookie)
                    {
                        Expires = DateTime.Now.AddHours(2)
                    };

                    // Cookies
                    Response.Cookies.Add(cookie);

                    // Buscar perfil
                    var perfil = autorizacaoServico.BuscaPerfil(modelUsu.access_token.ToString());
                    cliente = perfil.ClienteSelecionado;

                    // Verifica
                    if (perfil.TipoUsuario == TipoUsuario.Profissional)
                    {
                        throw new Exception("Perfil não autorizado a acessar esta aplicação.");
                    }

                    // Session - Session["IDTKUsuarioJet"] =
                    UsuarioLogado.Logar(perfil.ID.ToString(), perfil.ClienteSelecionado, modelUsu.access_token.ToString(), model.Login, perfil.TipoUsuario);
                }
                catch (Exception e)
                {
                    ViewBag.ErroLogin = e.Message ?? Mensagem.Validacao.UsuarioNaoEncontrato;
                    return(View(new LoginModel()));
                }

                // Verifica se foi simulado uma corrida sem usuario
                if (osAvulsa != null && osAvulsa.SimulandoCorridaSemUsuario && UsuarioLogado.Instance.BhjTpUsu == TipoUsuario.ClienteAvulsoSite)
                {
                    // Seta Cliente
                    osAvulsa.IDCliente = cliente;

                    // Atualiza Corrida
                    this.AtualizaOSAvulsa(osAvulsa);

                    // Redirect
                    return(RedirectToAction("Resumo", "Entregas"));
                }
                else if (UsuarioLogado.Instance.BhjTpUsu == TipoUsuario.Administrador)
                {
                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    return(RedirectToAction("Index", "HomeExterno", new { idCliente = cliente }));
                }
            }
            else
            {
                return(View(model));
            }
        }