refactor: use normal update
This commit is contained in:
@@ -61,9 +61,7 @@ from .users import (
|
|||||||
get_user,
|
get_user,
|
||||||
get_user_access_control_lists,
|
get_user_access_control_lists,
|
||||||
get_user_from_account,
|
get_user_from_account,
|
||||||
is_account_activated,
|
|
||||||
update_account,
|
update_account,
|
||||||
update_account_activation,
|
|
||||||
)
|
)
|
||||||
from .wallets import (
|
from .wallets import (
|
||||||
create_wallet,
|
create_wallet,
|
||||||
@@ -146,13 +144,11 @@ __all__ = [
|
|||||||
"get_wallets",
|
"get_wallets",
|
||||||
"get_webpush_subscription",
|
"get_webpush_subscription",
|
||||||
"get_webpush_subscriptions_for_user",
|
"get_webpush_subscriptions_for_user",
|
||||||
"is_account_activated",
|
|
||||||
"is_internal_status_success",
|
"is_internal_status_success",
|
||||||
"mark_webhook_sent",
|
"mark_webhook_sent",
|
||||||
"remove_deleted_wallets",
|
"remove_deleted_wallets",
|
||||||
"reset_core_settings",
|
"reset_core_settings",
|
||||||
"update_account",
|
"update_account",
|
||||||
"update_account_activation",
|
|
||||||
"update_admin_settings",
|
"update_admin_settings",
|
||||||
"update_installed_extension",
|
"update_installed_extension",
|
||||||
"update_installed_extension_state",
|
"update_installed_extension_state",
|
||||||
|
|||||||
@@ -181,6 +181,7 @@ class AccountId(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
class Account(AccountId):
|
class Account(AccountId):
|
||||||
|
activated: bool = True
|
||||||
external_id: str | None = None # for external account linking
|
external_id: str | None = None # for external account linking
|
||||||
username: str | None = None
|
username: str | None = None
|
||||||
password_hash: str | None = None
|
password_hash: str | None = None
|
||||||
@@ -241,7 +242,7 @@ class Account(AccountId):
|
|||||||
|
|
||||||
|
|
||||||
class AccountOverview(Account):
|
class AccountOverview(Account):
|
||||||
activated: bool
|
activated: bool = True
|
||||||
transaction_count: int | None = 0
|
transaction_count: int | None = 0
|
||||||
wallet_count: int | None = 0
|
wallet_count: int | None = 0
|
||||||
balance_msat: int | None = 0
|
balance_msat: int | None = 0
|
||||||
@@ -277,6 +278,7 @@ class AccountFilters(FilterModel):
|
|||||||
|
|
||||||
class User(BaseModel):
|
class User(BaseModel):
|
||||||
id: str
|
id: str
|
||||||
|
activated: bool = True
|
||||||
created_at: datetime
|
created_at: datetime
|
||||||
updated_at: datetime
|
updated_at: datetime
|
||||||
email: str | None = None
|
email: str | None = None
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ from ..crud import (
|
|||||||
get_account_by_username,
|
get_account_by_username,
|
||||||
get_account_by_username_or_email,
|
get_account_by_username_or_email,
|
||||||
get_user_from_account,
|
get_user_from_account,
|
||||||
is_account_activated,
|
|
||||||
update_account,
|
update_account,
|
||||||
)
|
)
|
||||||
from ..models import (
|
from ..models import (
|
||||||
@@ -88,8 +87,7 @@ async def login(data: LoginUsernamePassword) -> JSONResponse:
|
|||||||
if not account or not account.verify_password(data.password):
|
if not account or not account.verify_password(data.password):
|
||||||
raise HTTPException(HTTPStatus.UNAUTHORIZED, "Invalid credentials.")
|
raise HTTPException(HTTPStatus.UNAUTHORIZED, "Invalid credentials.")
|
||||||
|
|
||||||
is_activated = await is_account_activated(account.id)
|
if not account.activated:
|
||||||
if is_activated is False:
|
|
||||||
raise HTTPException(HTTPStatus.FORBIDDEN, "Account is not activated.")
|
raise HTTPException(HTTPStatus.FORBIDDEN, "Account is not activated.")
|
||||||
return _auth_success_response(account.username, account.id, account.email)
|
return _auth_success_response(account.username, account.id, account.email)
|
||||||
|
|
||||||
|
|||||||
@@ -17,11 +17,10 @@ from lnbits.core.crud import (
|
|||||||
get_user,
|
get_user,
|
||||||
get_wallet,
|
get_wallet,
|
||||||
get_wallets,
|
get_wallets,
|
||||||
is_account_activated,
|
|
||||||
update_account_activation,
|
|
||||||
update_admin_settings,
|
update_admin_settings,
|
||||||
update_wallet,
|
update_wallet,
|
||||||
)
|
)
|
||||||
|
from lnbits.core.crud.users import get_account
|
||||||
from lnbits.core.crud.wallets import delete_wallet_by_id
|
from lnbits.core.crud.wallets import delete_wallet_by_id
|
||||||
from lnbits.core.models import (
|
from lnbits.core.models import (
|
||||||
AccountFilters,
|
AccountFilters,
|
||||||
@@ -227,14 +226,14 @@ async def api_users_toggle_admin(user_id: str) -> SimpleStatus:
|
|||||||
name="Activate or deactivate a user",
|
name="Activate or deactivate a user",
|
||||||
)
|
)
|
||||||
async def api_users_toggle_activated(
|
async def api_users_toggle_activated(
|
||||||
user_id: str, account: Account = Depends(check_admin)
|
user_id: str, admin_account: Account = Depends(check_admin)
|
||||||
) -> SimpleStatus:
|
) -> SimpleStatus:
|
||||||
if user_id == settings.super_user:
|
if user_id == settings.super_user:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=HTTPStatus.BAD_REQUEST,
|
status_code=HTTPStatus.BAD_REQUEST,
|
||||||
detail="Cannot deactivate super user.",
|
detail="Cannot deactivate super user.",
|
||||||
)
|
)
|
||||||
if user_id == account.id:
|
if user_id == admin_account.id:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=HTTPStatus.BAD_REQUEST,
|
status_code=HTTPStatus.BAD_REQUEST,
|
||||||
detail="You cannot deactivate yourself.",
|
detail="You cannot deactivate yourself.",
|
||||||
@@ -243,18 +242,18 @@ async def api_users_toggle_activated(
|
|||||||
if settings.is_admin_user(user_id):
|
if settings.is_admin_user(user_id):
|
||||||
settings.lnbits_admin_users.remove(user_id)
|
settings.lnbits_admin_users.remove(user_id)
|
||||||
|
|
||||||
is_activated = await is_account_activated(user_id)
|
user_account = await get_account(user_id)
|
||||||
|
if not user_account:
|
||||||
if is_activated is None:
|
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=HTTPStatus.NOT_FOUND,
|
status_code=HTTPStatus.NOT_FOUND,
|
||||||
detail="User not found.",
|
detail="User not found.",
|
||||||
)
|
)
|
||||||
await update_account_activation(user_id, not is_activated)
|
user_account.activated = not user_account.activated
|
||||||
|
await update_user_account(user_account)
|
||||||
|
|
||||||
return SimpleStatus(
|
return SimpleStatus(
|
||||||
success=True,
|
success=True,
|
||||||
message=f"User {'activated' if not is_activated else 'deactivated'}.",
|
message=f"User {'activated' if user_account.activated else 'deactivated'}.",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -637,6 +637,7 @@ async def test_user_activation(
|
|||||||
payload: dict = jwt.decode(access_token, settings.auth_secret_key, ["HS256"])
|
payload: dict = jwt.decode(access_token, settings.auth_secret_key, ["HS256"])
|
||||||
access_token_payload = AccessTokenPayload(**payload)
|
access_token_payload = AccessTokenPayload(**payload)
|
||||||
user_id = access_token_payload.usr
|
user_id = access_token_payload.usr
|
||||||
|
assert user_id is not None
|
||||||
|
|
||||||
# Login works
|
# Login works
|
||||||
response = await http_client.post(
|
response = await http_client.post(
|
||||||
|
|||||||
Reference in New Issue
Block a user