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)); } } }