refactor: establish standalone application boundary
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
from backend.features.accounts.service import AccountService
|
||||
|
||||
|
||||
class AccountApplicationMixin:
|
||||
def bind_user(self, user_id: int) -> None:
|
||||
self._request_context.user_id = int(user_id)
|
||||
encrypted = self.database.get_user_credentials(int(user_id))
|
||||
self._request_context.credentials = self.vault.decrypt_json(encrypted) if encrypted else {}
|
||||
self._request_context.access = self.database.user_access(int(user_id)) or {}
|
||||
|
||||
@property
|
||||
def current_user_id(self) -> int:
|
||||
user_id = getattr(self._request_context, "user_id", 0)
|
||||
if not user_id:
|
||||
raise ValueError("当前请求尚未绑定账号。")
|
||||
return int(user_id)
|
||||
|
||||
def membership(self) -> dict[str, Any]:
|
||||
return self.accounts.membership()
|
||||
|
||||
def admin_users(self) -> list[dict[str, Any]]:
|
||||
return self.accounts.admin_users(self._platform_usage_today_for_user)
|
||||
|
||||
def update_membership(self, payload: dict[str, Any]) -> None:
|
||||
self.accounts.update_membership(payload)
|
||||
|
||||
def register_account(self, username: str, password: str) -> dict[str, Any]:
|
||||
return self.accounts.register(username, password)
|
||||
|
||||
def login_account(self, username: str, password: str) -> dict[str, Any]:
|
||||
return self.accounts.login(username, password)
|
||||
|
||||
def change_password(self, current_password: str, new_password: str) -> None:
|
||||
self.accounts.change_password(current_password, new_password)
|
||||
|
||||
def create_account_session(self, user: dict[str, Any]) -> dict[str, Any]:
|
||||
return self.accounts.create_session(user)
|
||||
|
||||
@staticmethod
|
||||
def _validate_account_input(username: str, password: str) -> None:
|
||||
AccountService.validate_input(username, password)
|
||||
|
||||
def save_birth_profile(self, payload: dict[str, Any]) -> dict[str, Any]:
|
||||
return self.accounts.save_birth_profile(payload)
|
||||
|
||||
def stored_birth_profile(self) -> dict[str, str] | None:
|
||||
return self.accounts.stored_birth_profile()
|
||||
|
||||
def account_personal_field(
|
||||
self,
|
||||
current_date: str,
|
||||
current_field: dict[str, Any],
|
||||
public: bool = False,
|
||||
) -> dict[str, Any] | None:
|
||||
return self.accounts.personal_field(current_date, current_field, public)
|
||||
|
||||
@staticmethod
|
||||
def _public_personal_profile(personal: dict[str, Any]) -> dict[str, Any]:
|
||||
return AccountService.public_personal_profile(personal)
|
||||
Reference in New Issue
Block a user