LNbits, free and open-source lightning-network wallet/accounts system.
Go to file
Vlad Stan c9093715b7
[FEAT] Auth, Login, OAuth, create account with username and password #1653 (#2092)
no more superuser url!
delete cookie on logout
add usr login feature
fix node management
* Cleaned up login form
* CreateUser
* information leak
* cleaner parsing usr from url
* rename decorators
* login secret
* fix: add back `superuser` command
* chore: remove `fastapi_login`
* fix: extract `token` from cookie
* chore: prepare to extract user
* feat: check user
* chore: code clean-up
* feat: happy flow working
* fix: usr only login
* fix: user already logged in
* feat: check user in URL
* fix: verify password at DB level
* fix: do not show `Login` controls if user already logged in
* fix: separate login endpoints
* fix: remove `usr` param
* chore: update error message
* refactor: register method
* feat: logout
* chore: move comments
* fix: remove user auth check from API
* fix: user check unnecessary
* fix: redirect after logout
* chore: remove garbage files
* refactor: simplify constructor call
* fix: hide user icon if not authorized
* refactor: rename auth env vars
* chore: code clean-up
* fix: add types for `python-jose`
* fix: add types for `passlib`
* fix: return type
* feat: set default value for `auth_secret_key` to hash of super user
* fix: default value
* feat: rework login page
* feat: ui polishing
* feat: google auth
* feat: add google auth
* chore: remove `authlib` dependency
* refactor: extract `_handle_sso_login` method
* refactor: convert methods to `properties`
* refactor: rename: `user_api` to `auth_api`
* feat: store user info from SSO
* chore: re-arange the buttons
* feat: conditional rendering of login options
* feat: correctly render buttons
* fix: re-add `Claim Bitcoin` from the main page
* fix: create wallet must send new user
* fix:  no `username-password` auth method
* refactor: rename auth method
* fix: do not force API level UUID4 validation
* feat: add validation for username
* feat: add account page
* feat: update account
* feat: add `has_password` for user
* fix: email not editable
* feat: validate email for existing account
* fix: register check
* feat: reset password
* chore: code clean-up
* feat: handle token expired
* fix: only redirect if `text/html`
* refactor: remove `OAuth2PasswordRequestForm`
* chore: remove `python-multipart` dependency
* fix: handle no headers for exception
* feat: add back button on error screen
* feat: show user profile image
* fix: check account creation permissions
* fix: auth for internal api call
* chore: add some docs
* chore: code clean-up
* fix: rebase stuff
* fix: default value types
* refactor: customize error messages
* fix: move types libs to dev dependencies
* doc: specify the `Authorization callback URL`
* fix: pass missing superuser id in node ui test
* fix: keep usr param on wallet redirect
removing usr param causes an issue if the browser doesnt yet have an access token.
* fix: do not redirect if `wal` query param not present
* fix: add nativeBuildInputs and buildInputs overrides to flake.nix
* bump fastapi-sso to 0.9.0 which fixes some security issues
* refactor: move the `lnbits_admin_extensions` to decorators
* chore: bring package config from `dev`
* chore: re-add dependencies
* chore: re-add cev dependencies
* chore: re-add mypy ignores
* feat: i18n
* refactor: move admin ext check to decorator (fix after rebase)
* fix: label mapping
* fix: re-fetch user after first wallet was created
* fix: unlikely case that `user` is not found
* refactor translations (move '*' to code)
* reorganize deps in pyproject.toml, add comment
* update flake.lock and simplify flake.nix after upstreaming
overrides for fastapi-sso, types-passlib, types-pyasn1, types-python-jose
were upstreamed in https://github.com/nix-community/poetry2nix/pull/1463
* fix: more relaxed email verification (by @prusnak)
* fix: remove `\b` (boundaries) since we re using `fullmatch`
* chore: `make bundle`

---------

