whole-tale / dashboard

Whole Tale Dashboard
http://wholetale.org
MIT License
7 stars 2 forks source link

Interpret resource_server as absolute URL #582

Closed bodom0015 closed 4 years ago

bodom0015 commented 4 years ago

Problem

The "User Settings" view offers users a way to connect external API tokens to their account for consumption and integration within WholeTale. After authorizing a provider with a particular resource_server value, the UI is supposed to offer a link to that resource_server.

Unfortunately, since the resource_server values received from Girder do not include a protocol, the browser interprets them as a relative path, and appends them to the end of the dashboard URL.

Fixes #581

Approach

Prepend link with // to force browser to interpret resource_server as an absolute URL.

Note that we use // to avoid potential Mixed-Content errors between HTTPS and HTTP.

See https://superuser.com/questions/341301/why-does-instead-of-http-or-https-before-the-actual-link-work

How to Test

  1. Checkout and run this code locally, rebuild the dashboard
  2. Login to the WholeTale Dashboard
  3. Navigate to the "User Settings" view
  4. Connect a Dataverse or Zenodo account, if you haven't already
    • You should see "Authorized on _____" appear below the Dataverse or Zenodo provider, where ____ is a link to the resource_server
  5. Click the on the link offered by the "Authorized on _____" line
    • Your browser should open a new tab to https://demo.dataverse.org or https://sandbox.zenodo.org
Xarthisius commented 4 years ago

@bodom0015 do you want me to fix that on the backend too?

bodom0015 commented 4 years ago

Yeah, I think it would make sense to normalize these URLs in the backend where possible. I hadn't considered the DataONE case (which may include the scheme in the URL), so there may be other edge cases that I've forgotten as well.

Should I file an issue for this, if you haven't already?