huace-aigc-auth-client 1.1.10__py3-none-any.whl → 1.1.15__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- huace_aigc_auth_client/__init__.py +71 -9
- huace_aigc_auth_client/legacy_adapter.py +20 -5
- huace_aigc_auth_client/sdk.py +3 -0
- huace_aigc_auth_client/webhook.py +3 -1
- huace_aigc_auth_client/webhook_flask.py +3 -1
- {huace_aigc_auth_client-1.1.10.dist-info → huace_aigc_auth_client-1.1.15.dist-info}/METADATA +1 -1
- huace_aigc_auth_client-1.1.15.dist-info/RECORD +10 -0
- {huace_aigc_auth_client-1.1.10.dist-info → huace_aigc_auth_client-1.1.15.dist-info}/WHEEL +1 -1
- huace_aigc_auth_client-1.1.10.dist-info/RECORD +0 -10
- {huace_aigc_auth_client-1.1.10.dist-info → huace_aigc_auth_client-1.1.15.dist-info}/licenses/LICENSE +0 -0
- {huace_aigc_auth_client-1.1.10.dist-info → huace_aigc_auth_client-1.1.15.dist-info}/top_level.txt +0 -0
|
@@ -67,16 +67,76 @@ from .legacy_adapter import (
|
|
|
67
67
|
create_sync_config,
|
|
68
68
|
create_default_field_mappings,
|
|
69
69
|
)
|
|
70
|
+
# fastapi 相关功能是可选的,如果未安装 fastapi 则跳过
|
|
71
|
+
try:
|
|
72
|
+
from .webhook import (
|
|
73
|
+
register_webhook_router,
|
|
74
|
+
verify_webhook_signature,
|
|
75
|
+
)
|
|
76
|
+
_fastapi_available = True
|
|
77
|
+
except ImportError:
|
|
78
|
+
_fastapi_available = False
|
|
79
|
+
# 提供占位符,避免 __all__ 导出时出错
|
|
80
|
+
register_webhook_router = None
|
|
81
|
+
verify_webhook_signature = None
|
|
70
82
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
83
|
+
# Flask 相关功能是可选的,如果未安装 flask 则跳过
|
|
84
|
+
try:
|
|
85
|
+
from .webhook_flask import (
|
|
86
|
+
create_flask_webhook_blueprint,
|
|
87
|
+
register_flask_webhook_routes,
|
|
88
|
+
)
|
|
89
|
+
_flask_available = True
|
|
90
|
+
except ImportError:
|
|
91
|
+
_flask_available = False
|
|
92
|
+
# 提供占位符,避免 __all__ 导出时出错
|
|
93
|
+
create_flask_webhook_blueprint = None
|
|
94
|
+
register_flask_webhook_routes = None
|
|
95
|
+
|
|
96
|
+
def setLogger(log):
|
|
97
|
+
"""
|
|
98
|
+
统一设置所有模块的 logger
|
|
99
|
+
|
|
100
|
+
Args:
|
|
101
|
+
log: logging.Logger 实例
|
|
102
|
+
|
|
103
|
+
使用示例:
|
|
104
|
+
import logging
|
|
105
|
+
from huace_aigc_auth_client import setLogger
|
|
106
|
+
|
|
107
|
+
logger = logging.getLogger("my_app")
|
|
108
|
+
logger.setLevel(logging.INFO)
|
|
109
|
+
|
|
110
|
+
# 设置 SDK 所有模块使用该 logger
|
|
111
|
+
setLogger(logger)
|
|
112
|
+
"""
|
|
113
|
+
try:
|
|
114
|
+
from .sdk import setLogger as sdk_setLogger
|
|
115
|
+
sdk_setLogger(log)
|
|
116
|
+
except Exception as e:
|
|
117
|
+
print(f"Failed to set logger for sdk module: {e}")
|
|
118
|
+
|
|
119
|
+
try:
|
|
120
|
+
from .legacy_adapter import setLogger as legacy_setLogger
|
|
121
|
+
legacy_setLogger(log)
|
|
122
|
+
except Exception as e:
|
|
123
|
+
print(f"Failed to set logger for legacy_adapter module: {e}")
|
|
124
|
+
|
|
125
|
+
if _fastapi_available:
|
|
126
|
+
try:
|
|
127
|
+
from .webhook import setLogger as webhook_setLogger
|
|
128
|
+
webhook_setLogger(log)
|
|
129
|
+
except Exception as e:
|
|
130
|
+
print(f"Failed to set logger for webhook module: {e}")
|
|
131
|
+
|
|
132
|
+
# 只在 flask 可用时设置 flask 模块的 logger
|
|
133
|
+
if _flask_available:
|
|
134
|
+
try:
|
|
135
|
+
from .webhook_flask import setLogger as webhook_flask_setLogger
|
|
136
|
+
webhook_flask_setLogger(log)
|
|
137
|
+
except Exception as e:
|
|
138
|
+
print(f"Failed to set logger for webhook_flask module: {e}")
|
|
75
139
|
|
|
76
|
-
from .webhook_flask import (
|
|
77
|
-
create_flask_webhook_blueprint,
|
|
78
|
-
register_flask_webhook_routes,
|
|
79
|
-
)
|
|
80
140
|
|
|
81
141
|
__all__ = [
|
|
82
142
|
# 核心类
|
|
@@ -105,5 +165,7 @@ __all__ = [
|
|
|
105
165
|
# Webhook 接收 (Flask)
|
|
106
166
|
"create_flask_webhook_blueprint",
|
|
107
167
|
"register_flask_webhook_routes",
|
|
168
|
+
# Logger 设置
|
|
169
|
+
"setLogger",
|
|
108
170
|
]
|
|
109
|
-
__version__ = "1.1.
|
|
171
|
+
__version__ = "1.1.15"
|
|
@@ -20,7 +20,9 @@ from enum import Enum
|
|
|
20
20
|
from abc import ABC, abstractmethod
|
|
21
21
|
|
|
22
22
|
logger = logging.getLogger(__name__)
|
|
23
|
-
|
|
23
|
+
def setLogger(log):
|
|
24
|
+
global logger
|
|
25
|
+
logger = log
|
|
24
26
|
|
|
25
27
|
class PasswordMode(Enum):
|
|
26
28
|
"""密码处理模式"""
|
|
@@ -274,7 +276,13 @@ class LegacySystemAdapter(ABC):
|
|
|
274
276
|
|
|
275
277
|
for user in users:
|
|
276
278
|
try:
|
|
277
|
-
|
|
279
|
+
# 将 dict 转换为 LegacyUserData 对象
|
|
280
|
+
if isinstance(user, dict):
|
|
281
|
+
legacy_user = LegacyUserData(data=user)
|
|
282
|
+
else:
|
|
283
|
+
legacy_user = user
|
|
284
|
+
|
|
285
|
+
result = await self.sync_user_to_auth(legacy_user)
|
|
278
286
|
logger.info(f"Sync result for user {user.get('username')}: {result}")
|
|
279
287
|
|
|
280
288
|
if result.get("success"):
|
|
@@ -329,7 +337,7 @@ class LegacySystemAdapter(ABC):
|
|
|
329
337
|
|
|
330
338
|
# 创建或更新用户
|
|
331
339
|
logger.info(f"Handling {event} event for user: {legacy_data}")
|
|
332
|
-
result = await self.upsert_user_async(legacy_data)
|
|
340
|
+
result = await self.upsert_user_async(legacy_data, data)
|
|
333
341
|
|
|
334
342
|
return {
|
|
335
343
|
"success": True,
|
|
@@ -420,7 +428,14 @@ class LegacySystemAdapter(ABC):
|
|
|
420
428
|
return (self.config.unified_password, False)
|
|
421
429
|
elif self.config.password_mode == PasswordMode.CUSTOM_MAPPING:
|
|
422
430
|
if self.config.password_mapper and legacy_user:
|
|
423
|
-
|
|
431
|
+
# 兼容 dict 和 LegacyUserData 两种类型
|
|
432
|
+
if isinstance(legacy_user, dict):
|
|
433
|
+
user_data = legacy_user
|
|
434
|
+
elif isinstance(legacy_user, LegacyUserData):
|
|
435
|
+
user_data = legacy_user.data
|
|
436
|
+
else:
|
|
437
|
+
user_data = legacy_user
|
|
438
|
+
password = self.config.password_mapper(user_data)
|
|
424
439
|
return (password, self.config.password_is_hashed)
|
|
425
440
|
return (self.config.unified_password, False)
|
|
426
441
|
return (self.config.unified_password, False)
|
|
@@ -552,7 +567,7 @@ class UserSyncService:
|
|
|
552
567
|
legacy_data["password"] = password
|
|
553
568
|
|
|
554
569
|
# 使用 upsert 方法(存在则更新,不存在则创建)
|
|
555
|
-
result = await self.adapter.upsert_user_async(legacy_data)
|
|
570
|
+
result = await self.adapter.upsert_user_async(legacy_data, auth_data)
|
|
556
571
|
|
|
557
572
|
return {
|
|
558
573
|
"success": True,
|
huace_aigc_auth_client/sdk.py
CHANGED
|
@@ -13,7 +13,9 @@ from typing import Callable, Awaitable, Dict, Any, Optional
|
|
|
13
13
|
from fastapi import APIRouter, Request, HTTPException
|
|
14
14
|
|
|
15
15
|
logger = logging.getLogger(__name__)
|
|
16
|
-
|
|
16
|
+
def setLogger(log):
|
|
17
|
+
global logger
|
|
18
|
+
logger = log
|
|
17
19
|
|
|
18
20
|
def verify_webhook_signature(payload: bytes, signature: str, secret: str) -> bool:
|
|
19
21
|
"""
|
|
@@ -14,7 +14,9 @@ from typing import Callable, Dict, Any, Optional
|
|
|
14
14
|
from flask import Blueprint, request, jsonify
|
|
15
15
|
|
|
16
16
|
logger = logging.getLogger(__name__)
|
|
17
|
-
|
|
17
|
+
def setLogger(log):
|
|
18
|
+
global logger
|
|
19
|
+
logger = log
|
|
18
20
|
|
|
19
21
|
def verify_webhook_signature(payload: bytes, signature: str, secret: str) -> bool:
|
|
20
22
|
"""
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
huace_aigc_auth_client/__init__.py,sha256=KYoil3pbho69Cs0nEPJz2Bli1L8tJ9NjDDBCOU9vWT0,4540
|
|
2
|
+
huace_aigc_auth_client/legacy_adapter.py,sha256=f1_xH6huiPdCnJx1ko-2_kWTHjWKLBK2zyPXqnPiEaY,24049
|
|
3
|
+
huace_aigc_auth_client/sdk.py,sha256=ypClZfQm4Ux4db8XDP51I5Cuk1Uc9F2VPgECpXXphkQ,23272
|
|
4
|
+
huace_aigc_auth_client/webhook.py,sha256=XQZYEbMoqIdqZWCGSTcedeDKJpDbUVSq5g08g-6Qucg,4124
|
|
5
|
+
huace_aigc_auth_client/webhook_flask.py,sha256=Iosu4dBtRhQZM_ytn-bn82MpVsyOiV28FBnt7Tfh31U,7225
|
|
6
|
+
huace_aigc_auth_client-1.1.15.dist-info/licenses/LICENSE,sha256=z7dgC7KljhBLNvKjN15391nMj3aLt0gbud8-Yf1F8EQ,1063
|
|
7
|
+
huace_aigc_auth_client-1.1.15.dist-info/METADATA,sha256=lUBiUG93imjVSuLQBO4GVUZY-DW5xE8xvWwObY5KrGM,22971
|
|
8
|
+
huace_aigc_auth_client-1.1.15.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
|
|
9
|
+
huace_aigc_auth_client-1.1.15.dist-info/top_level.txt,sha256=kbv0nQ6PQ0JVneWPH7O2AbtlJnP7AjvFJ6JjM6ZEBxo,23
|
|
10
|
+
huace_aigc_auth_client-1.1.15.dist-info/RECORD,,
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
huace_aigc_auth_client/__init__.py,sha256=BKfCXzmYmlv8k4_PMWNLbNUrvrmeC5OIu7KAez4b24w,2550
|
|
2
|
-
huace_aigc_auth_client/legacy_adapter.py,sha256=JQ9OIrzlPjd1JFronX5Ve4voZUbMBaBmGBZ_ThIl6eE,23401
|
|
3
|
-
huace_aigc_auth_client/sdk.py,sha256=ha1e_MSzLCsIMrdgcKSh-V5hTVR1rqqrIMWcDmtVMKs,23217
|
|
4
|
-
huace_aigc_auth_client/webhook.py,sha256=m-mjXNNqrUClrNpOHRBzty0XKFDBuZp4e_PgLd2t0aA,4070
|
|
5
|
-
huace_aigc_auth_client/webhook_flask.py,sha256=JiIsAr6INjGNKVzamyHDWVl7tzdCPOR1WguMLAmt6iI,7171
|
|
6
|
-
huace_aigc_auth_client-1.1.10.dist-info/licenses/LICENSE,sha256=z7dgC7KljhBLNvKjN15391nMj3aLt0gbud8-Yf1F8EQ,1063
|
|
7
|
-
huace_aigc_auth_client-1.1.10.dist-info/METADATA,sha256=1AgKalGR2m4melynA5ojDFJmsaDmhQcOBpa_Z8AZiWU,22971
|
|
8
|
-
huace_aigc_auth_client-1.1.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
9
|
-
huace_aigc_auth_client-1.1.10.dist-info/top_level.txt,sha256=kbv0nQ6PQ0JVneWPH7O2AbtlJnP7AjvFJ6JjM6ZEBxo,23
|
|
10
|
-
huace_aigc_auth_client-1.1.10.dist-info/RECORD,,
|
{huace_aigc_auth_client-1.1.10.dist-info → huace_aigc_auth_client-1.1.15.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
{huace_aigc_auth_client-1.1.10.dist-info → huace_aigc_auth_client-1.1.15.dist-info}/top_level.txt
RENAMED
|
File without changes
|