mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 14:03:30 +00:00 
			
		
		
		
	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:
		@@ -61,6 +61,7 @@ from zerver.models import (
 | 
			
		||||
from zerver.signals import email_on_new_login
 | 
			
		||||
from zproject.backends import (
 | 
			
		||||
    AUTH_BACKEND_NAME_MAP,
 | 
			
		||||
    AppleAuthBackend,
 | 
			
		||||
    ExternalAuthDataDict,
 | 
			
		||||
    ExternalAuthResult,
 | 
			
		||||
    SAMLAuthBackend,
 | 
			
		||||
@@ -516,8 +517,13 @@ def start_social_login(request: HttpRequest, backend: str, extra_arg: Optional[s
 | 
			
		||||
            return redirect_to_config_error("saml")
 | 
			
		||||
        extra_url_params = {'idp': extra_arg}
 | 
			
		||||
 | 
			
		||||
    if backend == "apple":
 | 
			
		||||
        result = AppleAuthBackend.check_config()
 | 
			
		||||
        if result is not None:
 | 
			
		||||
            return result
 | 
			
		||||
 | 
			
		||||
    # TODO: Add AzureAD also.
 | 
			
		||||
    if backend in ["github", "google", "gitlab", "apple"]:
 | 
			
		||||
    if backend in ["github", "google", "gitlab"]:
 | 
			
		||||
        key_setting = "SOCIAL_AUTH_" + backend.upper() + "_KEY"
 | 
			
		||||
        secret_setting = "SOCIAL_AUTH_" + backend.upper() + "_SECRET"
 | 
			
		||||
        if not (getattr(settings, key_setting) and getattr(settings, secret_setting)):
 | 
			
		||||
 
 | 
			
		||||
@@ -1553,6 +1553,19 @@ class AppleAuthBackend(SocialAuthMixin, AppleIdAuth):
 | 
			
		||||
 | 
			
		||||
    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:
 | 
			
		||||
        return self.strategy.request_data().get('native_flow', False)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user