{# -*- coding: utf-8 -*-

  This file is part of Invenio.
  Copyright (C) 2015-2020 CERN.
  Copyright (C)      2021 Graz University of Technology.

  Invenio is free software; you can redistribute it and/or modify it
  under the terms of the MIT License; see LICENSE file for more details.
#}

{%- extends "invenio_oauth2server/settings/index.html" %}

{%- import "invenio_oauth2server/settings/helpers.html" as helpers with context %}
{%- from "invenio_oauth2server/settings/_macros.html" import render_field with context %}

{% block settings_content %}
  {{ helpers.panel_start(
      _('Application / %(client_name)s', client_name=client.name),
      with_body=False,
  ) }}

  <div class="ui segment">
    <form class="ui form" method="POST" action="{{ url_for('.client_reset', client_id=client.client_id) }}">
      <input type="hidden" name="reset" value="yes">
      <button type="submit" class="ui right floated negative button">
        <i class="icon ban"></i> {{ _('Reset client secret') }}
      </button>
    </form>
    <h4 class="ui header">
      {{ _('Client ID') }}
      <div class="sub header">
        <code>{{ client.client_id }}</code>
      </div>
    </h4>
    <h4 class="ui header">
      {{ _('Client Secret') }}
      <div class="sub header">
        <code>{{ client.client_secret }}</code>
        <br><small>{{ _('Do not share the client secret with anyone!') }}</small></p>
      </div>
    </h4>
  </div>
  {%- block client_footer_text %}{%- endblock client_footer_text %}
  <div class="ui segment">
    <form class="ui form" method="POST" role="form" action="">
      {%- for field in form %}
      {{ render_field(field) }}
      {%- endfor %}

      <button type="submit" name="delete" class="ui button negative">
        <i class="icon trash"></i> {{ _('Delete') }}
      </button>
      <button type="submit" name="save" class="ui button primary">
        <i class="icon check"></i> {{ _('Save') }}
      </button>
    </form>
  </div>
  {{helpers.panel_end(with_body=False)}}

  {{helpers.panel_start(_('OAuth 2.0 Endpoints'))}}
  <div class="ui equal width grid">
    <div class="column">
      <p>
        <h3 class="ui header">
          {{ _('Authorize URL (GET)') }}
          <div class="sub header">
            {{ url_for('invenio_oauth2server.authorize', _external=True, _scheme='https')}}
          </div>
        </h3>
        <small>
          {{ _('Query parameters') }} (<a href="{{ url_for(
              'invenio_oauth2server.authorize', response_type='code',
              client_id=client.client_id,
              scope='deposit:write deposit:actions',
              state='CHANGEME',
              redirect_uri=client.default_redirect_uri,
              _external=False) }}">
            {{_('example request')}}
          </a>):
          <ul>
            <li>response_type ({{ _("required, use") }} <code>code</code> {{ _("or") }} <code>token</code>)</li>
            <li>client_id ({{ _("required") }})</li>
            <li>scope ({{ _("required, space separate list of scopes") }})</li>
            <li>redirect_uri ({{ _("required, URL encoded") }})</li>
            <li>state ({{ _("recommended, for CSRF protection") }})</li>
          </ul>
        </small>
      </p>
    </div>
    <div class="column">
      <p>
      <h3 class="ui header">
        {{ _('Access token URL (POST)') }}
        <div class="sub header">
          {{ url_for('invenio_oauth2server.access_token', _external=True, _scheme='https')}}
        </div>
      </h3>
      <small>{{ _('Request body parameters:') }}
        <ul>
          <li>client_id ({{ _("required") }}).</li>
          <li>client_secret ({{ _("required") }}).</li>
          <li>grant_type ({{ _("required, use") }} {% for c in config.OAUTH2SERVER_ALLOWED_GRANT_TYPES %}<code>{{c}}</code>{% if not loop.last %}, {% endif %}{% endfor %}).</li>
          <li>code ({{ _("required for grant_type") }} <code>authorization code</code>).</li>
          <li>scope ({{ _("required for grant_type") }} <code>client_credentials</code>).</li>
          <li>refresh_token ({{ _("required for grant_type") }} <code>refresh_token</code>).</li>
        </ul>
      </small>
      </p>
    </div>
  </div>
  {{helpers.panel_end()}}
{% endblock settings_content %}
