### Apache Airflow version

2.2.0b2 (beta snapshot)

### Operating System

Debian buster

### Versions of Apache Airflow Providers

_No response_

### Deployment

Astronomer

### Deployment details

Astro dev start

### What happened

Unable to change username while updating user information through API though it's possible from UI.

### What you expected to happen

Either username should not be editable from UI or It should be editable from API.

### How to reproduce

1. Use a patch request with the below URL.
`{{url}}/users/{{username}}`
2. In payload use a different username
```
 {
        "username": "{{username1}}",
        "password": "password1",
        "email": "{{email}}@example.com",
        "first_name": "{{$randomFirstName}}",
        "last_name": "{{$randomLastName}}",
        "roles":[{ "name": "Op"}]
}
```


### Anything else

_No response_

### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

tests/api_connexion/endpoints/test_user_endpoint.py
autoclean_user_payload["roles"] = [{"name": "User"}, {"name": "Viewer"}]
        response = self.client.patch(
            f"/api/v1/users/{autoclean_username}?update_mask=roles",
            json=autoclean_user_payload,
            environ_overrides={"REMOTE_USER": "test"},
        )
        assert response.status_code == 200, response.json
        assert {d["name"] for d in response.json["roles"]} == {"User", "Viewer"}
    @pytest.mark.usefixtures("autoclean_admin_user")
    def test_unchanged(self, autoclean_username, autoclean_user_payload):
        
        response = self.client.patch(
            f"/api/v1/users/{autoclean_username}",
            json=autoclean_user_payload,
            environ_overrides={"REMOTE_USER": "test"},
        )
        assert response.status_code == 200, response.json
        expected = {k: v for k, v in autoclean_user_payload.items() if k != "password"}
        assert {k: response.json[k] for k in expected} == expected
    @pytest.mark.usefixtures("autoclean_admin_user")
    def test_unauthenticated(self, autoclean_username, autoclean_user_payload):
        response = self.client.patch(
            f"/api/v1/users/{autoclean_username}",
            json=autoclean_user_payload,
        )
        assert response.status_code == 401, response.json
    @pytest.mark.usefixtures("autoclean_admin_user")
    def test_forbidden(self, autoclean_username, autoclean_user_payload):