|
|
@@ -46,6 +46,8 @@ INSTALLED_APPS = [
|
|
|
'oss',
|
|
|
'trigger',
|
|
|
'django_apscheduler',
|
|
|
+ 'plugin.apps.PluginConfig',
|
|
|
+ 'sso',
|
|
|
]
|
|
|
|
|
|
MIDDLEWARE = [
|
|
|
@@ -57,13 +59,14 @@ MIDDLEWARE = [
|
|
|
'common.middleware.chat_headers_middleware.ChatHeadersMiddleware',
|
|
|
'common.middleware.cross_domain_middleware.CrossDomainMiddleware',
|
|
|
'common.middleware.doc_headers_middleware.DocHeadersMiddleware',
|
|
|
-
|
|
|
+ 'application.middleware.rate_limit.RateLimitMiddleware',
|
|
|
]
|
|
|
|
|
|
REST_FRAMEWORK = {
|
|
|
'EXCEPTION_HANDLER': 'common.exception.handle_exception.handle_exception',
|
|
|
'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',
|
|
|
- 'DEFAULT_AUTHENTICATION_CLASSES': ['common.auth.authenticate.AnonymousAuthentication']
|
|
|
+ 'DEFAULT_AUTHENTICATION_CLASSES': ['common.auth.authenticate.AnonymousAuthentication'],
|
|
|
+ 'UNAUTHENTICATED_USER': None,
|
|
|
}
|
|
|
STATICFILES_DIRS = [(os.path.join(PROJECT_DIR, 'ui', 'dist'))]
|
|
|
STATIC_ROOT = os.path.join(BASE_DIR.parent, 'static')
|
|
|
@@ -194,3 +197,15 @@ edition = 'CE'
|
|
|
|
|
|
if os.environ.get('MAXKB_REDIS_SENTINEL_SENTINELS') is not None:
|
|
|
DJANGO_REDIS_CONNECTION_FACTORY = "django_redis.pool.SentinelConnectionFactory"
|
|
|
+
|
|
|
+# SSO 统一认证配置(从 config.yml 或环境变量读取)
|
|
|
+SSO_BASE_URL = CONFIG.get("SSO_BASE_URL") or ""
|
|
|
+SSO_CLIENT_ID = CONFIG.get("SSO_CLIENT_ID") or ""
|
|
|
+SSO_CLIENT_SECRET = CONFIG.get("SSO_CLIENT_SECRET") or ""
|
|
|
+SSO_REDIRECT_URI = CONFIG.get("SSO_REDIRECT_URI") or ""
|
|
|
+SSO_LOGOUT_REDIRECT_URL = CONFIG.get("SSO_LOGOUT_REDIRECT_URL") or ""
|
|
|
+
|
|
|
+# 样本中心配置(从 config.yml 或环境变量读取)
|
|
|
+SAMPLE_CENTER_BASE_URL = CONFIG.get("SAMPLE_CENTER_BASE_URL") or ""
|
|
|
+SAMPLE_CENTER_APP_ID = CONFIG.get("SAMPLE_CENTER_APP_ID") or ""
|
|
|
+SAMPLE_CENTER_APP_SECRET = CONFIG.get("SAMPLE_CENTER_APP_SECRET") or ""
|