FIX: generate LNURL server-side for unique voucher links (#68)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
68ff753cfd
commit
8a20df70fe
5 changed files with 19 additions and 3 deletions
|
|
@ -47,6 +47,11 @@ class WithdrawLink(BaseModel):
|
|||
"Example: lnurlw://${window.location.hostname}/lnurlw/${id}"
|
||||
),
|
||||
)
|
||||
lnurl_url: str | None = Field(
|
||||
default=None,
|
||||
no_database=True,
|
||||
description="The raw LNURL callback URL (use for QR code generation)",
|
||||
)
|
||||
|
||||
@property
|
||||
def is_spent(self) -> bool:
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ window.app = Vue.createApp({
|
|||
const link = _.findWhere(this.withdrawLinks, {id: linkId})
|
||||
this.qrCodeDialog.data = _.clone(link)
|
||||
this.qrCodeDialog.show = true
|
||||
this.activeUrl = `${window.location.origin}/withdraw/api/v1/lnurl/${link.unique_hash}`
|
||||
this.activeUrl = link.lnurl_url
|
||||
},
|
||||
openUpdateDialog(linkId) {
|
||||
let link = _.findWhere(this.withdrawLinks, {id: linkId})
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@
|
|||
data() {
|
||||
return {
|
||||
spent: {{ 'true' if spent else 'false' }},
|
||||
url: `${window.location.origin}/withdraw/api/v1/lnurl/{{ unique_hash }}`,
|
||||
url: '{{ lnurl_url }}',
|
||||
lnurl: '',
|
||||
nfcTagWriting: false
|
||||
}
|
||||
|
|
|
|||
10
views.py
10
views.py
|
|
@ -33,12 +33,20 @@ async def display(request: Request, link_id):
|
|||
status_code=HTTPStatus.NOT_FOUND, detail="Withdraw link does not exist."
|
||||
)
|
||||
|
||||
try:
|
||||
lnurl = create_lnurl(link, request)
|
||||
except ValueError as exc:
|
||||
raise HTTPException(
|
||||
status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
|
||||
detail=str(exc),
|
||||
) from exc
|
||||
|
||||
return withdraw_renderer().TemplateResponse(
|
||||
"withdraw/display.html",
|
||||
{
|
||||
"request": request,
|
||||
"spent": link.is_spent,
|
||||
"unique_hash": link.unique_hash,
|
||||
"lnurl_url": str(lnurl.url),
|
||||
},
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ async def api_links(
|
|||
detail=str(exc),
|
||||
) from exc
|
||||
linkk.lnurl = str(lnurl.bech32)
|
||||
linkk.lnurl_url = str(lnurl.url)
|
||||
|
||||
return links
|
||||
|
||||
|
|
@ -75,6 +76,7 @@ async def api_link_retrieve(
|
|||
detail=str(exc),
|
||||
) from exc
|
||||
link.lnurl = str(lnurl.bech32)
|
||||
link.lnurl_url = str(lnurl.url)
|
||||
return link
|
||||
|
||||
|
||||
|
|
@ -166,6 +168,7 @@ async def api_link_create_or_update(
|
|||
) from exc
|
||||
|
||||
link.lnurl = str(lnurl.bech32)
|
||||
link.lnurl_url = str(lnurl.url)
|
||||
|
||||
return link
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue