added /delete_key

This commit is contained in:
iou1name 2019-09-26 18:29:39 -04:00
parent 4309d65c85
commit b24061fb05
2 changed files with 43 additions and 16 deletions

View File

@ -312,6 +312,30 @@ async def set_session(request):
return web.json_response(error) return web.json_response(error)
@routes.post(config.url_prefix + '/delete_key', name='delete_key')
@auth.auth_required
async def delete_key(request):
"""Allows a user to delete a security key."""
data = await request.post()
async with request.app['pool'].acquire() as conn:
for key, value in data.items():
key_id = key.replace('fido-', '')
if not key_id:
continue
try:
key_id = int(key_id)
except ValueError:
continue
if value != 'on':
continue
await conn.execute(
"DELETE FROM user_credential "
"WHERE id = $1 AND user_id = $2",
key_id, request['session']['id'])
index_url = request.app.router['index'].url_for()
raise web.HTTPFound(location=index_url)
async def init_app(): async def init_app():
"""Initializes the application.""" """Initializes the application."""
app = web.Application() app = web.Application()

View File

@ -78,6 +78,7 @@
<article style="display: none;"> <article style="display: none;">
<hr> <hr>
{% if fido2_keys %} {% if fido2_keys %}
<form action="{{ request.app.router['delete_key'].url_for() }}" method="POST" enctype="application/x-www-form-urlencoded">
<table id="security_keys"> <table id="security_keys">
<thead> <thead>
<tr> <tr>
@ -94,6 +95,8 @@
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
<input type="submit" value="Delete">
</form>
{% else %} {% else %}
<span>No registered keys.</span> <span>No registered keys.</span>
{% endif %} {% endif %}