mirror of https://github.com/zulip/zulip.git
decorator: Refactor more code into validate_api_key.
This commit is contained in:
parent
5d2d939310
commit
b46af40bd3
|
@ -193,12 +193,19 @@ def validate_api_key(request, role, api_key, is_webhook=False):
|
||||||
|
|
||||||
if not check_subdomain(get_subdomain(request), ""):
|
if not check_subdomain(get_subdomain(request), ""):
|
||||||
raise JsonableError(_("This API key only works on the root subdomain"))
|
raise JsonableError(_("This API key only works on the root subdomain"))
|
||||||
|
remote_server._email = "zulip-server:" + role
|
||||||
|
remote_server.rate_limits = ""
|
||||||
|
process_client(request, remote_server, remote_server_request=True)
|
||||||
return remote_server
|
return remote_server
|
||||||
|
|
||||||
user_profile = access_user_by_api_key(request, api_key, email=role)
|
user_profile = access_user_by_api_key(request, api_key, email=role)
|
||||||
if user_profile.is_incoming_webhook and not is_webhook:
|
if user_profile.is_incoming_webhook and not is_webhook:
|
||||||
raise JsonableError(_("This API is not available to incoming webhook bots."))
|
raise JsonableError(_("This API is not available to incoming webhook bots."))
|
||||||
|
|
||||||
|
request.user = user_profile
|
||||||
|
request._email = user_profile.email
|
||||||
|
process_client(request, user_profile)
|
||||||
|
|
||||||
return user_profile
|
return user_profile
|
||||||
|
|
||||||
def access_user_by_api_key(request, api_key, email=None):
|
def access_user_by_api_key(request, api_key, email=None):
|
||||||
|
@ -411,9 +418,6 @@ def authenticated_api_view(is_webhook=False):
|
||||||
if api_key is None:
|
if api_key is None:
|
||||||
raise RequestVariableMissingError("api_key")
|
raise RequestVariableMissingError("api_key")
|
||||||
user_profile = validate_api_key(request, email, api_key, is_webhook)
|
user_profile = validate_api_key(request, email, api_key, is_webhook)
|
||||||
request.user = user_profile
|
|
||||||
request._email = user_profile.email
|
|
||||||
process_client(request, user_profile)
|
|
||||||
# Apply rate limiting
|
# Apply rate limiting
|
||||||
limited_func = rate_limit()(view_func)
|
limited_func = rate_limit()(view_func)
|
||||||
return limited_func(request, user_profile, *args, **kwargs)
|
return limited_func(request, user_profile, *args, **kwargs)
|
||||||
|
@ -450,16 +454,6 @@ def authenticated_rest_api_view(is_webhook=False):
|
||||||
profile = validate_api_key(request, role, api_key, is_webhook)
|
profile = validate_api_key(request, role, api_key, is_webhook)
|
||||||
except JsonableError as e:
|
except JsonableError as e:
|
||||||
return json_unauthorized(e.msg)
|
return json_unauthorized(e.msg)
|
||||||
request.user = profile
|
|
||||||
if is_remote_server(role):
|
|
||||||
assert isinstance(profile, RemoteZulipServer)
|
|
||||||
request._email = "zulip-server:" + role
|
|
||||||
profile.rate_limits = ""
|
|
||||||
process_client(request, profile, remote_server_request=True)
|
|
||||||
else:
|
|
||||||
assert isinstance(profile, UserProfile)
|
|
||||||
request._email = profile.email
|
|
||||||
process_client(request, profile)
|
|
||||||
# Apply rate limiting
|
# Apply rate limiting
|
||||||
return rate_limit()(view_func)(request, profile, *args, **kwargs)
|
return rate_limit()(view_func)(request, profile, *args, **kwargs)
|
||||||
return _wrapped_func_arguments
|
return _wrapped_func_arguments
|
||||||
|
|
Loading…
Reference in New Issue