class DashboardController < ActionController::Base include SwitchLocale before_action :set_global_config around_action :switch_locale before_action :ensure_installation_onboarding, only: [:index] before_action :render_hc_if_custom_domain, only: [:index] layout 'vueapp' def index; end private def set_global_config @global_config = GlobalConfig.get( 'LOGO', 'LOGO_THUMBNAIL', 'INSTALLATION_NAME', 'WIDGET_BRAND_URL', 'TERMS_URL', 'PRIVACY_URL', 'DISPLAY_MANIFEST', 'CREATE_NEW_ACCOUNT_FROM_DASHBOARD', 'CHATWOOT_INBOX_TOKEN', 'API_CHANNEL_NAME', 'API_CHANNEL_THUMBNAIL', 'ANALYTICS_TOKEN', 'ANALYTICS_HOST', 'DIRECT_UPLOADS_ENABLED', 'HCAPTCHA_SITE_KEY', 'LOGOUT_REDIRECT_LINK', 'DISABLE_USER_PROFILE_UPDATE', 'DEPLOYMENT_ENV', 'CSML_EDITOR_HOST' ).merge(app_config) end def ensure_installation_onboarding redirect_to '/installation/onboarding' if ::Redis::Alfred.get(::Redis::Alfred::CHATWOOT_INSTALLATION_ONBOARDING) end def render_hc_if_custom_domain domain = request.host return if domain == URI.parse(ENV.fetch('FRONTEND_URL', '')).host @portal = Portal.find_by(custom_domain: domain) return unless @portal @locale = @portal.default_locale render 'public/api/v1/portals/show', layout: 'portal', portal: @portal and return end def app_config { APP_VERSION: Chatwoot.config[:version], VAPID_PUBLIC_KEY: VapidService.public_key, ENABLE_ACCOUNT_SIGNUP: GlobalConfigService.load('ENABLE_ACCOUNT_SIGNUP', 'false'), FB_APP_ID: GlobalConfigService.load('FB_APP_ID', ''), FACEBOOK_API_VERSION: 'v14.0', IS_ENTERPRISE: ChatwootApp.enterprise? } end end