Let admin user delete their security key

Show confiem delete dialogue first to confirm if key should be deleted.
This commit is contained in:
Pea Tyczynska
2021-05-25 11:40:42 +01:00
parent 00c022eba5
commit a946ad6ec2
5 changed files with 116 additions and 3 deletions
+25 -1
View File
@@ -3,8 +3,10 @@ import json
from flask import (
abort,
current_app,
flash,
redirect,
render_template,
request,
session,
url_for,
)
@@ -240,7 +242,16 @@ def user_profile_security_keys():
)
@main.route("/user-profile/security-keys/<uuid:key_id>/manage", methods=['GET', 'POST'])
@main.route(
"/user-profile/security-keys/<uuid:key_id>/manage",
methods=['GET', 'POST'],
endpoint="user_profile_manage_security_key"
)
@main.route(
"/user-profile/security-keys/<uuid:key_id>/delete",
methods=['GET'],
endpoint="user_profile_confirm_delete_security_key"
)
@user_is_platform_admin
def user_profile_manage_security_key(key_id):
security_keys = user_api_client.get_webauthn_credentials_for_user(current_user.id)
@@ -259,8 +270,21 @@ def user_profile_manage_security_key(key_id):
)
return redirect(url_for('.user_profile_security_keys'))
if (request.endpoint == "main.user_profile_confirm_delete_security_key"):
flash("Are you sure you want to delete this security key?", 'delete')
return render_template(
'views/user-profile/manage-security-key.html',
security_key=security_key,
form=form
)
@main.route("/user-profile/security-keys/<uuid:key_id>/delete", methods=['POST'])
@user_is_platform_admin
def user_profile_delete_security_key(key_id):
user_api_client.delete_webauthn_credential_for_user(
user_id=current_user.id,
credential_id=key_id
)
return redirect(url_for('.user_profile_security_keys'))
+5
View File
@@ -206,5 +206,10 @@ class UserApiClient(NotifyAdminAPIClient):
return self.post(endpoint, data={"name": new_name_for_credential})
def delete_webauthn_credential_for_user(self, *, user_id, credential_id):
endpoint = f'/user/{user_id}/webauthn/{credential_id}'
return self.delete(endpoint)
user_api_client = UserApiClient()
@@ -20,7 +20,12 @@
<div class="govuk-grid-column-three-quarters">
{% call form_wrapper(autocomplete=True) %}
{{ form.name_of_key }}
{{ page_footer('Save') }}
{{ page_footer(
'Save',
delete_link=url_for(
'.user_profile_confirm_delete_security_key', key_id=security_key.id),
delete_link_text='Delete'
) }}
{% endcall %}
</div>
</div>