Пример #1
0
        public IHttpActionResult Authenticate([FromBody] LoginRequest loginRequest)
        {
            using (var responseMsg = new HttpResponseMessage())
            {
                IHttpActionResult result;

                try
                {
                    //Se os dados do login estão null, retornar BadRequest
                    if (loginRequest == null)
                    {
                        return(BadRequest("Dados inválidos."));
                    }

                    var userLogin = new UserLogin {
                        UserName = loginRequest.Username, Password = loginRequest.Password, UserType = loginRequest.UserType
                    };

                    //Recupera o usuário de atendimento
                    var loginResponse = _loginBusiness.DoLogin(userLogin);

                    //Se o usuário não foi encontrado com base nos dados do login, retornar Unauthorized
                    if (loginResponse == null)
                    {
                        return(BadRequest("Login não autorizado."));
                    }

                    //Cria a token de autenticação e autorização
                    if (loginRequest.UserType == Tipos.Login.Atendimento)
                    {
                        loginResponse.Token = CreateToken(loginRequest.Username.ToLower(), ((AtendenteEmpresa)loginResponse.Usuario).Email);
                    }
                    else
                    {
                        loginResponse.Token = CreateToken(loginRequest.Username.ToLower(), ((UsuarioCliente)loginResponse.Usuario).Email);
                    }

                    //Monta response
                    result = Ok(Retorno <LoginResponse> .Criar(true, "Acesso Autorizado", loginResponse));

                    //Retorna o response com o token
                    return(result);
                }
                catch (Exception ex)
                {
                    return(InternalServerError(ex));
                }
            }
        }