Skip to content

Commit 690a726

Browse files
committed
feat: add web secure login toggle
1 parent cadcae9 commit 690a726

File tree

4 files changed

+46
-16
lines changed

4 files changed

+46
-16
lines changed

app/ui/views/settings_view.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,6 +1144,16 @@ async def change_password(_):
11441144
else:
11451145
await self.app.snack_bar.show_snack_bar(self._["not_logged_in"], bgcolor=ft.Colors.RED)
11461146

1147+
async def toggle_login_required(_):
1148+
login_required = login_required_switch.value
1149+
self.user_config["login_required"] = login_required
1150+
await self.config_manager.save_user_config(self.user_config)
1151+
1152+
if login_required:
1153+
await self.app.snack_bar.show_snack_bar(self._["login_required_enabled"], bgcolor=ft.Colors.GREEN)
1154+
else:
1155+
await self.app.snack_bar.show_snack_bar(self._["login_required_disabled"], bgcolor=ft.Colors.GREEN)
1156+
11471157
username = self.app.current_username or "admin"
11481158

11491159
old_password_field = ft.TextField(
@@ -1170,12 +1180,21 @@ async def change_password(_):
11701180
icon=ft.icons.LOCK_RESET,
11711181
)
11721182

1183+
login_required_switch = ft.Switch(
1184+
value=self.get_config_value("login_required", True),
1185+
on_change=toggle_login_required,
1186+
)
1187+
11731188
return ft.Column(
11741189
[
11751190
self.create_setting_group(
11761191
self._["security_settings"],
11771192
self._["web_login_configuration"],
11781193
[
1194+
self.create_setting_row(
1195+
self._["login_required"],
1196+
login_required_switch,
1197+
),
11791198
self.create_setting_row(
11801199
self._["current_username"],
11811200
ft.Text(username),

locales/en.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,9 @@
184184
"script_command": "Custom Script Execution Command",
185185
"default_platform_with_proxy": "Default Platform for Recording with Proxy",
186186
"web_login_configuration": "Web Backend Login Configuration",
187+
"login_required": "Enable Secure Login",
188+
"login_required_enabled": "Secure login enabled",
189+
"login_required_disabled": "Secure login disabled",
187190
"current_username": "Current Username",
188191
"old_password": "Old Password",
189192
"new_password": "New Password",

locales/zh_CN.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,9 @@
185185
"script_command": "自定义脚本执行命令",
186186
"default_platform_with_proxy": "默认使用代理录制的平台",
187187
"web_login_configuration": "Web后台登录配置",
188+
"login_required": "启用安全登录",
189+
"login_required_enabled": "已启用安全登录",
190+
"login_required_disabled": "已禁用安全登录",
188191
"current_username": "当前用户名",
189192
"old_password": "旧密码",
190193
"new_password": "新密码",

main.py

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@ async def load_app():
122122
if hasattr(app, "tray_manager"):
123123
try:
124124
app.tray_manager.start(page)
125-
except Exception as e:
126-
logger.error(f"Failed to start tray manager: {e}")
125+
except Exception as err:
126+
logger.error(f"Failed to start tray manager: {err}")
127127

128128
page.update()
129129
page.on_route_change(ft.RouteChangeEvent(route=page.route))
@@ -133,23 +133,28 @@ async def load_app():
133133
app.auth_manager = auth_manager
134134
await auth_manager.initialize()
135135

136-
session_token = await page.client_storage.get_async("session_token")
137-
if not session_token or not auth_manager.validate_session(session_token):
138-
async def on_login_success(token):
139-
_session_info = auth_manager.active_sessions.get(token, {})
140-
app.current_username = _session_info.get("username")
136+
login_required = app.settings.get_config_value("login_required", True)
137+
138+
if login_required:
139+
session_token = await page.client_storage.get_async("session_token")
140+
if not session_token or not auth_manager.validate_session(session_token):
141+
async def on_login_success(token):
142+
_session_info = auth_manager.active_sessions.get(token, {})
143+
app.current_username = _session_info.get("username")
144+
145+
page.clean()
146+
await load_app()
141147

142148
page.clean()
143-
await load_app()
144-
145-
page.clean()
146-
147-
login_page = LoginPage(page, auth_manager, on_login_success)
148-
page.add(login_page.get_view())
149-
return
149+
150+
login_page = LoginPage(page, auth_manager, on_login_success)
151+
page.add(login_page.get_view())
152+
return
153+
else:
154+
session_info = auth_manager.active_sessions.get(session_token, {})
155+
app.current_username = session_info.get("username")
150156
else:
151-
session_info = auth_manager.active_sessions.get(session_token, {})
152-
app.current_username = session_info.get("username")
157+
app.current_username = "admin"
153158

154159
await load_app()
155160

0 commit comments

Comments
 (0)