diff --git a/astrbot/cli/commands/cmd_conf.py b/astrbot/cli/commands/cmd_conf.py index 40db9f206..def0738a4 100644 --- a/astrbot/cli/commands/cmd_conf.py +++ b/astrbot/cli/commands/cmd_conf.py @@ -16,28 +16,15 @@ import zoneinfo from collections.abc import Callable from typing import Any +import argon2.exceptions as argon2_exceptions import click - -try: - from argon2 import PasswordHasher - from argon2 import exceptions as argon2_exceptions - - _HAS_ARGON2 = True -except Exception: - PasswordHasher = None # type: ignore[assignment] - argon2_exceptions = None # type: ignore[assignment] - _HAS_ARGON2 = False +from argon2 import PasswordHasher from astrbot.core.config.default import DEFAULT_CONFIG from astrbot.core.utils.astrbot_path import astrbot_paths -_PASSWORD_HASHER: Any = None -if _HAS_ARGON2 and PasswordHasher is not None: - try: - _PASSWORD_HASHER = PasswordHasher() - except Exception: - _PASSWORD_HASHER = None - _HAS_ARGON2 = False +_PASSWORD_HASHER = PasswordHasher() + PBKDF2_SALT = b"astrbot-dashboard" PBKDF2_ITER = 200_000 @@ -53,7 +40,7 @@ def hash_dashboard_password_secure(value: str) -> str: Stored format: $argon2id$... (if Argon2 available) or pbkdf2_sha256 fallback. """ - if _HAS_ARGON2 and _PASSWORD_HASHER is not None: + if _PASSWORD_HASHER is not None: try: return _PASSWORD_HASHER.hash(value) except Exception as e: @@ -77,8 +64,6 @@ def verify_dashboard_password(value: str, stored_hash: str) -> bool: return False if stored_hash.startswith("$argon2"): - if not _HAS_ARGON2 or _PASSWORD_HASHER is None: - return False try: return _PASSWORD_HASHER.verify(stored_hash, value) except argon2_exceptions.VerifyMismatchError: @@ -360,13 +345,13 @@ def get_config(key: str | None = None) -> None: pass -@conf.command(name="password") -@click.option("-u", "--username", type=str, help="Update dashboard username as well") +@conf.command(name="admin") +@click.option("-u", "--username", type=str, help="Update admain username as well") @click.option( "-p", "--password", type=str, - help="Set dashboard password directly without interactive prompt", + help="Set admain password directly without interactive prompt", ) def set_dashboard_password(username: str | None, password: str | None) -> None: """ diff --git a/astrbot/cli/commands/cmd_init.py b/astrbot/cli/commands/cmd_init.py index 6a4165e7f..912e322bd 100644 --- a/astrbot/cli/commands/cmd_init.py +++ b/astrbot/cli/commands/cmd_init.py @@ -106,7 +106,7 @@ async def initialize_astrbot( if admin_password is not None: raise click.ClickException( "--admin-password is no longer supported during init. " - "Run 'astrbot conf password' after initialization." + "Run 'astrbot conf admin' after initialization." ) effective_admin_username = ( @@ -128,7 +128,7 @@ async def initialize_astrbot( click.echo(f"Configured dashboard admin username: {effective_admin_username}") click.echo( "Dashboard password is not initialized for interactive use. " - "Run 'astrbot conf password' before the first login." + "Run 'astrbot conf admin' before the first login." ) if not backend_only and ( @@ -161,7 +161,7 @@ async def initialize_astrbot( "-p", "--admin-password", type=str, - help="Deprecated. Run `astrbot conf password` after initialization.", + help="Deprecated. Run `astrbot conf admin` after initialization.", ) @click.option( "--root", diff --git a/dashboard/src/i18n/locales/en-US/features/auth.json b/dashboard/src/i18n/locales/en-US/features/auth.json index e0469a8d7..dbb76e8fb 100644 --- a/dashboard/src/i18n/locales/en-US/features/auth.json +++ b/dashboard/src/i18n/locales/en-US/features/auth.json @@ -2,7 +2,7 @@ "login": "Login", "username": "Username", "password": "Password", - "defaultHint": "Default username: astrbot. Run `astrbot conf password` before the first login.", + "defaultHint": "Default username: astrbot. Run `astrbot conf admin` before the first login.", "logo": { "title": "AstrBot Dashboard", "subtitle": "Welcome" diff --git a/dashboard/src/i18n/locales/ru-RU/features/auth.json b/dashboard/src/i18n/locales/ru-RU/features/auth.json index 3f00b2374..c0cac3295 100644 --- a/dashboard/src/i18n/locales/ru-RU/features/auth.json +++ b/dashboard/src/i18n/locales/ru-RU/features/auth.json @@ -1,14 +1,14 @@ { - "login": "Вход", - "username": "Имя пользователя", - "password": "Пароль", - "defaultHint": "Имя пользователя по умолчанию: astrbot. Перед первым входом выполните `astrbot conf password`.", - "logo": { - "title": "Панель управления AstrBot", - "subtitle": "Добро пожаловать" - }, - "theme": { - "switchToDark": "Перейти на темную тему", - "switchToLight": "Перейти на светлую тему" - } + "login": "Вход", + "username": "Имя пользователя", + "password": "Пароль", + "defaultHint": "Имя пользователя по умолчанию: astrbot. Перед первым входом выполните `astrbot conf admin`.", + "logo": { + "title": "Панель управления AstrBot", + "subtitle": "Добро пожаловать" + }, + "theme": { + "switchToDark": "Перейти на темную тему", + "switchToLight": "Перейти на светлую тему" + } } diff --git a/dashboard/src/i18n/locales/zh-CN/features/auth.json b/dashboard/src/i18n/locales/zh-CN/features/auth.json index a4bc963a8..e87382934 100644 --- a/dashboard/src/i18n/locales/zh-CN/features/auth.json +++ b/dashboard/src/i18n/locales/zh-CN/features/auth.json @@ -2,7 +2,7 @@ "login": "登录", "username": "用户名", "password": "密码", - "defaultHint": "默认账户为:astrbot,请先执行 `astrbot conf password` 设置密码", + "defaultHint": "默认账户为:astrbot,请先执行 `astrbot conf admin` 设置密码", "logo": { "title": "AstrBot WebUI", "subtitle": "欢迎使用"