Files
TODO_list_system/backend/utils/mock_ldap.py
beabigegg b0c86302ff 1ST
2025-08-29 16:25:46 +08:00

140 lines
3.9 KiB
Python

"""
Mock LDAP for development/testing purposes
當無法連接到實際LDAP時使用
"""
from utils.logger import get_logger
logger = get_logger(__name__)
def authenticate_user(username, password):
"""Mock authentication for development"""
logger.info(f"Mock LDAP: Authenticating user {username}")
# 簡單的開發用驗證
if not username or not password:
return None
# 模擬用戶資料
mock_users = {
'admin': {
'ad_account': 'admin',
'display_name': '系統管理員',
'email': 'admin@panjit.com.tw'
},
'test': {
'ad_account': 'test',
'display_name': '測試使用者',
'email': 'test@panjit.com.tw'
},
'user1': {
'ad_account': 'user1',
'display_name': '使用者一',
'email': 'user1@panjit.com.tw'
},
'ymirliu@panjit.com.tw': {
'ad_account': '92367',
'display_name': 'ymirliu 陸一銘',
'email': 'ymirliu@panjit.com.tw'
}
}
if username.lower() in mock_users:
logger.info(f"Mock LDAP: User {username} authenticated successfully")
return mock_users[username.lower()]
logger.warning(f"Mock LDAP: User {username} not found")
return None
def search_ldap_principals(search_term, limit=20):
"""Mock LDAP search"""
logger.info(f"Mock LDAP: Searching for '{search_term}'")
mock_results = [
{
'ad_account': 'admin',
'display_name': '系統管理員',
'email': 'admin@panjit.com.tw'
},
{
'ad_account': 'test',
'display_name': '測試使用者',
'email': 'test@panjit.com.tw'
},
{
'ad_account': 'user1',
'display_name': '使用者一',
'email': 'user1@panjit.com.tw'
},
{
'ad_account': 'user2',
'display_name': '使用者二',
'email': 'user2@panjit.com.tw'
}
]
# 簡單的搜尋過濾
if search_term:
results = []
for user in mock_results:
if (search_term.lower() in user['ad_account'].lower() or
search_term.lower() in user['display_name'].lower() or
search_term.lower() in user['email'].lower()):
results.append(user)
return results[:limit]
return mock_results[:limit]
def get_user_info(ad_account):
"""Mock get user info"""
mock_users = {
'admin': {
'ad_account': 'admin',
'display_name': '系統管理員',
'email': 'admin@panjit.com.tw'
},
'test': {
'ad_account': 'test',
'display_name': '測試使用者',
'email': 'test@panjit.com.tw'
},
'user1': {
'ad_account': 'user1',
'display_name': '使用者一',
'email': 'user1@panjit.com.tw'
}
}
return mock_users.get(ad_account.lower())
def validate_ad_accounts(ad_accounts):
"""Mock validate AD accounts"""
mock_users = {
'admin': {
'ad_account': 'admin',
'display_name': '系統管理員',
'email': 'admin@panjit.com.tw'
},
'test': {
'ad_account': 'test',
'display_name': '測試使用者',
'email': 'test@panjit.com.tw'
},
'user1': {
'ad_account': 'user1',
'display_name': '使用者一',
'email': 'user1@panjit.com.tw'
}
}
valid_accounts = {}
for account in ad_accounts:
if account.lower() in mock_users:
valid_accounts[account] = mock_users[account.lower()]
return valid_accounts
def test_ldap_connection():
"""Mock LDAP connection test"""
logger.info("Mock LDAP: Connection test - always returns True")
return True