def get_react_config(context): if 'request' in context: user = getattr(context['request'], 'user', None) or AnonymousUser() messages = get_messages(context['request']) try: is_superuser = context['request'].is_superuser() except AttributeError: is_superuser = False else: user = None messages = [] is_superuser = False if user: user = extract_lazy_object(user) enabled_features = [] if features.has('organizations:create', actor=user): enabled_features.append('organizations:create') if auth.has_user_registration(): enabled_features.append('auth:register') version_info = _get_version_info() needs_upgrade = False if is_superuser: needs_upgrade = _needs_upgrade() context = { 'singleOrganization': settings.SENTRY_SINGLE_ORGANIZATION, 'supportEmail': get_support_mail(), 'urlPrefix': options.get('system.url-prefix'), 'version': version_info, 'features': enabled_features, 'mediaUrl': get_asset_url('sentry', ''), 'needsUpgrade': needs_upgrade, 'dsn': _get_public_dsn(), 'statuspage': _get_statuspage(), 'messages': [{ 'message': msg.message, 'level': msg.tags, } for msg in messages], 'isOnPremise': settings.SENTRY_ONPREMISE, 'invitesEnabled': settings.SENTRY_ENABLE_INVITES, 'gravatarBaseUrl': settings.SENTRY_GRAVATAR_BASE_URL, } if user and user.is_authenticated(): context.update({ 'isAuthenticated': True, 'user': serialize(user, user), }) context['user']['isSuperuser'] = is_superuser else: context.update({ 'isAuthenticated': False, 'user': None, }) return json.dumps_htmlsafe(context)
def get_client_config(request=None): """ Provides initial bootstrap data needed to boot the frontend application. """ if request is not None: user = getattr(request, "user", None) or AnonymousUser() messages = get_messages(request) session = getattr(request, "session", None) is_superuser = is_active_superuser(request) language_code = getattr(request, "LANGUAGE_CODE", "en") # User identity is used by the sentry SDK user_identity = {"ip_address": request.META["REMOTE_ADDR"]} if user and user.is_authenticated(): user_identity.update({"email": user.email, "id": user.id}) if user.name: user_identity["name"] = user.name else: user = None user_identity = {} messages = [] is_superuser = False language_code = "en" enabled_features = [] if features.has("organizations:create", actor=user): enabled_features.append("organizations:create") if auth.has_user_registration(): enabled_features.append("auth:register") version_info = _get_version_info() needs_upgrade = False if is_superuser: needs_upgrade = _needs_upgrade() context = { "singleOrganization": settings.SENTRY_SINGLE_ORGANIZATION, "supportEmail": get_support_mail(), "urlPrefix": options.get("system.url-prefix"), "version": version_info, "features": enabled_features, "distPrefix": get_asset_url("sentry", "dist/"), "needsUpgrade": needs_upgrade, "dsn": _get_public_dsn(), "statuspage": _get_statuspage(), "messages": [{ "message": msg.message, "level": msg.tags } for msg in messages], "isOnPremise": settings.SENTRY_ONPREMISE, "invitesEnabled": settings.SENTRY_ENABLE_INVITES, "gravatarBaseUrl": settings.SENTRY_GRAVATAR_BASE_URL, "termsUrl": settings.TERMS_URL, "privacyUrl": settings.PRIVACY_URL, # Note `lastOrganization` should not be expected to update throughout frontend app lifecycle # It should only be used on a fresh browser nav to a path where an # organization is not in context "lastOrganization": session["activeorg"] if session and "activeorg" in session else None, "languageCode": language_code, "userIdentity": user_identity, "csrfCookieName": settings.CSRF_COOKIE_NAME, "sentryConfig": { "dsn": _get_public_dsn(), "release": version_info["build"], "whitelistUrls": list(settings.ALLOWED_HOSTS), }, } if user and user.is_authenticated(): context.update({ "isAuthenticated": True, "user": serialize(user, user, DetailedUserSerializer()) }) context["user"]["isSuperuser"] = is_superuser else: context.update({"isAuthenticated": False, "user": None}) return context
def get_react_config(context): if 'request' in context: user = getattr(context['request'], 'user', None) or AnonymousUser() messages = get_messages(context['request']) try: is_superuser = context['request'].is_superuser() except AttributeError: is_superuser = False else: user = None messages = [] is_superuser = False if user: user = extract_lazy_object(user) is_superuser = user.is_superuser enabled_features = [] if features.has('organizations:create', actor=user): enabled_features.append('organizations:create') if auth.has_user_registration(): enabled_features.append('auth:register') if features.has('user:assistant', actor=user): enabled_features.append('assistant') version_info = _get_version_info() needs_upgrade = False if is_superuser: needs_upgrade = _needs_upgrade() context = { 'singleOrganization': settings.SENTRY_SINGLE_ORGANIZATION, 'supportEmail': get_support_mail(), 'urlPrefix': options.get('system.url-prefix'), 'version': version_info, 'features': enabled_features, 'mediaUrl': get_asset_url('sentry', ''), 'needsUpgrade': needs_upgrade, 'dsn': _get_public_dsn(), 'statuspage': _get_statuspage(), 'messages': [{ 'message': msg.message, 'level': msg.tags, } for msg in messages], 'isOnPremise': settings.SENTRY_ONPREMISE, 'invitesEnabled': settings.SENTRY_ENABLE_INVITES, 'gravatarBaseUrl': settings.SENTRY_GRAVATAR_BASE_URL, 'termsUrl': settings.TERMS_URL, 'privacyUrl': settings.PRIVACY_URL, } if user and user.is_authenticated(): context.update({ 'isAuthenticated': True, 'user': serialize(user, user), }) context['user']['isSuperuser'] = is_superuser else: context.update({ 'isAuthenticated': False, 'user': None, }) return json.dumps_htmlsafe(context)
def get_client_config(request=None): """ Provides initial bootstrap data needed to boot the frontend application. """ if request is not None: user = getattr(request, "user", None) or AnonymousUser() messages = get_messages(request) session = getattr(request, "session", None) is_superuser = is_active_superuser(request) language_code = getattr(request, "LANGUAGE_CODE", "en") # User identity is used by the sentry SDK user_identity = {"ip_address": request.META["REMOTE_ADDR"]} if user and user.is_authenticated(): user_identity.update({ "email": user.email, "id": user.id, "isStaff": user.is_staff }) if user.name: user_identity["name"] = user.name else: user = None user_identity = {} messages = [] session = None is_superuser = False language_code = "en" enabled_features = [] if features.has("organizations:create", actor=user): enabled_features.append("organizations:create") if auth.has_user_registration(): enabled_features.append("auth:register") version_info = _get_version_info() needs_upgrade = False if is_superuser: needs_upgrade = _needs_upgrade() public_dsn = _get_public_dsn() context = { "singleOrganization": settings.SENTRY_SINGLE_ORGANIZATION, "supportEmail": get_support_mail(), "urlPrefix": options.get("system.url-prefix"), "version": version_info, "features": enabled_features, "distPrefix": get_asset_url("sentry", "dist/"), "needsUpgrade": needs_upgrade, "dsn": public_dsn, "dsn_requests": _get_dsn_requests(), "statuspage": _get_statuspage(), "messages": [{ "message": msg.message, "level": msg.tags } for msg in messages], "apmSampling": float(settings.SENTRY_FRONTEND_APM_SAMPLING or 0), "isOnPremise": settings.SENTRY_ONPREMISE, "invitesEnabled": settings.SENTRY_ENABLE_INVITES, "gravatarBaseUrl": settings.SENTRY_GRAVATAR_BASE_URL, "termsUrl": settings.TERMS_URL, "privacyUrl": settings.PRIVACY_URL, # Note `lastOrganization` should not be expected to update throughout frontend app lifecycle # It should only be used on a fresh browser nav to a path where an # organization is not in context "lastOrganization": session["activeorg"] if session and "activeorg" in session else None, "languageCode": language_code, "userIdentity": user_identity, "csrfCookieName": settings.CSRF_COOKIE_NAME, "sentryConfig": { "dsn": public_dsn, "release": settings.SENTRY_SDK_CONFIG["release"], "environment": settings.SENTRY_SDK_CONFIG["environment"], # By default `ALLOWED_HOSTS` is [*], however the JS SDK does not support globbing "whitelistUrls": (settings.SENTRY_FRONTEND_WHITELIST_URLS if settings.SENTRY_FRONTEND_WHITELIST_URLS else list("" if settings.ALLOWED_HOSTS == ["*"] else settings.ALLOWED_HOSTS)), }, } if user and user.is_authenticated(): context.update({ "isAuthenticated": True, "user": serialize(user, user, DetailedUserSerializer()) }) if request.user.is_superuser: # Note: This intentionally does not use the "active" superuser flag as # the frontend should only ever use this flag as a hint that the user can be a superuser # the API will always need to check for active superuser. # # This is needed in the case where you access a different org and get denied, but the UI # can open the sudo dialog if you are an "inactive" superuser context["user"]["isSuperuser"] = request.user.is_superuser else: context.update({"isAuthenticated": False, "user": None}) return context
def get_react_config(context): if 'request' in context: request = context['request'] user = getattr(request, 'user', None) or AnonymousUser() messages = get_messages(request) session = getattr(request, 'session', None) is_superuser = is_active_superuser(request) else: user = None messages = [] is_superuser = False enabled_features = [] if features.has('organizations:create', actor=user): enabled_features.append('organizations:create') if auth.has_user_registration(): enabled_features.append('auth:register') version_info = _get_version_info() needs_upgrade = False if is_superuser: needs_upgrade = _needs_upgrade() context = { 'singleOrganization': settings.SENTRY_SINGLE_ORGANIZATION, 'supportEmail': get_support_mail(), 'urlPrefix': options.get('system.url-prefix'), 'version': version_info, 'features': enabled_features, 'mediaUrl': get_asset_url('sentry', ''), 'needsUpgrade': needs_upgrade, 'dsn': get_public_dsn(), 'statuspage': _get_statuspage(), 'messages': [{ 'message': msg.message, 'level': msg.tags, } for msg in messages], 'isOnPremise': settings.SENTRY_ONPREMISE, 'invitesEnabled': settings.SENTRY_ENABLE_INVITES, 'gravatarBaseUrl': settings.SENTRY_GRAVATAR_BASE_URL, 'termsUrl': settings.TERMS_URL, 'privacyUrl': settings.PRIVACY_URL, # Note `lastOrganization` should not be expected to update throughout frontend app lifecycle # It should only be used on a fresh browser nav to a path where an # organization is not in context 'lastOrganization': session['activeorg'] if session and 'activeorg' in session else None, } if user and user.is_authenticated(): context.update({ 'isAuthenticated': True, 'user': serialize(user, user, DetailedUserSerializer()), }) context['user']['isSuperuser'] = is_superuser else: context.update({ 'isAuthenticated': False, 'user': None, }) return json.dumps_htmlsafe(context)
def get_react_config(context): if 'request' in context: request = context['request'] user = getattr(request, 'user', None) or AnonymousUser() messages = get_messages(request) session = getattr(request, 'session', None) is_superuser = is_active_superuser(request) language_code = getattr(request, 'LANGUAGE_CODE', 'en') else: user = None messages = [] is_superuser = False language_code = 'en' # User identity is used by the sentry SDK if request and user: user_identity = {'ip_address': request.META['REMOTE_ADDR']} if user and user.is_authenticated(): user_identity.update({ 'email': user.email, 'id': user.id, }) if user.name: user_identity['name'] = user.name else: user_identity = {} enabled_features = [] if features.has('organizations:create', actor=user): enabled_features.append('organizations:create') if auth.has_user_registration(): enabled_features.append('auth:register') version_info = _get_version_info() needs_upgrade = False if is_superuser: needs_upgrade = _needs_upgrade() context = { 'singleOrganization': settings.SENTRY_SINGLE_ORGANIZATION, 'supportEmail': get_support_mail(), 'urlPrefix': options.get('system.url-prefix'), 'version': version_info, 'features': enabled_features, 'distPrefix': get_asset_url('sentry', 'dist/'), 'needsUpgrade': needs_upgrade, 'dsn': _get_public_dsn(), 'statuspage': _get_statuspage(), 'messages': [{ 'message': msg.message, 'level': msg.tags, } for msg in messages], 'isOnPremise': settings.SENTRY_ONPREMISE, 'invitesEnabled': settings.SENTRY_ENABLE_INVITES, 'gravatarBaseUrl': settings.SENTRY_GRAVATAR_BASE_URL, 'termsUrl': settings.TERMS_URL, 'privacyUrl': settings.PRIVACY_URL, # Note `lastOrganization` should not be expected to update throughout frontend app lifecycle # It should only be used on a fresh browser nav to a path where an # organization is not in context 'lastOrganization': session['activeorg'] if session and 'activeorg' in session else None, 'languageCode': language_code, 'userIdentity': user_identity, 'csrfCookieName': settings.CSRF_COOKIE_NAME, 'sentryConfig': { 'dsn': _get_public_dsn(), 'release': version_info['build'], 'whitelistUrls': list(settings.ALLOWED_HOSTS), }, } if user and user.is_authenticated(): context.update({ 'isAuthenticated': True, 'user': serialize(user, user, DetailedUserSerializer()), }) context['user']['isSuperuser'] = is_superuser else: context.update({ 'isAuthenticated': False, 'user': None, }) return json.dumps_htmlsafe(context)
def get_react_config(context): if 'request' in context: user = getattr(context['request'], 'user', None) or AnonymousUser() messages = get_messages(context['request']) session = getattr(context['request'], 'session', None) try: is_superuser = context['request'].is_superuser() except AttributeError: is_superuser = False else: user = None messages = [] is_superuser = False if user: user = extract_lazy_object(user) is_superuser = user.is_superuser enabled_features = [] if features.has('organizations:create', actor=user): enabled_features.append('organizations:create') if auth.has_user_registration(): enabled_features.append('auth:register') version_info = _get_version_info() needs_upgrade = False if is_superuser: needs_upgrade = _needs_upgrade() context = { 'singleOrganization': settings.SENTRY_SINGLE_ORGANIZATION, 'supportEmail': get_support_mail(), 'urlPrefix': options.get('system.url-prefix'), 'version': version_info, 'features': enabled_features, 'mediaUrl': get_asset_url('sentry', ''), 'needsUpgrade': needs_upgrade, 'dsn': get_public_dsn(), 'statuspage': _get_statuspage(), 'messages': [{ 'message': msg.message, 'level': msg.tags, } for msg in messages], 'isOnPremise': settings.SENTRY_ONPREMISE, 'invitesEnabled': settings.SENTRY_ENABLE_INVITES, 'gravatarBaseUrl': settings.SENTRY_GRAVATAR_BASE_URL, 'termsUrl': settings.TERMS_URL, 'privacyUrl': settings.PRIVACY_URL, # Note `lastOrganization` should not be expected to update throughout frontend app lifecycle # It should only be used on a fresh browser nav to a path where an # organization is not in context 'lastOrganization': session['activeorg'] if session and 'activeorg' in session else None, } if user and user.is_authenticated(): context.update({ 'isAuthenticated': True, 'user': serialize(user, user, DetailedUserSerializer()), }) context['user']['isSuperuser'] = is_superuser else: context.update({ 'isAuthenticated': False, 'user': None, }) return json.dumps_htmlsafe(context)