* feat: add password reset for usermanager
- add a reset_key to account table
- add ?reset_key= GET arguments to index.html and show reset form if provided
- superuser can generate and copy reset url with key to share
future ideas:
- could add send forgot password email if user fill out email address
* feat: simplify reset key
* test: use reset key
* test: add more tests
* test: reset passwords do not match
* test: `reset_password_auth_threshold_expired`
---------
Co-authored-by: Vlad Stan <stan.v.vlad@gmail.com>
* update packages for vue3
* fix make bundle and make checkbundle to include bundle-components
* add lnbits/static/bundle-components.js
---------
Co-authored-by: Pavol Rusnak <pavol@rusnak.io>
* Updates to user manager chart to add axis label, bubble radius depending on balance and bubble labels with wallet info
* Fixed bg colour missing on toggle admin on user manager table
* feat: add baseurl to admin ui settings
server tab with a hint that it is currently not used.
i ran into an issue developing an extension where i needed to know the
url inside a task, where i cannot pass the `Request` object.
so i depend on `settings.lnbits_baseurl` there
* feat: vue components lnbits-dynamic-fields validation
- add validation to fields if require = true
- add type hidden field (can be useful for create/update dialog with
passing item_id into update hidden field)
* feat: log with `console.error` on `notifyApiError`
usually why have code like that
```
getAudit() {
LNbits.api
.request('GET', '/admin/api/v1/audit',
this.g.user.wallets[0].adminkey)
.then(response => {
this.auditData = response.data
xonst myerror = isSwallowed()
})
.catch(function (error) {
LNbits.utils.notifyApiError(error)
})
},
```
which if you make a mistake hides your error. logging console.error here
again makes it easier to see what is happening while developing and
doesnt hurt for the user aswell
* chore: bundle
* fixup!
---------
Co-authored-by: Arc <33088785+arcbtc@users.noreply.github.com>
* feat: add generic lnurl error response handler
this is used multiple times in extensions to safeguard `views_lnurl.py`
endpoint to not return a wrong lnurl error response.
you use it by just setting following on your lnurl router/view
```
withdraw_ext_lnurl = APIRouter(prefix="/api/v1/lnurl")
withdraw_ext_lnurl.route_class = LNURLErrorResponseHandler
```