mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 05:23:35 +00:00
rest: Extract remote_server_path from rest_path.
This allows us to separate the zilencer paths from other JSON paths, with explicit type annotation expecting `RemoteZulipServer` as the second parameter of the handler using authenticated_remote_server_view. The test case is also updated to remove a test for a situation that no longer occurs anymore, since we don't perform subdomain checks on remote servers. Signed-off-by: Zixuan James Li <p359101898@gmail.com>
This commit is contained in:
committed by
Tim Abbott
parent
dd2fd8edda
commit
5c49e4ba06
@@ -62,9 +62,6 @@ from zerver.lib.users import is_2fa_verified
|
||||
from zerver.lib.utils import has_api_key_format, statsd
|
||||
from zerver.models import UserProfile, get_client, get_user_profile_by_api_key
|
||||
|
||||
if settings.ZILENCER_ENABLED:
|
||||
from zilencer.models import RemoteZulipServer
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from django.http.request import _ImmutableQueryDict
|
||||
|
||||
@@ -242,18 +239,12 @@ def validate_api_key(
|
||||
api_key: str,
|
||||
allow_webhook_access: bool = False,
|
||||
client_name: Optional[str] = None,
|
||||
) -> Union[UserProfile, "RemoteZulipServer"]:
|
||||
) -> UserProfile:
|
||||
# Remove whitespace to protect users from trivial errors.
|
||||
api_key = api_key.strip()
|
||||
if role is not None:
|
||||
role = role.strip()
|
||||
|
||||
# If `role` doesn't look like an email, it might be a uuid.
|
||||
if settings.ZILENCER_ENABLED and role is not None and "@" not in role:
|
||||
from zilencer.auth import validate_remote_server
|
||||
|
||||
return validate_remote_server(request, role, api_key)
|
||||
|
||||
user_profile = access_user_by_api_key(request, api_key, email=role)
|
||||
if user_profile.is_incoming_webhook and not allow_webhook_access:
|
||||
raise JsonableError(_("This API is not available to incoming webhook bots."))
|
||||
@@ -749,7 +740,6 @@ def authenticated_rest_api_view(
|
||||
|
||||
# Now we try to do authentication or die
|
||||
try:
|
||||
# profile is a Union[UserProfile, RemoteZulipServer]
|
||||
profile = validate_api_key(
|
||||
request,
|
||||
role,
|
||||
|
||||
Reference in New Issue
Block a user