From e65082b585c7587913595bf6b38b81ad68e31437 Mon Sep 17 00:00:00 2001 From: Lee Salminen Date: Wed, 21 Dec 2022 14:05:45 -0600 Subject: [PATCH] add self-service pubkey rotation for nip-05 addresses --- lnbits/extensions/nostrnip5/crud.py | 20 +++++ lnbits/extensions/nostrnip5/models.py | 4 + .../nostrnip5/templates/nostrnip5/index.html | 10 +++ .../nostrnip5/templates/nostrnip5/rotate.html | 88 +++++++++++++++++++ .../nostrnip5/templates/nostrnip5/signup.html | 46 +++++++--- lnbits/extensions/nostrnip5/views.py | 29 +++++- lnbits/extensions/nostrnip5/views_api.py | 30 ++++++- 7 files changed, 214 insertions(+), 13 deletions(-) create mode 100644 lnbits/extensions/nostrnip5/templates/nostrnip5/rotate.html diff --git a/lnbits/extensions/nostrnip5/crud.py b/lnbits/extensions/nostrnip5/crud.py index 27dffa98..b7c019f7 100644 --- a/lnbits/extensions/nostrnip5/crud.py +++ b/lnbits/extensions/nostrnip5/crud.py @@ -101,6 +101,26 @@ async def activate_address(domain_id: str, address_id: str) -> Address: return address +async def rotate_address(domain_id: str, address_id: str, pubkey: str) -> Address: + await db.execute( + """ + UPDATE nostrnip5.addresses + SET pubkey = ? + WHERE domain_id = ? + AND id = ? + """, + ( + pubkey, + domain_id, + address_id, + ), + ) + + address = await get_address(domain_id, address_id) + assert address, "Newly updated address couldn't be retrieved" + return address + + async def delete_domain(domain_id) -> bool: await db.execute( """ diff --git a/lnbits/extensions/nostrnip5/models.py b/lnbits/extensions/nostrnip5/models.py index 604b88b1..e02f2909 100644 --- a/lnbits/extensions/nostrnip5/models.py +++ b/lnbits/extensions/nostrnip5/models.py @@ -6,6 +6,10 @@ from fastapi.param_functions import Query from pydantic import BaseModel +class RotateAddressData(BaseModel): + pubkey: str + + class CreateAddressData(BaseModel): domain_id: str local_part: str diff --git a/lnbits/extensions/nostrnip5/templates/nostrnip5/index.html b/lnbits/extensions/nostrnip5/templates/nostrnip5/index.html index 077c16da..3740e0b6 100644 --- a/lnbits/extensions/nostrnip5/templates/nostrnip5/index.html +++ b/lnbits/extensions/nostrnip5/templates/nostrnip5/index.html @@ -118,6 +118,16 @@