From 24b1a625b31faff8f1da8b1c052da9c315d3a6db Mon Sep 17 00:00:00 2001 From: Panpan Date: Mon, 31 Mar 2025 18:55:42 +0800 Subject: [PATCH] feat: allow the embedding in websites to customize sys.user_id (#16062) --- api/controllers/web/passport.py | 37 ++++++++++++++----- .../app/overview/embedded/index.tsx | 5 ++- web/app/components/base/chat/utils.ts | 32 +++++++++++++--- web/app/components/share/utils.ts | 4 +- web/public/embed.js | 16 +++++++- web/public/embed.min.js | 8 ++-- web/service/share.ts | 5 ++- 7 files changed, 83 insertions(+), 24 deletions(-) diff --git a/api/controllers/web/passport.py b/api/controllers/web/passport.py index 4625c1f43..e30998c80 100644 --- a/api/controllers/web/passport.py +++ b/api/controllers/web/passport.py @@ -19,6 +19,8 @@ class PassportResource(Resource): def get(self): system_features = FeatureService.get_system_features() app_code = request.headers.get("X-App-Code") + user_id = request.args.get("user_id") + if app_code is None: raise Unauthorized("X-App-Code header is missing.") @@ -36,16 +38,33 @@ class PassportResource(Resource): if not app_model or app_model.status != "normal" or not app_model.enable_site: raise NotFound() - end_user = EndUser( - tenant_id=app_model.tenant_id, - app_id=app_model.id, - type="browser", - is_anonymous=True, - session_id=generate_session_id(), - ) + if user_id: + end_user = ( + db.session.query(EndUser).filter(EndUser.app_id == app_model.id, EndUser.session_id == user_id).first() + ) - db.session.add(end_user) - db.session.commit() + if end_user: + pass + else: + end_user = EndUser( + tenant_id=app_model.tenant_id, + app_id=app_model.id, + type="browser", + is_anonymous=True, + session_id=user_id, + ) + db.session.add(end_user) + db.session.commit() + else: + end_user = EndUser( + tenant_id=app_model.tenant_id, + app_id=app_model.id, + type="browser", + is_anonymous=True, + session_id=generate_session_id(), + ) + db.session.add(end_user) + db.session.commit() payload = { "iss": site.app_id, diff --git a/web/app/components/app/overview/embedded/index.tsx b/web/app/components/app/overview/embedded/index.tsx index 0d545aaf3..cb00c9835 100644 --- a/web/app/components/app/overview/embedded/index.tsx +++ b/web/app/components/app/overview/embedded/index.tsx @@ -44,7 +44,10 @@ const OPTION_MAP = { : ''}${IS_CE_EDITION ? `, baseUrl: '${url}'` - : ''} + : ''}, + systemVariables: { + // user_id: 'YOU CAN DEFINE USER ID HERE', + }, }