{# -*- 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(
      _('%(client_name)s', client_name=client.name),
      breadcrumb_path=url_for('.index'),
      breadcrumb_title=_('Applications'),
      with_body=False,
  ) }}

  <div class="ui segment">
    <div class="ui grid">
      <div class="two column stackable tablet-mobile row">
        <div class="column">
          <h3 class="ui small header">{{ _('Client ID') }}</h3>
          <code class="word-break-all">{{ client.client_id }}</code>

          <h3 class="ui small header">{{ _('Client Secret') }}</h3>
          <code class="word-break-all">{{ client.client_secret }}</code>
          <p><small>{{ _('Do not share the client secret with anyone!') }}</small></p>
        </div>

        <div class="bottom aligned column">
          <form class="ui form text-align-right" method="POST" action="{{ url_for('.client_reset', client_id=client.client_id) }}">
            <input type="hidden" name="reset" value="yes">
            <button type="submit" class="ui negative labeled icon button">
              <i class="icon ban" aria-hidden="true"></i> {{ _('Reset client secret') }}
            </button>
          </form>
        </div>
      </div>
    </div>

  </div>

  {%- block client_footer_text %}
  {%- endblock client_footer_text %}

  <div class="ui segment">
    <div class="ui grid">
      <div class="one column stackable tablet-mobile row">
        <div class="column">
          <h3 class="ui small header">{{ _("Application settings") }}</h3>
          <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 labeled icon negative">
              <i class="icon trash" aria-hidden="true"></i> {{ _('Delete') }}
            </button>
            <button type="submit" name="save" class="ui button labeled icon primary">
              <i class="icon check" aria-hidden="true"></i> {{ _('Save') }}
            </button>
          </form>
        </div>
      </div>
    </div>
  </div>
  {{helpers.panel_end(with_body=False)}}

  {{helpers.panel_start(_('OAuth 2.0 Endpoints'))}}
  <div class="ui grid">
    <div class="two column stackable tablet-mobile row">
      <div class="column">
        <h3 class="ui small header">
          {{ _('Authorize URL (GET)') }}
          <div class="sub header">
            {{ url_for('invenio_oauth2server.authorize', _external=True, _scheme='https')}}
          </div>
        </h3>

        <p>
          {{ _('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>
        </p>
      </div>
      <div class="column">
        <h3 class="ui small header">
          {{ _('Access token URL (POST)') }}
          <div class="sub header">
            {{ url_for('invenio_oauth2server.access_token', _external=True, _scheme='https')}}
          </div>
        </h3>
        <p>
          {{ _('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>redirect_uri ({{ _("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>
        </p>
      </div>
    </div>
  </div>
  {{helpers.panel_end()}}
{% endblock settings_content %}
