Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: move xhr management to a module and refactor #1555

Merged
merged 19 commits into from
Feb 5, 2024

Conversation

yohanboniface
Copy link
Member

@yohanboniface yohanboniface commented Jan 23, 2024

It sort of work for common cases, but edge cases needs work, specifically the login flow.

  • better error handling
  • 412
  • dependency on UI
  • login required when saving the map/datalayers

@yohanboniface yohanboniface force-pushed the request-module branch 3 times, most recently from 13b2703 to 0e6b73c Compare January 30, 2024 18:32
@yohanboniface yohanboniface marked this pull request as ready for review January 30, 2024 18:33
@yohanboniface yohanboniface changed the title wip: move xhr management to a module and refactor chore: move xhr management to a module and refactor Jan 30, 2024
It sort of work for common cases, but edge cases needs work,
specifically the login flow.
Instead of dealing with in JavaScript, let's do a more classic
HTTP flow.

The main flows work, but there is still at least one to deal with:
when editing a map without being logged in, the server may ask for
login, and in this case we should login THEN reissue the request,
so we need to interrupt the first request in some way,
otherwise the server will still answer with a 403, which is what
happens after this commit.
I decided to remove the check `is_ajax` from `validate_url` to simplify
and edge case, and because I think it was more or less useless.
Basically, when getting remote data, we have two cases:
- direct call to the remote URL
- proxy through our `ajax_proxy` system (to work around CORS limitations)

In the first case, we cannot set the `X-Requested-With` header, otherwise
preflight step will fail, and in the second case, until now, we needed
to set this header for this `is_ajax` check to pass. So keeping this check
would mean adapting the behaviour of the Request/ServerRequest class in
a non elegant way. So let's make it simple…
@yohanboniface yohanboniface merged commit 6fb7b02 into master Feb 5, 2024
4 checks passed
@yohanboniface yohanboniface deleted the request-module branch February 5, 2024 16:59
@yohanboniface
Copy link
Member Author

💣

davidbgk added a commit that referenced this pull request Apr 5, 2024
When the `UMAP_ALLOW_ANONYMOUS` setting is False, we return the login url through a JSON response. We lost that ability in #1555.

The JS part was not following that link in that particular case and lead to more errors because the map was not saved (hence, no `map_id`).

For now, the current work on the map is lost because of the redirection and we have a confirmation dialog to quit the edited page with unsaved changes.

Maybe we should display a custom message instead of a brutal redirection? Like: you’re not logged in, do it in a separate tab to keep you work? (A bit ugly…)

Sidenote: we might want to use the `redirect` pattern/key in the JSON response that we already use for deletion and clone for consistency.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants