1ST
This commit is contained in:
140
backend/utils/mock_ldap.py
Normal file
140
backend/utils/mock_ldap.py
Normal file
@@ -0,0 +1,140 @@
|
||||
"""
|
||||
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
|
Reference in New Issue
Block a user