[%# This Source Code Form is subject to the terms of the Mozilla Public
  # License, v. 2.0. If a copy of the MPL was not distributed with this
  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
  #
  # This Source Code Form is "Incompatible With Secondary Licenses", as
  # defined by the Mozilla Public License, v. 2.0.
  #%]

[%# INTERFACE:
  # api_keys: array. Array of api keys this user has.
  # any_revoked: boolean. True is any keys have been revoked.
  #%]

<p>
  API keys are used to authenticate WebService API calls. You can create more than
  one API key if required. Each API key has an optional description which can help
  you record what each key is used for.
</p>
<p>
  Documentation on how to log in is available
  <a href="https://bugzilla.readthedocs.io/en/latest/api/core/v1/general.html#authentication">
    here</a>.
</p>

<h3>Existing API keys</h3>

<p>You can update the description, and revoke or unrevoke existing API keys
here. Sticky keys may only be used from the last IP that used the API key, and cannot be unset.</p>

<table class="standard">
<thead>
  <tr>
    <th>API key</th>
    <th>Description (optional)</th>
    <th>Created</th>
    <th>Last used</th>
    <th>Sticky</th>
    <th>Revoked</th>
  </tr>
</thead>
<tbody>
  [% FOREACH api_key IN api_keys %]
    <tr[% IF api_key.revoked %] class="apikey_revoked bz_tui_hidden" style="display:none"[% END %]>
      <td>
        [% api_key.api_key FILTER html %]
      </td>
      <td>
        <input name="description_[% api_key.id FILTER html %]"
          id="description_[% api_key.id FILTER html %]"
          value="[% api_key.description FILTER html %]">
      </td>
      <td>
        [% api_key.creation_ts FILTER time %]
      </td>
      [% IF api_key.last_used %]
        <td>[% api_key.last_used FILTER time %]
          [% IF api_key.last_used_ip %] ([% api_key.last_used_ip FILTER html %]) [% END %]
        </td>
      [% ELSE %]
        <td class="center"><i>never used</i></td>
      [% END %]
      <td class="center">
      <input type="checkbox" value="1"
          name="sticky_[% api_key.id FILTER html %]"
          id="sticky_[% api_key.id FILTER html %]"
        [% IF api_key.sticky %] checked="checked" disabled="disabled" [% END %]>
      </td>
      <td class="center">
        <input type="checkbox" value="1"
          name="revoked_[% api_key.id FILTER html %]"
          id="revoked_[% api_key.id FILTER html %]"
          [% IF api_key.revoked %] checked="checked" [% END %]>
        [% IF api_key.revoked %]
          [% INCLUDE "mfa/protected.html.tmpl" %]
        [% END %]
      </td>
    </tr>
  [% END %]
  [% UNLESS api_keys.size %]
    <tr><td colspan="4">You don't have any API keys.</td></tr>
  [% END %]
</tbody>
</table>

[% IF any_revoked %]
  <a href="#" id="apikey-toggle-revoked">Show Revoked Keys</a>
[% END %]

<h3>New API key</h3>

<p>You can generate a new API key by ticking the check box below and optionally
providing a description for the API key. The API key will be randomly
generated for you.</p>

<p>
  <input type="checkbox" name="new_key" id="new_key">
  <label for="new_key">
    Generate a new API key with optional description</label>
  <input name="new_description" id="new_description">
  [% INCLUDE "mfa/protected.html.tmpl" %]
</p>

