mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-18 05:29:38 -04:00
Implementation of api key pages.
Revoke page will show the correct key name Show api keys shows a well formatted expiry date Fix tests for api key endpoints.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import os
|
||||
import re
|
||||
|
||||
import dateutil
|
||||
from flask import Flask, session, Markup, escape, render_template
|
||||
from flask._compat import string_types
|
||||
from flask.ext.sqlalchemy import SQLAlchemy
|
||||
@@ -54,6 +55,7 @@ def create_app(config_name, config_overrides=None):
|
||||
application.add_template_filter(placeholders)
|
||||
application.add_template_filter(replace_placeholders)
|
||||
application.add_template_filter(nl2br)
|
||||
application.add_template_filter(format_datetime)
|
||||
|
||||
application.after_request(useful_headers_after_request)
|
||||
register_errorhandlers(application)
|
||||
@@ -134,6 +136,12 @@ def replace_placeholders(template, values):
|
||||
))
|
||||
|
||||
|
||||
def format_datetime(date):
|
||||
date = dateutil.parser.parse(date)
|
||||
native = date.replace(tzinfo=None)
|
||||
return native.strftime('%A %d %B %Y at %H:%M')
|
||||
|
||||
|
||||
# https://www.owasp.org/index.php/List_of_useful_HTTP_headers
|
||||
def useful_headers_after_request(response):
|
||||
response.headers.add('X-Frame-Options', 'deny')
|
||||
|
||||
@@ -36,18 +36,17 @@ def create_api_key(service_id):
|
||||
)
|
||||
|
||||
|
||||
@main.route("/services/<int:service_id>/api-keys/show")
|
||||
@login_required
|
||||
def show_api_key(service_id):
|
||||
return render_template('views/api-keys/show.html', service_id=service_id)
|
||||
|
||||
|
||||
@main.route("/services/<int:service_id>/api-keys/revoke/<int:key_id>", methods=['GET', 'POST'])
|
||||
@login_required
|
||||
def revoke_api_key(service_id, key_id):
|
||||
key_name = api_key_api_client.get_api_keys(service_id=service_id, key_id=key_id)['apiKeys'][0]['name']
|
||||
if request.method == 'GET':
|
||||
return render_template('views/api-keys/revoke.html', service_id=service_id)
|
||||
return render_template(
|
||||
'views/api-keys/revoke.html',
|
||||
service_id=service_id,
|
||||
key_name=key_name
|
||||
)
|
||||
elif request.method == 'POST':
|
||||
api_key_api_client.revoke_api_key(service_id=service_id, key_id=key_id)
|
||||
flash('‘Test key 1’ was revoked')
|
||||
flash('‘{}’ was revoked'.format(key_name))
|
||||
return redirect(url_for('.api_keys', service_id=service_id))
|
||||
|
||||
@@ -12,8 +12,11 @@ class ApiKeyApiClient(BaseAPIClient):
|
||||
self.client_id = app.config['ADMIN_CLIENT_USER_NAME']
|
||||
self.secret = app.config['ADMIN_CLIENT_SECRET']
|
||||
|
||||
def get_api_keys(self, service_id, *params):
|
||||
return self.get(url='/service/{}/api-keys'.format(service_id))
|
||||
def get_api_keys(self, service_id, key_id=None, *params):
|
||||
if key_id:
|
||||
return self.get(url='/service/{}/api-keys/{}'.format(service_id, key_id))
|
||||
else:
|
||||
return self.get(url='/service/{}/api-keys'.format(service_id))
|
||||
|
||||
def create_api_key(self, service_id, key_name, *params):
|
||||
data = {"name": key_name}
|
||||
@@ -21,4 +24,4 @@ class ApiKeyApiClient(BaseAPIClient):
|
||||
return key['data']
|
||||
|
||||
def revoke_api_key(self, service_id, key_id, *params):
|
||||
return self.post(url='/service/{0}/api-key/revoke/{1}'.format(service_id, key_id), data=None)
|
||||
return self.post(url='/service/{0}/api-key/revoke/{1}'.format(service_id, key_id), data=None)
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
{% endcall %}
|
||||
{% if item.expiry_date %}
|
||||
{% call field(align='right', status='default') %}
|
||||
Revoked {{ item.expiry_date }}
|
||||
Revoked {{ item.expiry_date|format_datetime }}
|
||||
{% endcall %}
|
||||
{% else %}
|
||||
{% call field(align='right', status='error') %}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
</h1>
|
||||
|
||||
<p>
|
||||
‘Test key 1’ will no longer let you connect to GOV.UK Notify.
|
||||
‘{{ key_name }}’ will no longer let you connect to GOV.UK Notify.
|
||||
</p>
|
||||
<p>
|
||||
You can’t undo this.
|
||||
|
||||
Reference in New Issue
Block a user