mirror of
https://github.com/ihmily/StreamCap.git
synced 2026-06-05 21:39:49 +08:00
feat: add web secure login toggle
This commit is contained in:
@@ -1144,6 +1144,16 @@ class SettingsPage(PageBase):
|
||||
else:
|
||||
await self.app.snack_bar.show_snack_bar(self._["not_logged_in"], bgcolor=ft.Colors.RED)
|
||||
|
||||
async def toggle_login_required(_):
|
||||
login_required = login_required_switch.value
|
||||
self.user_config["login_required"] = login_required
|
||||
await self.config_manager.save_user_config(self.user_config)
|
||||
|
||||
if login_required:
|
||||
await self.app.snack_bar.show_snack_bar(self._["login_required_enabled"], bgcolor=ft.Colors.GREEN)
|
||||
else:
|
||||
await self.app.snack_bar.show_snack_bar(self._["login_required_disabled"], bgcolor=ft.Colors.GREEN)
|
||||
|
||||
username = self.app.current_username or "admin"
|
||||
|
||||
old_password_field = ft.TextField(
|
||||
@@ -1170,12 +1180,21 @@ class SettingsPage(PageBase):
|
||||
icon=ft.icons.LOCK_RESET,
|
||||
)
|
||||
|
||||
login_required_switch = ft.Switch(
|
||||
value=self.get_config_value("login_required", True),
|
||||
on_change=toggle_login_required,
|
||||
)
|
||||
|
||||
return ft.Column(
|
||||
[
|
||||
self.create_setting_group(
|
||||
self._["security_settings"],
|
||||
self._["web_login_configuration"],
|
||||
[
|
||||
self.create_setting_row(
|
||||
self._["login_required"],
|
||||
login_required_switch,
|
||||
),
|
||||
self.create_setting_row(
|
||||
self._["current_username"],
|
||||
ft.Text(username),
|
||||
|
||||
@@ -184,6 +184,9 @@
|
||||
"script_command": "Custom Script Execution Command",
|
||||
"default_platform_with_proxy": "Default Platform for Recording with Proxy",
|
||||
"web_login_configuration": "Web Backend Login Configuration",
|
||||
"login_required": "Enable Secure Login",
|
||||
"login_required_enabled": "Secure login enabled",
|
||||
"login_required_disabled": "Secure login disabled",
|
||||
"current_username": "Current Username",
|
||||
"old_password": "Old Password",
|
||||
"new_password": "New Password",
|
||||
|
||||
@@ -185,6 +185,9 @@
|
||||
"script_command": "自定义脚本执行命令",
|
||||
"default_platform_with_proxy": "默认使用代理录制的平台",
|
||||
"web_login_configuration": "Web后台登录配置",
|
||||
"login_required": "启用安全登录",
|
||||
"login_required_enabled": "已启用安全登录",
|
||||
"login_required_disabled": "已禁用安全登录",
|
||||
"current_username": "当前用户名",
|
||||
"old_password": "旧密码",
|
||||
"new_password": "新密码",
|
||||
|
||||
37
main.py
37
main.py
@@ -122,8 +122,8 @@ async def main(page: ft.Page) -> None:
|
||||
if hasattr(app, "tray_manager"):
|
||||
try:
|
||||
app.tray_manager.start(page)
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to start tray manager: {e}")
|
||||
except Exception as err:
|
||||
logger.error(f"Failed to start tray manager: {err}")
|
||||
|
||||
page.update()
|
||||
page.on_route_change(ft.RouteChangeEvent(route=page.route))
|
||||
@@ -133,23 +133,28 @@ async def main(page: ft.Page) -> None:
|
||||
app.auth_manager = auth_manager
|
||||
await auth_manager.initialize()
|
||||
|
||||
session_token = await page.client_storage.get_async("session_token")
|
||||
if not session_token or not auth_manager.validate_session(session_token):
|
||||
async def on_login_success(token):
|
||||
_session_info = auth_manager.active_sessions.get(token, {})
|
||||
app.current_username = _session_info.get("username")
|
||||
login_required = app.settings.get_config_value("login_required", True)
|
||||
|
||||
if login_required:
|
||||
session_token = await page.client_storage.get_async("session_token")
|
||||
if not session_token or not auth_manager.validate_session(session_token):
|
||||
async def on_login_success(token):
|
||||
_session_info = auth_manager.active_sessions.get(token, {})
|
||||
app.current_username = _session_info.get("username")
|
||||
|
||||
page.clean()
|
||||
await load_app()
|
||||
|
||||
page.clean()
|
||||
await load_app()
|
||||
|
||||
page.clean()
|
||||
|
||||
login_page = LoginPage(page, auth_manager, on_login_success)
|
||||
page.add(login_page.get_view())
|
||||
return
|
||||
|
||||
login_page = LoginPage(page, auth_manager, on_login_success)
|
||||
page.add(login_page.get_view())
|
||||
return
|
||||
else:
|
||||
session_info = auth_manager.active_sessions.get(session_token, {})
|
||||
app.current_username = session_info.get("username")
|
||||
else:
|
||||
session_info = auth_manager.active_sessions.get(session_token, {})
|
||||
app.current_username = session_info.get("username")
|
||||
app.current_username = "admin"
|
||||
|
||||
await load_app()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user