Owen Leonard
536f860038
This patch updates the markup on the patron API keys page so that it uses standard classes for dialogs and page sections. To test you must have RESTOAuth2ClientCredentials enabled. - Apply the patch and locate a patron record. - From their checkout or detail page, choose More -> Manage API keys - Click "Generate a new client id/secret pair" - Enter a description and click Save. - You should see a message in a standard message-style dialog, "Make sure to copy your API secret now. You won’t be able to see it again!" - The API key information should be displayed in a .page-section div. - The table of existing keys should be displayed in a .page-section div. Signed-off-by: Matt Blenkinsop <matt.blenkinsop@ptfs-europe.com> Signed-off-by: David Cook <dcook@prosentient.com.au> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
155 lines
7.6 KiB
Text
155 lines
7.6 KiB
Text
[% USE raw %]
|
||
[% USE Koha %]
|
||
[% USE Asset %]
|
||
[% SET footerjs = 1 %]
|
||
[% INCLUDE 'doc-head-open.inc' %]
|
||
<title>API Keys › Patrons › Koha</title>
|
||
[% INCLUDE 'doc-head-close.inc' %]
|
||
</head>
|
||
<body id="pat_apikeys" class="pat">
|
||
[% WRAPPER 'header.inc' %]
|
||
[% INCLUDE 'patron-search-header.inc' %]
|
||
[% END %]
|
||
|
||
[% WRAPPER 'sub-header.inc' %]
|
||
[% WRAPPER breadcrumbs %]
|
||
[% WRAPPER breadcrumb_item %]
|
||
<a href="/cgi-bin/koha/members/members-home.pl">Patrons</a>
|
||
[% END %]
|
||
[% WRAPPER breadcrumb_item %]
|
||
<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% patron.borrowernumber | uri %]">[% INCLUDE 'patron-title.inc' %]</a>
|
||
[% END %]
|
||
[% WRAPPER breadcrumb_item bc_active= 1 %]
|
||
<span>API keys</span>
|
||
[% END %]
|
||
[% END #/ WRAPPER breadcrumbs %]
|
||
[% END #/ WRAPPER sub-header.inc %]
|
||
|
||
<div class="main container-fluid">
|
||
<div class="row">
|
||
<div class="col-sm-10 col-sm-push-2">
|
||
<main>
|
||
|
||
[% INCLUDE 'members-toolbar.inc' %]
|
||
|
||
<h1>API keys for [% INCLUDE 'patron-title.inc' %]</h1>
|
||
|
||
[% IF fresh_api_key %]
|
||
[%# A fresh api key was generated, display the secret, only once %]
|
||
<div class="dialog message">Make sure to copy your API secret now. You won’t be able to see it again!</div>
|
||
<div class="page-section rows">
|
||
<ol>
|
||
<li>
|
||
<span class="label">Description: </span>
|
||
[% fresh_api_key.description | html %]
|
||
</li>
|
||
<li>
|
||
<span class="label">Client ID: </span>
|
||
[% fresh_api_key.client_id | html %]
|
||
</li>
|
||
<li>
|
||
<span class="label">Secret: </span>
|
||
[% fresh_api_key.plain_text_secret | html %]
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
[% END %]
|
||
|
||
<form id="add-api-key" action="/cgi-bin/koha/members/apikeys.pl" method="post" style="display:none">
|
||
<input type="hidden" name="patron_id" value="[% patron.id | html %]" />
|
||
<input type="hidden" name="csrf_token" value="[% csrf_token | html %]" />
|
||
<input type="hidden" name="op" value="generate" />
|
||
<fieldset class="brief">
|
||
<legend>Generate new client id/secret pair</legend>
|
||
<ol>
|
||
<li>
|
||
<label for="description">Description: </label>
|
||
<input type="text" name="description" />
|
||
<input type="submit" class="btn btn-primary" value="Save" />
|
||
<a href="#" class="cancel toggle_element" data-element="#add-api-key">Cancel</a>
|
||
</li>
|
||
</ol>
|
||
</fieldset>
|
||
</form>
|
||
|
||
[% IF api_keys.count %]
|
||
<div class="page-section" id="keys">
|
||
<p>
|
||
<button class="btn btn-default toggle_element" type="submit" id="show-api-form" data-element="#add-api-key"><i class="fa fa-plus"></i> Generate a new client id/key pair</button>
|
||
</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Description</th>
|
||
<th>Client ID</th>
|
||
<th>Active</th>
|
||
<th class="noExport">Actions</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
[% FOREACH key IN api_keys %]
|
||
<tr>
|
||
<td>[% key.description | html %]</td>
|
||
<td>[% key.client_id | html %]</td>
|
||
<td>[% IF key.active %]Yes[% ELSE %]No[% END %]</td>
|
||
<td>
|
||
<form action="/cgi-bin/koha/members/apikeys.pl" method="post">
|
||
<input type="hidden" name="patron_id" value="[% patron.id | html %]" />
|
||
<input type="hidden" name="key" value="[% key.id | html %]" />
|
||
<input type="hidden" name="csrf_token" value="[% csrf_token | html %]" />
|
||
<input type="hidden" name="op" value="delete" />
|
||
<button class="btn btn-default btn-xs delete" type="submit"><i class="fa fa-trash"></i> Delete</button>
|
||
</form>
|
||
<form action="/cgi-bin/koha/members/apikeys.pl" method="post">
|
||
<input type="hidden" name="patron_id" value="[% patron.id | html %]" />
|
||
<input type="hidden" name="key" value="[% key.id | html %]" />
|
||
<input type="hidden" name="csrf_token" value="[% csrf_token | html %]" />
|
||
[% IF key.active %]
|
||
<input type="hidden" name="op" value="revoke" />
|
||
<button class="btn btn-default btn-xs" type="submit"><i class="fa fa-remove"></i> Revoke</button>
|
||
[% ELSE %]
|
||
<input type="hidden" name="op" value="activate" />
|
||
<button class="btn btn-default btn-xs" type="submit"><i class="fa fa-play"></i> Activate</button>
|
||
[% END %]
|
||
</form>
|
||
</td>
|
||
</tr>
|
||
[% END %]
|
||
</tbody>
|
||
</table>
|
||
</div> <!-- /#keys.page-section -->
|
||
[% ELSE %]
|
||
<div class="dialog message">
|
||
<p>No keys defined for the current patron.</p>
|
||
<p>
|
||
<a href="#" class="btn btn-default toggle_element" data-element="#add-api-key" id="show-api-form">
|
||
<i class="fa fa-plus"></i>
|
||
<span>Generate a new client id/secret pair</span>
|
||
</a>
|
||
<p>
|
||
</div>
|
||
[% END # /IF api_keys.count %]
|
||
</main>
|
||
</div> <!-- /.col-sm-10.col-sm-push-2 -->
|
||
|
||
<div class="col-sm-2 col-sm-pull-10">
|
||
<aside>
|
||
[% INCLUDE 'circ-menu.inc' %]
|
||
</aside>
|
||
</div> <!-- /.col-sm-2.col-sm-pull-10 -->
|
||
</div> <!-- /.row -->
|
||
|
||
|
||
[% MACRO jsinclude BLOCK %]
|
||
[% INCLUDE 'str/members-menu.inc' %]
|
||
[% Asset.js("js/members-menu.js") | $raw %]
|
||
<script>
|
||
$(document).ready(function(){
|
||
$(".delete").on("click", function(e){
|
||
return confirmDelete(_("Are you sure you want to delete this key?"));
|
||
});
|
||
});
|
||
</script>
|
||
[% END %]
|
||
|
||
[% INCLUDE 'intranet-bottom.inc' %]
|