mirror of
https://github.com/lingble/chatwoot.git
synced 2025-10-30 18:47:51 +00:00
Meta announced that Graph API v17.0 will reach end-of-life on September 12, 2025, requiring migration to v18.0 or higher. Updated the default Facebook API version from v17.0 to v18.0 across configuration files in response to Meta's deprecation notice.
96 lines
3.1 KiB
Ruby
96 lines
3.1 KiB
Ruby
class DashboardController < ActionController::Base
|
|
include SwitchLocale
|
|
|
|
before_action :set_application_pack
|
|
before_action :set_global_config
|
|
before_action :set_dashboard_scripts
|
|
around_action :switch_locale
|
|
before_action :ensure_installation_onboarding, only: [:index]
|
|
before_action :render_hc_if_custom_domain, only: [:index]
|
|
before_action :ensure_html_format
|
|
layout 'vueapp'
|
|
|
|
def index; end
|
|
|
|
private
|
|
|
|
def ensure_html_format
|
|
render json: { error: 'Please use API routes instead of dashboard routes for JSON requests' }, status: :not_acceptable if request.format.json?
|
|
end
|
|
|
|
def set_global_config
|
|
@global_config = GlobalConfig.get(
|
|
'LOGO', 'LOGO_DARK', 'LOGO_THUMBNAIL',
|
|
'INSTALLATION_NAME',
|
|
'WIDGET_BRAND_URL', 'TERMS_URL',
|
|
'BRAND_URL', 'BRAND_NAME',
|
|
'PRIVACY_URL',
|
|
'DISPLAY_MANIFEST',
|
|
'CREATE_NEW_ACCOUNT_FROM_DASHBOARD',
|
|
'CHATWOOT_INBOX_TOKEN',
|
|
'API_CHANNEL_NAME',
|
|
'API_CHANNEL_THUMBNAIL',
|
|
'ANALYTICS_TOKEN',
|
|
'DIRECT_UPLOADS_ENABLED',
|
|
'HCAPTCHA_SITE_KEY',
|
|
'LOGOUT_REDIRECT_LINK',
|
|
'DISABLE_USER_PROFILE_UPDATE',
|
|
'DEPLOYMENT_ENV',
|
|
'INSTALLATION_PRICING_PLAN'
|
|
).merge(app_config)
|
|
end
|
|
|
|
def set_dashboard_scripts
|
|
@dashboard_scripts = sensitive_path? ? nil : GlobalConfig.get_value('DASHBOARD_SCRIPTS')
|
|
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', ''),
|
|
INSTAGRAM_APP_ID: GlobalConfigService.load('INSTAGRAM_APP_ID', ''),
|
|
FACEBOOK_API_VERSION: GlobalConfigService.load('FACEBOOK_API_VERSION', 'v18.0'),
|
|
WHATSAPP_APP_ID: GlobalConfigService.load('WHATSAPP_APP_ID', ''),
|
|
WHATSAPP_CONFIGURATION_ID: GlobalConfigService.load('WHATSAPP_CONFIGURATION_ID', ''),
|
|
IS_ENTERPRISE: ChatwootApp.enterprise?,
|
|
AZURE_APP_ID: GlobalConfigService.load('AZURE_APP_ID', ''),
|
|
GIT_SHA: GIT_HASH
|
|
}
|
|
end
|
|
|
|
def set_application_pack
|
|
@application_pack = if request.path.include?('/auth') || request.path.include?('/login')
|
|
'v3app'
|
|
else
|
|
'dashboard'
|
|
end
|
|
end
|
|
|
|
def sensitive_path?
|
|
# dont load dashboard scripts on sensitive paths like password reset
|
|
sensitive_paths = [edit_user_password_path].freeze
|
|
|
|
# remove app prefix
|
|
current_path = request.path.gsub(%r{^/app}, '')
|
|
|
|
sensitive_paths.include?(current_path)
|
|
end
|
|
end
|