Class: NavbarAccountController

Inherits:
ApplicationController show all
Includes:
Controllers::RequireTurboFrame, Controllers::TurboFrameErrorHandling
Defined in:
app/controllers/navbar_account_controller.rb

Overview

Controller for the navbar account offcanvas panel
Handles both logged-in and logged-out states

Constant Summary

Constants included from Controllers::AnalyticsEvents

Controllers::AnalyticsEvents::MAX_QUEUED_EVENTS, Controllers::AnalyticsEvents::SESSION_KEY

Constants included from Controllers::ErrorRendering

Controllers::ErrorRendering::NON_CONTENT_PATH_PREFIXES

Instance Method Summary collapse

Methods included from Controllers::RequireTurboFrame

require_in_pane_tab_frames, require_turbo_frame

Methods included from Controllers::TurboFrameErrorHandling

turbo_frame_id

Methods inherited from ApplicationController

#account_impersonated?, #add_to_flash, #after_sign_in_path_for, #bypass_forgery_protection?, #chat_enabled?, #cloudflare_cleared?, #default_catalog, #default_url_options, #enable_turbo_frames, #find_publication, #fix_invalid_accept_header, #init_js_utils, #is_globals_call?, #layout_by_resource, #locale_store, #redirect_to, #require_employee_for_crm, #set_base_host, #set_real_ip, #set_report_errors_for, #should_render_layout?, #skip_layout_for_turbo_frame?, #stamp_impersonation_context, #tab_frame_breakout_request?, #warmlyyours_canada_ip?, #warmlyyours_ip?, #y

Methods included from Controllers::ReturnPathHandling

#check_for_return_path, #redirect_to_return_path_or_default

Methods included from Controllers::AnalyticsEvents

#consume_queued_analytics_events, #registration_lead_type, #track_event

Methods included from Controllers::DeviceDetection

#device_detector, #is_ie?

Methods included from Controllers::SubdomainDetection

#is_crm_request?, #is_www_request?, #json_request?

Methods included from Controllers::TurboSafeRedirect

#redirect_to

Methods included from Controllers::TrackingDetection

#bot_request?, #gdpr_country?, #gdpr_country_data, #prevent_bots, #set_tracking_cookie, #track_visitor?

Methods included from Controllers::AcceleratedFileSending

#send_file_accelerated, #send_upload_accelerated

Methods included from Controllers::ErrorRendering

#excp_string, #mail_to_for_error_reporting, #render_400, #render_404, #render_406, #render_410, #render_500, #render_invalid_authenticity_token, #render_ip_spoof_error, #render_unpermitted_parameters, #safe_referer_or_fallback

Methods included from Controllers::TurnstileVerification

#load_turnstile_script_tag, #turnstile_lazy_widget, #turnstile_script_tag, #turnstile_widget, #validate_turnstile!

Methods included from Controllers::CloudflareCaching

edge_cached, #edge_cached_action?, #reset_cloudflare_cache, #set_cloudflare_cache, #skip_edge_cache!, #skip_session

Methods included from Controllers::Webpackable

#preload_webpack_fonts, #webpack_css_include, #webpack_css_url, #webpack_js_include, #wpd_is_running?

Methods included from Controllers::Localizable

#cloudflare_country_locale, #determine_request_locale, #geocoder_locale, #guest_user_locale_check, #locale_optional_www_auth_path?, #param_locale, #set_locale, #set_request_locale, #skip_localization?, #warmlyyours_ip_locale

Methods included from Controllers::Authenticable

#access_denied, #authenticate_account, #authenticate_account!, #authenticate_account_from_login_token!, #check_is_a_manager, #check_is_a_sales_manager, #check_is_an_admin, #check_is_an_employee, #check_party, #clear_mismatched_guest_user, #create_guest_user, #credentials?, #current_or_guest_user, #current_or_guest_user_id_read_only, #current_user, #devise_mapping, #fully_logged_in?, #generate_bot_id, #guest_user, #identifiable?, #init_current_user, #initialize_guest, #load_context_user, #logging_in, #resource, #resource_name, #restrict_access_for_non_employees, #scrubbed_request_path, #user_object, #warn_on_session_guest_id_leak

Methods included from UrlsHelper

#catalog_breadcrumb_links, #catalog_link, #catalog_link_for_product_line, #catalog_link_for_sku, #cms_link, #delocalized_path, #path_to_sales_product_sku, #path_to_sales_product_sku_for_product_line, #path_to_sales_product_sku_for_product_line_slug, #product_line_from_catalog_link, #protocol_neutral_url, #sanitize_external_url, #valid_external_url?

Instance Method Details

#check_emailvoid

This method returns an undefined value.

Checks if an email or username exists and renders appropriate auth or registration options.



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'app/controllers/navbar_account_controller.rb', line 40

def check_email
  @login = params[:login]&.strip
  @devise_return_path = params[:devise_return_path]

  if @login.blank?
    render 'navbar_account/login_start'
    return
  end

  @account = Account.find_by(login: @login)

  if @account.nil? && @login.include?("@")
    email_matches = Account.where(email: @login).to_a
    if email_matches.one?
      @account = email_matches.first
    elsif email_matches.many?
      render 'navbar_account/multiple_accounts' and return
    end
  end

  if @account
    # Account exists - show auth options
    @authentications = @account.authentications.where(provider: Authentication::SUPPORTED_PROVIDERS)
    render 'navbar_account/auth_options'
  else
    # New user - show registration options
    render 'navbar_account/register_options'
  end
end

#send_username_remindervoid

This method returns an undefined value.

Sends username reminders to the provided email address for multiple matching accounts.



73
74
75
76
77
78
79
80
81
82
83
84
# File 'app/controllers/navbar_account_controller.rb', line 73

def send_username_reminder
  @login = params[:login]&.strip
  @devise_return_path = params[:devise_return_path]

  if @login.present? && @login.include?("@")
    accounts = Account.where(email: @login, disabled: false).to_a
    AccountMailer.username_reminder(@login, accounts.map(&:login)).deliver_later if accounts.many?
  end

  # Always render the same confirmation regardless of outcome (no enumeration)
  render 'navbar_account/username_reminder_sent'
end

#showvoid

This method returns an undefined value.

Renders the navbar account panel for the current user.



23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'app/controllers/navbar_account_controller.rb', line 23

def show
  # Support return path for checkout and other flows
  @devise_return_path = params[:devise_return_path]

  if @context_user
    @recent_projects = @context_user.opportunities.order(updated_at: :desc).limit(3)
    @recent_orders = @context_user.orders.order(created_at: :desc).limit(3)
    @rep = @context_user.primary_sales_rep
    render 'navbar_account/logged_in'
  else
    render 'navbar_account/login_start'
  end
end