auth: Add check_config for apple auth.

Apple has some other obligatory settings other than key and secret.
To handle that this commit adds a function check_config() similar
to that of SAML.
This commit is contained in:
Dinesh 2020-07-04 17:09:01 +00:00 committed by Tim Abbott
parent ea225bb9b8
commit 9583554d44
2 changed files with 20 additions and 1 deletions

View File

@ -61,6 +61,7 @@ from zerver.models import (
from zerver.signals import email_on_new_login from zerver.signals import email_on_new_login
from zproject.backends import ( from zproject.backends import (
AUTH_BACKEND_NAME_MAP, AUTH_BACKEND_NAME_MAP,
AppleAuthBackend,
ExternalAuthDataDict, ExternalAuthDataDict,
ExternalAuthResult, ExternalAuthResult,
SAMLAuthBackend, SAMLAuthBackend,
@ -516,8 +517,13 @@ def start_social_login(request: HttpRequest, backend: str, extra_arg: Optional[s
return redirect_to_config_error("saml") return redirect_to_config_error("saml")
extra_url_params = {'idp': extra_arg} extra_url_params = {'idp': extra_arg}
if backend == "apple":
result = AppleAuthBackend.check_config()
if result is not None:
return result
# TODO: Add AzureAD also. # TODO: Add AzureAD also.
if backend in ["github", "google", "gitlab", "apple"]: if backend in ["github", "google", "gitlab"]:
key_setting = "SOCIAL_AUTH_" + backend.upper() + "_KEY" key_setting = "SOCIAL_AUTH_" + backend.upper() + "_KEY"
secret_setting = "SOCIAL_AUTH_" + backend.upper() + "_SECRET" secret_setting = "SOCIAL_AUTH_" + backend.upper() + "_SECRET"
if not (getattr(settings, key_setting) and getattr(settings, secret_setting)): if not (getattr(settings, key_setting) and getattr(settings, secret_setting)):

View File

@ -1553,6 +1553,19 @@ class AppleAuthBackend(SocialAuthMixin, AppleIdAuth):
SCOPE_SEPARATOR = "%20" # https://github.com/python-social-auth/social-core/issues/470 SCOPE_SEPARATOR = "%20" # https://github.com/python-social-auth/social-core/issues/470
@classmethod
def check_config(cls) -> Optional[HttpResponse]:
obligatory_apple_settings_list = [
settings.SOCIAL_AUTH_APPLE_TEAM,
settings.SOCIAL_AUTH_APPLE_SERVICES_ID,
settings.SOCIAL_AUTH_APPLE_KEY,
settings.SOCIAL_AUTH_APPLE_SECRET,
]
if any(not setting for setting in obligatory_apple_settings_list):
return redirect_to_config_error("apple")
return None
def is_native_flow(self) -> bool: def is_native_flow(self) -> bool:
return self.strategy.request_data().get('native_flow', False) return self.strategy.request_data().get('native_flow', False)