wenhongquan пре 2 месеци
родитељ
комит
3ee78f2706
3 измењених фајлова са 65 додато и 5 уклоњено
  1. 0 0
      oath/__init__.py
  2. 60 0
      oath/user_login.py
  3. 5 5
      upsystem/orderpermissions/sales_order.py

+ 0 - 0
oath/__init__.py


+ 60 - 0
oath/user_login.py

@@ -0,0 +1,60 @@
+import frappe
+from frappe import _
+
+@frappe.whitelist(allow_guest=True)
+def unified_register(
+    email,
+    password=None,
+    full_name=None,
+    provider=None,
+    third_party_id=None,
+    avatar_url=None
+):
+    # email格式校验略
+
+    user = frappe.db.get("User", {"email": email})
+
+    # 第三方注册/登录分支
+    if provider and third_party_id:
+        if user:
+            # 已有用户,绑定第三方信息
+            frappe.db.set_value("User", user.name, "third_party_provider", provider)
+            frappe.db.set_value("User", user.name, "third_party_id", third_party_id)
+            # 可选:更新头像等
+            if avatar_url:
+                frappe.db.set_value("User", user.name, "user_image", avatar_url)
+            return {"message": "login", "email": email}
+        else:
+            # 注册新用户(无密码,设定随机密码防止传统登录)
+            user_doc = frappe.get_doc({
+                "doctype": "User",
+                "email": email,
+                "first_name": full_name or email,
+                "enabled": 1,
+                "third_party_provider": provider,
+                "third_party_id": third_party_id,
+                "new_password": frappe.generate_hash(),
+                "user_image": avatar_url,
+            })
+            user_doc.insert(ignore_permissions=True)
+            user_doc.add_roles("Website User")
+            return {"message": "register", "email": email}
+
+    # 普通邮箱密码注册分支
+    elif password:
+        if user:
+            frappe.throw(_("User already exists"))
+        user_doc = frappe.get_doc({
+            "doctype": "User",
+            "email": email,
+            "first_name": full_name or email,
+            "enabled": 1,
+            "new_password": password,
+        })
+        user_doc.insert(ignore_permissions=True)
+        user_doc.add_roles("Website User")
+        return {"message": "register", "email": email}
+
+    else:
+        frappe.throw(_("Invalid parameters"))
+

+ 5 - 5
upsystem/orderpermissions/sales_order.py

@@ -13,20 +13,20 @@ def get_permission_query_conditions(user):
         },
         pluck="for_value"
     )
-    # frappe.msgprint(f"当前用户: {user}")  
+    # frappe.msgprint(f"当前用户: {user}")
     # frappe.logger().info(f"[HOOK] Triggered for user: {user}")
 
-    
+
     # return """`tabSales Order`.name in ("SAL-ORD-2025-00002")"""
     if not warehouses:
         # 用户无仓库权限时,返回空结果
         return "0=1"  # 永远不成立的条件
-    
+
     # 构建SQL条件:销售订单包含至少一个属于有权限仓库的物料
     return f"""
         EXISTS (
-            SELECT 1 FROM `tabSales Order Item` soi 
-            WHERE soi.parent = `tabSales Order`.name 
+            SELECT 1 FROM `tabSales Order Item` soi
+            WHERE soi.parent = `tabSales Order`.name
             AND soi.warehouse IN ({', '.join([f"'{wh}'" for wh in warehouses])})
         )
     """