Co-authored-by: dni  <office@dnilabs.com>
Co-authored-by: Arc <ben@arc.wales>
Co-authored-by: jackstar12 <jkranawetter05@gmail.com>
Co-authored-by: Pavol Rusnak <pavol@rusnak.io>
2023-12-12 11:38:19 +01:00
.github chore: update lock file and poetry 1.7.0 in CI (#2156) 2023-12-06 10:36:10 +01:00
docs change path to super_user file located in the data directory (#2115) 2023-11-22 17:30:30 +01:00
lnbits [FEAT] Auth, Login, OAuth, create account with username and password #1653 (#2092) 2023-12-12 11:38:19 +01:00
nix add option to pass additional variables 2023-12-11 08:33:16 +01:00
tests [FEAT] Auth, Login, OAuth, create account with username and password #1653 (#2092) 2023-12-12 11:38:19 +01:00
tools add i18n checker and autogenerated AI translations (#2160) 2023-12-12 10:10:51 +00:00
.dockerignore good bye venv (#1569) 2023-03-16 16:45:23 +01:00
.editorconfig add editorconfig config, fix issues (only whitespace changes) (#1958) 2023-09-25 11:06:25 +01:00
.env.example [FEAT] Auth, Login, OAuth, create account with username and password #1653 (#2092) 2023-12-12 11:38:19 +01:00
.gitignore ci: workflow to check bundle files (#2126) 2023-11-28 10:39:21 +01:00
.pre-commit-config.yaml [CHORE] string formatting default length 88 (#1887) 2023-08-24 10:26:09 +01:00
.prettierignore ignore upgrades dir in linters and formatters and precommit (#1783) 2023-06-26 10:38:40 +02:00
.prettierrc FIX: prettier formatting (#1395) 2023-01-23 14:23:30 +01:00
Dockerfile Update poetry to 1.5.1 (#1804) 2023-07-11 12:46:40 +02:00
flake.lock [FEAT] Auth, Login, OAuth, create account with username and password #1653 (#2092) 2023-12-12 11:38:19 +01:00
flake.nix fix: nix build 2023-12-06 12:55:01 +01:00
LICENSE Update LICENSE 2022-01-30 08:27:05 -03:00
Makefile add checkbundle to make check (#2169) 2023-12-12 11:13:58 +01:00
package-lock.json Bump axios from 1.3.4 to 1.6.0 2023-11-13 11:21:29 +01:00
package.json feat: manage extensions navbar (#2121) 2023-11-27 10:40:36 +01:00
poetry.lock [FEAT] Auth, Login, OAuth, create account with username and password #1653 (#2092) 2023-12-12 11:38:19 +01:00
pyproject.toml [FEAT] Auth, Login, OAuth, create account with username and password #1653 (#2092) 2023-12-12 11:38:19 +01:00
README.md docs: small cleanup (#2107) 2023-11-21 22:30:52 +01:00

LNbits BETA

license-badge docs-badge

Lightning network wallet

Free and Open-Source Lightning Wallet Accounts System

(Join us on https://t.me/lnbits)

LNbits is beta, for responsible disclosure of any concerns please contact lnbits@pm.me

Use legend.lnbits.com, or run your own LNbits server!

LNbits is a Python server that sits on top of any funding source. It can be used as:

  • Accounts system to mitigate the risk of exposing applications to your full balance via unique API keys for each wallet
  • Extendable platform for exploring Lightning network functionality via the LNbits extension framework
  • Part of a development stack via LNbits API
  • Fallback wallet for the LNURL scheme
  • Instant wallet for LN demonstrations

LNbits can run on top of any Lightning funding source. It currently supports the following, but more and more are added regularly:

  • LND (REST and gRPC)
  • Core Lightning aka CLN (gRPC, REST and Spark)
  • Eclair
  • LNPay
  • LNbits
  • OpenNode
  • Alby
  • LightningTipBot

See LNbits manual for more detailed documentation about each funding source.

Checkout the LNbits YouTube video series.

LNbits is inspired by all the great work of opennode.com, and in particular lnpay.co. Both work as funding sources for LNbits.

Running LNbits

See the install guide for details on installation and setup.

LNbits as an account system

LNbits is packaged with tools to help manage funds, such as a table of transactions, line chart of spending, export to csv + more to come..

Lightning network wallet

Each wallet also comes with its own API keys, to help partition the exposure of your funding source.

(LNbits M5StackSats available here https://github.com/arcbtc/M5StackSats)

lnurl ATM

LNbits as an LNURL-withdraw fallback

LNURL has a fallback scheme, so if scanned by a regular QR code reader it can default to a URL. LNbits exploits this to generate an instant wallet using the LNURL-withdraw.

lnurl fallback

Using lnbits.com/?lightning="LNURL-withdraw" will trigger a withdraw that builds an LNbits wallet. Example use would be an ATM, which utilizes LNURL, if the user scans the QR with a regular QR code scanner app, they will still be able to access the funds.

lnurl ATM

LNbits as an instant wallet

Wallets can be easily generated and given out to people at events. "Go to this website", has a lot less friction than "Download this app".

lnurl ATM

Tip us

If you like this project send some tip love!