140 lines
3.9 KiB
Python
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 |