改用API驗證
This commit is contained in:
@@ -82,29 +82,35 @@ class User(db.Model):
|
||||
|
||||
@classmethod
|
||||
def get_or_create(cls, username, display_name, email, department=None):
|
||||
"""取得或建立使用者"""
|
||||
user = cls.query.filter_by(username=username).first()
|
||||
|
||||
"""取得或建立使用者 (方案A: 使用 email 作為主要識別鍵)"""
|
||||
# 先嘗試用 email 查找 (因為 email 是唯一且穩定的識別碼)
|
||||
user = cls.query.filter_by(email=email).first()
|
||||
|
||||
if user:
|
||||
# 更新使用者資訊
|
||||
user.display_name = display_name
|
||||
user.email = email
|
||||
# 更新使用者資訊 (API name 格式: 姓名+email)
|
||||
user.username = username # API 的 name (姓名+email 格式)
|
||||
user.display_name = display_name # API 的 name (姓名+email 格式)
|
||||
if department:
|
||||
user.department = department
|
||||
user.updated_at = datetime.utcnow()
|
||||
else:
|
||||
# 建立新使用者
|
||||
user = cls(
|
||||
username=username,
|
||||
display_name=display_name,
|
||||
email=email,
|
||||
username=username, # API 的 name (姓名+email 格式)
|
||||
display_name=display_name, # API 的 name (姓名+email 格式)
|
||||
email=email, # 純 email,唯一識別鍵
|
||||
department=department,
|
||||
is_admin=(email.lower() == 'ymirliu@panjit.com.tw') # 硬編碼管理員
|
||||
)
|
||||
db.session.add(user)
|
||||
|
||||
|
||||
db.session.commit()
|
||||
return user
|
||||
|
||||
@classmethod
|
||||
def get_by_email(cls, email):
|
||||
"""根據 email 查找使用者"""
|
||||
return cls.query.filter_by(email=email).first()
|
||||
|
||||
@classmethod
|
||||
def get_admin_users(cls):
|
||||
|
Reference in New Issue
Block a user