api_tokens.html 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. {% extends 'users/base.html' %}
  2. {% load helpers %}
  3. {% block title %}API Tokens{% endblock %}
  4. {% block content %}
  5. <div class="row">
  6. <div class="col col-md-10 offset-md-1">
  7. {% for token in tokens %}
  8. <div class="card{% if token.is_expired %} bg-danger{% endif %}">
  9. <div class="card-header">
  10. <div class="float-end noprint">
  11. <a class="m-1 btn btn-sm btn-success copy-token" data-clipboard-target="#token_{{ token.pk }}">Copy</a>
  12. <a href="{% url 'user:token_edit' pk=token.pk %}" class="m-1 btn btn-sm btn-warning">Edit</a>
  13. <a href="{% url 'user:token_delete' pk=token.pk %}" class="m-1 btn btn-sm btn-danger">Delete</a>
  14. </div>
  15. <i class="mdi mdi-key"></i>
  16. <samp><span id="token_{{ token.pk }}">{{ token.key }}</span></samp>
  17. {% if token.is_expired %}
  18. <span class="badge bg-danger">Expired</span>
  19. {% endif %}
  20. </div>
  21. <div class="card-body">
  22. <div class="row">
  23. <div class="col col-md-3">
  24. <small class="text-muted">Created</small><br />
  25. {{ token.created|annotated_date }}
  26. </div>
  27. <div class="col col-md-3">
  28. <small class="text-muted">Expires</small><br />
  29. {% if token.expires %}
  30. {{ token.expires|annotated_date }}
  31. {% else %}
  32. <span>Never</span>
  33. {% endif %}
  34. </div>
  35. <div class="col col-md-3">
  36. <small class="text-muted">Create/Edit/Delete Operations</small><br />
  37. {% if token.write_enabled %}
  38. <span class="badge bg-success">Enabled</span>
  39. {% else %}
  40. <span class="badge bg-danger">Disabled</span>
  41. {% endif %}
  42. </div>
  43. <div class="col col-md-3">
  44. <small class="text-muted">Allowed Source IPs</small><br />
  45. {% if token.allowed_ips %}
  46. {{ token.allowed_ips|join:', ' }}
  47. {% else %}
  48. <span>Any</span>
  49. {% endif %}
  50. </div> </div>
  51. {% if token.description %}
  52. <br /><span>{{ token.description }}</span>
  53. {% endif %}
  54. </div>
  55. </div>
  56. {% empty %}
  57. <h6><i class="mdi mdi-information"></i> You do not have any API tokens.</h6>
  58. <p>Tokens are used to authenticate REST and GraphQL API requests.</p>
  59. {% endfor %}
  60. <div class="text-end">
  61. <a href="{% url 'user:token_add' %}" class="btn btn-sm btn-primary my-3">
  62. <span class="mdi mdi-plus-thick" aria-hidden="true"></span>
  63. Add a Token
  64. </a>
  65. </div>
  66. </div>
  67. </div>
  68. {% endblock %}