mirror of
https://github.com/lnbits/lnbits-legend.git
synced 2024-11-19 01:43:42 +01:00
c9093715b7
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>
196 lines
4.1 KiB
TOML
196 lines
4.1 KiB
TOML
[tool.poetry]
|
|
name = "lnbits"
|
|
version = "0.11.3"
|
|
description = "LNbits, free and open-source Lightning wallet and accounts system."
|
|
authors = ["Alan Bits <alan@lnbits.com>"]
|
|
|
|
[tool.poetry.dependencies]
|
|
python = "^3.10 | ^3.9"
|
|
bech32 = "1.2.0"
|
|
click = "8.1.7"
|
|
ecdsa = "0.18.0"
|
|
fastapi = "0.103.1"
|
|
httpx = "0.25.0"
|
|
jinja2 = "3.0.1"
|
|
lnurl = "0.4.2"
|
|
psycopg2-binary = "2.9.7"
|
|
pydantic = "1.10.9"
|
|
pyqrcode = "1.2.1"
|
|
shortuuid = "1.0.11"
|
|
sqlalchemy = "1.3.24"
|
|
sqlalchemy-aio = "0.17.0"
|
|
sse-starlette = "1.6.5"
|
|
typing-extensions = "4.8.0"
|
|
uvicorn = "0.23.2"
|
|
uvloop = "0.17.0"
|
|
websockets = "11.0.3"
|
|
loguru = "0.7.2"
|
|
grpcio = "1.58.0"
|
|
protobuf = "4.24.3"
|
|
pyln-client = "23.8"
|
|
pywebpush = "1.14.0"
|
|
slowapi = "0.1.8"
|
|
websocket-client = "1.6.3"
|
|
pycryptodomex = "3.19.0"
|
|
packaging = "23.1"
|
|
bolt11 = "2.0.5"
|
|
# needed for new login methods: username-password, google-auth, github-auth
|
|
bcrypt = "^4.1.1"
|
|
python-jose = "^3.3.0"
|
|
passlib = "^1.7.4"
|
|
itsdangerous = "^2.1.2"
|
|
fastapi-sso = "^0.9.1"
|
|
# needed for boltz, lnurldevice, watchonly extensions
|
|
embit = "0.7.0"
|
|
# needed for cashu, lnurlp, nostrclient, nostrmarket, nostrrelay extensions
|
|
secp256k1 = "0.14.0"
|
|
# keep for backwards compatibility with lnurlp and cashu
|
|
environs = "9.5.0"
|
|
# needed for scheduler extension
|
|
python-crontab = "3.0.0"
|
|
# needed for liquid support boltz
|
|
wallycore = {version = "^1.0.0", optional = true}
|
|
|
|
[tool.poetry.extras]
|
|
liquid = ["wallycore"]
|
|
|
|
[tool.poetry.group.dev.dependencies]
|
|
black = "^23.7.0"
|
|
pytest-asyncio = "^0.21.0"
|
|
pytest = "^7.3.2"
|
|
pytest-cov = "^4.1.0"
|
|
mypy = "^1.5.1"
|
|
types-protobuf = "^4.24.0.2"
|
|
pre-commit = "^3.2.2"
|
|
openapi-spec-validator = "^0.6.0"
|
|
ruff = "^0.0.291"
|
|
# not our dependency but needed indirectly by openapi-spec-validator
|
|
# we want to use 0.10.3 because newer versions are broken on nix
|
|
rpds-py = "0.10.3"
|
|
types-passlib = "^1.7.7.13"
|
|
types-python-jose = "^3.3.4.8"
|
|
|
|
[build-system]
|
|
requires = ["poetry-core>=1.0.0"]
|
|
build-backend = "poetry.core.masonry.api"
|
|
|
|
[tool.poetry.scripts]
|
|
lnbits = "lnbits.server:main"
|
|
lnbits-cli = "lnbits.commands:main"
|
|
|
|
[tool.pyright]
|
|
include = [
|
|
"lnbits"
|
|
]
|
|
exclude = [
|
|
"lnbits/wallets/lnd_grpc_files",
|
|
"lnbits/extensions",
|
|
"lnbits/upgrades",
|
|
]
|
|
|
|
[tool.mypy]
|
|
files = "lnbits"
|
|
exclude = [
|
|
"^lnbits/wallets/lnd_grpc_files",
|
|
"^lnbits/extensions",
|
|
"^lnbits/upgrades",
|
|
]
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = [
|
|
"embit.*",
|
|
"secp256k1.*",
|
|
"uvicorn.*",
|
|
"sqlalchemy.*",
|
|
"sqlalchemy_aio.*",
|
|
"websocket.*",
|
|
"websockets.*",
|
|
"pyqrcode.*",
|
|
"shortuuid.*",
|
|
"grpc.*",
|
|
"lnurl.*",
|
|
"bolt11.*",
|
|
"bitstring.*",
|
|
"ecdsa.*",
|
|
"psycopg2.*",
|
|
"pyngrok.*",
|
|
"pyln.client.*",
|
|
"py_vapid.*",
|
|
"pywebpush.*",
|
|
"fastapi_sso.sso.*",
|
|
]
|
|
ignore_missing_imports = "True"
|
|
|
|
[tool.pytest.ini_options]
|
|
log_cli = false
|
|
addopts = "--durations=1 -s --cov=lnbits --cov-report=xml"
|
|
testpaths = [
|
|
"tests"
|
|
]
|
|
|
|
[tool.black]
|
|
line-length = 88
|
|
# use upcoming new features
|
|
# preview = true
|
|
extend-exclude = """(
|
|
lnbits/static
|
|
| lnbits/extensions
|
|
| lnbits/upgrades
|
|
| lnbits/wallets/lnd_grpc_files
|
|
)"""
|
|
|
|
[tool.ruff]
|
|
# Same as Black. + 10% rule of black
|
|
line-length = 88
|
|
|
|
# Enable pycodestyle (`E`) and Pyflakes (`F`) codes by default.
|
|
# (`I`) is for `isort`.
|
|
select = ["E", "F", "I"]
|
|
ignore = []
|
|
|
|
# Allow autofix for all enabled rules (when `--fix`) is provided.
|
|
fixable = ["ALL"]
|
|
unfixable = []
|
|
|
|
# Exclude a variety of commonly ignored directories.
|
|
exclude = [
|
|
"lnbits/static",
|
|
"lnbits/extensions",
|
|
"lnbits/wallets/lnd_grpc_files",
|
|
".bzr",
|
|
".direnv",
|
|
".eggs",
|
|
".git",
|
|
".git-rewrite",
|
|
".hg",
|
|
".mypy_cache",
|
|
".nox",
|
|
".pants.d",
|
|
".pytype",
|
|
".ruff_cache",
|
|
".svn",
|
|
".tox",
|
|
".venv",
|
|
"__pypackages__",
|
|
"_build",
|
|
"buck-out",
|
|
"build",
|
|
"dist",
|
|
"node_modules",
|
|
"venv",
|
|
]
|
|
|
|
# Allow unused variables when underscore-prefixed.
|
|
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
|
|
|
|
# Assume Python
|
|
# target-version = "py39"
|
|
|
|
# Ignore unused imports in __init__.py files.
|
|
[tool.ruff.extend-per-file-ignores]
|
|
"__init__.py" = ["F401", "F403"]
|
|
|
|
[tool.ruff.mccabe]
|
|
# Unlike Flake8, default to a complexity level of 10.
|
|
max-complexity = 10
|