diff --git a/portal/auth_backends.py b/portal/auth_backends.py index 8ee0486f849fc45bf0156af57fe7038e76a1e317..e4b1e81dcdf31b2ee2f99fdafb4d146223125c13 100644 --- a/portal/auth_backends.py +++ b/portal/auth_backends.py @@ -4,9 +4,8 @@ from django.contrib.auth.models import User class TokenAuthBackend(ModelBackend): def authenticate(self, request, token=None): - if not token and 'headers' in request: + if not token: token = request.headers.get('Iric-Auth-Token') - try: return User.objects.get(profile__api_token=token) except User.DoesNotExist: diff --git a/portal/templates/portal/secure/user/api.html b/portal/templates/portal/secure/user/api.html index 0044f03ec041e8c10be7d72b0a1c35f43b681329..8b89707d8a2797645a3c43493e5423ca62477cb2 100644 --- a/portal/templates/portal/secure/user/api.html +++ b/portal/templates/portal/secure/user/api.html @@ -16,8 +16,12 @@ </div> <p> {% trans 'Use this token to authenticate your API calls by inserting it in the request header under "Iric-Auth-Token".' %} - Ex. </p> + <p> + {% trans 'Two APIs exists to query IRIC Data :' %} + </p> + + <h3> {% trans 'IRIC Data API v1 (python requests example)' %} </h3> <div class="col-10 alert alert-secondary"> <pre class='mb-0'><code>import requests url = '{{ request.scheme }}://{{ request.get_host }}/api/v1/my-datasets/list/json/' @@ -25,6 +29,24 @@ headers = {'Iric-Auth-Token': '{{user.profile.api_token}}'} r = requests.get(url, headers=headers) r.json()</code></pre> </div> + <h3> {% trans 'GraphQL API (python requests example)' %} </h3> + <p> + <i>{% trans 'NOTE: A GraphQL sandbox is also available online' %} : <a href="{{ request.scheme }}://{{ request.get_host }}/graphql/">{{ request.scheme }}://{{ request.get_host }}/graphql/<a></i> + </p> + <div class="col-10 alert alert-secondary"> + <pre class='mb-0'><code>import requests +url = '{{ request.scheme }}://{{ request.get_host }}/graphql/' +headers = {'Iric-Auth-Token': '{{user.profile.api_token}}'} +query = """{ + datafiles { + filename + } +} +""" +r = requests.post(url, headers=headers, json={'query': query}) +r.json()</code></pre> + </div> + </div> </div>