feat: implement user authentication and permission-based data filtering
Add user login system with role-based access control: - Admin users see all data and can filter by any manager - Regular users only see records where ManagerName matches their username New components: - BIPUsersDAO: user authentication and management - SessionManager: singleton session state management - LoginDialog: modal login UI for app startup - init_users.sql: initial user setup script Permission enforcement: - Material validation tab: hide manager filter for non-admin, force filter by current user - Material type management: hide filter UI for non-admin, filter at database level - Window title and status bar display current user info Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
27
main_ui.py
27
main_ui.py
@@ -14,10 +14,14 @@ ERP 自动化工具 - GUI 版本
|
||||
- 物料校验:校验物料状态并匹配待删除物料
|
||||
- 数据查询:查询生产订单号等信息
|
||||
- 设置管理:管理系统配置
|
||||
- 用户认证:基于用户权限的数据访问控制
|
||||
"""
|
||||
|
||||
import tkinter as tk
|
||||
from tkinter import messagebox
|
||||
from gui.main_window import MainWindow
|
||||
from gui.login_dialog import LoginDialog
|
||||
from auth.session_manager import SessionManager
|
||||
|
||||
|
||||
def main():
|
||||
@@ -25,8 +29,27 @@ def main():
|
||||
# 创建根窗口
|
||||
root = tk.Tk()
|
||||
|
||||
# 创建主窗口
|
||||
app = MainWindow(root)
|
||||
# 显示登录对话框
|
||||
login_dialog = LoginDialog(root)
|
||||
credentials = login_dialog.get_credentials()
|
||||
|
||||
if not credentials:
|
||||
# 用户取消登录或关闭对话框
|
||||
root.destroy()
|
||||
return
|
||||
|
||||
username, password = credentials
|
||||
|
||||
# 认证并初始化会话
|
||||
session_manager = SessionManager.get_instance()
|
||||
|
||||
if not session_manager.login(username, password):
|
||||
messagebox.showerror("登录失败", "用户名或密码错误")
|
||||
root.destroy()
|
||||
return
|
||||
|
||||
# 创建主窗口(传入 session_manager)
|
||||
app = MainWindow(root, session_manager)
|
||||
|
||||
# 启动主事件循环
|
||||
root.mainloop()
|
||||
|
||||
Reference in New Issue
Block a user