2022-06-03 08:09:47 -06:00
|
|
|
import logging
|
|
|
|
|
|
|
|
|
|
from django.conf import settings
|
|
|
|
|
from django.shortcuts import resolve_url
|
2023-10-27 15:45:00 -03:00
|
|
|
from django.utils.encoding import force_str
|
2022-06-03 08:09:47 -06:00
|
|
|
from django.utils.functional import Promise
|
|
|
|
|
from social_django.strategy import DjangoStrategy
|
|
|
|
|
|
|
|
|
|
from apps.base.utils import live_settings
|
2022-07-22 10:02:00 -06:00
|
|
|
from common.api_helpers.utils import create_engine_url
|
2022-06-03 08:09:47 -06:00
|
|
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class LiveSettingDjangoStrategy(DjangoStrategy):
|
|
|
|
|
"""
|
|
|
|
|
This strategy is used for social auth.
|
|
|
|
|
|
|
|
|
|
It allows to give aliases to original social auth settings and take them from live settings by these aliases.
|
|
|
|
|
Originally it was introduced for onprem to make names of social auth settings more obvious for users.
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
def get_setting(self, name):
|
|
|
|
|
name_to_live_setting_map = settings.SOCIAL_AUTH_SETTING_NAME_TO_LIVE_SETTING_NAME
|
|
|
|
|
if name in name_to_live_setting_map:
|
|
|
|
|
value = getattr(live_settings, name_to_live_setting_map[name])
|
|
|
|
|
else:
|
|
|
|
|
value = getattr(settings, name)
|
|
|
|
|
# Force text on URL named settings that are instance of Promise
|
|
|
|
|
if name.endswith("_URL"):
|
|
|
|
|
if isinstance(value, Promise):
|
2023-10-27 15:45:00 -03:00
|
|
|
value = force_str(value)
|
2022-06-03 08:09:47 -06:00
|
|
|
value = resolve_url(value)
|
|
|
|
|
return value
|
|
|
|
|
|
|
|
|
|
def build_absolute_uri(self, path=None):
|
|
|
|
|
"""
|
2022-06-13 15:33:56 +03:00
|
|
|
Overridden DjangoStrategy's method to substitute and force the host value from ENV
|
2022-06-03 08:09:47 -06:00
|
|
|
"""
|
2025-04-21 14:23:37 -03:00
|
|
|
if (
|
|
|
|
|
settings.MATTERMOST_LOGIN_RETURN_REDIRECT_HOST is not None
|
|
|
|
|
and path is not None
|
|
|
|
|
and path == "/api/internal/v1/complete/mattermost-login/"
|
|
|
|
|
):
|
|
|
|
|
return create_engine_url(path, override_base=settings.MATTERMOST_LOGIN_RETURN_REDIRECT_HOST)
|
2022-06-13 15:33:56 +03:00
|
|
|
if live_settings.SLACK_INSTALL_RETURN_REDIRECT_HOST is not None and path is not None:
|
2022-07-22 10:02:00 -06:00
|
|
|
return create_engine_url(path, override_base=live_settings.SLACK_INSTALL_RETURN_REDIRECT_HOST)
|
2022-06-03 08:09:47 -06:00
|
|
|
if self.request:
|
|
|
|
|
return self.request.build_absolute_uri(path)
|
|
|
|
|
else:
|
|
|
|
|
return path
|