mirror of
https://github.com/langgenius/dify.git
synced 2026-08-28 21:23:22 +08:00
fix: remove _try_resolve_user_from_request (#31360)
This commit is contained in:
parent
524ce14a68
commit
211c57f7b6
@ -1,5 +1,6 @@
|
|||||||
import contextlib
|
import contextlib
|
||||||
import json
|
import json
|
||||||
|
import logging
|
||||||
from collections.abc import Generator, Iterable
|
from collections.abc import Generator, Iterable
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from datetime import UTC, datetime
|
from datetime import UTC, datetime
|
||||||
@ -36,6 +37,8 @@ from extensions.ext_database import db
|
|||||||
from models.enums import CreatorUserRole
|
from models.enums import CreatorUserRole
|
||||||
from models.model import Message, MessageFile
|
from models.model import Message, MessageFile
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class ToolEngine:
|
class ToolEngine:
|
||||||
"""
|
"""
|
||||||
@ -123,25 +126,31 @@ class ToolEngine:
|
|||||||
# transform tool invoke message to get LLM friendly message
|
# transform tool invoke message to get LLM friendly message
|
||||||
return plain_text, message_files, meta
|
return plain_text, message_files, meta
|
||||||
except ToolProviderCredentialValidationError as e:
|
except ToolProviderCredentialValidationError as e:
|
||||||
|
logger.error(e, exc_info=True)
|
||||||
error_response = "Please check your tool provider credentials"
|
error_response = "Please check your tool provider credentials"
|
||||||
agent_tool_callback.on_tool_error(e)
|
agent_tool_callback.on_tool_error(e)
|
||||||
except (ToolNotFoundError, ToolNotSupportedError, ToolProviderNotFoundError) as e:
|
except (ToolNotFoundError, ToolNotSupportedError, ToolProviderNotFoundError) as e:
|
||||||
error_response = f"there is not a tool named {tool.entity.identity.name}"
|
error_response = f"there is not a tool named {tool.entity.identity.name}"
|
||||||
|
logger.error(e, exc_info=True)
|
||||||
agent_tool_callback.on_tool_error(e)
|
agent_tool_callback.on_tool_error(e)
|
||||||
except ToolParameterValidationError as e:
|
except ToolParameterValidationError as e:
|
||||||
error_response = f"tool parameters validation error: {e}, please check your tool parameters"
|
error_response = f"tool parameters validation error: {e}, please check your tool parameters"
|
||||||
agent_tool_callback.on_tool_error(e)
|
agent_tool_callback.on_tool_error(e)
|
||||||
|
logger.error(e, exc_info=True)
|
||||||
except ToolInvokeError as e:
|
except ToolInvokeError as e:
|
||||||
error_response = f"tool invoke error: {e}"
|
error_response = f"tool invoke error: {e}"
|
||||||
agent_tool_callback.on_tool_error(e)
|
agent_tool_callback.on_tool_error(e)
|
||||||
|
logger.error(e, exc_info=True)
|
||||||
except ToolEngineInvokeError as e:
|
except ToolEngineInvokeError as e:
|
||||||
meta = e.meta
|
meta = e.meta
|
||||||
error_response = f"tool invoke error: {meta.error}"
|
error_response = f"tool invoke error: {meta.error}"
|
||||||
agent_tool_callback.on_tool_error(e)
|
agent_tool_callback.on_tool_error(e)
|
||||||
|
logger.error(e, exc_info=True)
|
||||||
return error_response, [], meta
|
return error_response, [], meta
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_response = f"unknown error: {e}"
|
error_response = f"unknown error: {e}"
|
||||||
agent_tool_callback.on_tool_error(e)
|
agent_tool_callback.on_tool_error(e)
|
||||||
|
logger.error(e, exc_info=True)
|
||||||
|
|
||||||
return error_response, [], ToolInvokeMeta.error_instance(error_response)
|
return error_response, [], ToolInvokeMeta.error_instance(error_response)
|
||||||
|
|
||||||
|
|||||||
@ -20,7 +20,6 @@ from core.tools.entities.tool_entities import (
|
|||||||
)
|
)
|
||||||
from core.tools.errors import ToolInvokeError
|
from core.tools.errors import ToolInvokeError
|
||||||
from factories.file_factory import build_from_mapping
|
from factories.file_factory import build_from_mapping
|
||||||
from libs.login import current_user
|
|
||||||
from models import Account, Tenant
|
from models import Account, Tenant
|
||||||
from models.model import App, EndUser
|
from models.model import App, EndUser
|
||||||
from models.workflow import Workflow
|
from models.workflow import Workflow
|
||||||
@ -28,21 +27,6 @@ from models.workflow import Workflow
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def _try_resolve_user_from_request() -> Account | EndUser | None:
|
|
||||||
"""
|
|
||||||
Try to resolve user from Flask request context.
|
|
||||||
|
|
||||||
Returns None if not in a request context or if user is not available.
|
|
||||||
"""
|
|
||||||
# Note: `current_user` is a LocalProxy. Never compare it with None directly.
|
|
||||||
# Use _get_current_object() to dereference the proxy
|
|
||||||
user = getattr(current_user, "_get_current_object", lambda: current_user)()
|
|
||||||
# Check if we got a valid user object
|
|
||||||
if user is not None and hasattr(user, "id"):
|
|
||||||
return user
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
class WorkflowTool(Tool):
|
class WorkflowTool(Tool):
|
||||||
"""
|
"""
|
||||||
Workflow tool.
|
Workflow tool.
|
||||||
@ -223,12 +207,6 @@ class WorkflowTool(Tool):
|
|||||||
Returns:
|
Returns:
|
||||||
Account | EndUser | None: The resolved user object, or None if resolution fails.
|
Account | EndUser | None: The resolved user object, or None if resolution fails.
|
||||||
"""
|
"""
|
||||||
# Try to resolve user from request context first
|
|
||||||
user = _try_resolve_user_from_request()
|
|
||||||
if user is not None:
|
|
||||||
return user
|
|
||||||
|
|
||||||
# Fall back to database resolution
|
|
||||||
return self._resolve_user_from_database(user_id=user_id)
|
return self._resolve_user_from_database(user_id=user_id)
|
||||||
|
|
||||||
def _resolve_user_from_database(self, user_id: str) -> Account | EndUser | None:
|
def _resolve_user_from_database(self, user_id: str) -> Account | EndUser | None:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user