Class: NavbarAccountController
- Inherits:
-
ApplicationController
- Object
- ActionController::Base
- ApplicationController
- NavbarAccountController
- 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
-
#check_email ⇒ void
Checks if an email or username exists and renders appropriate auth or registration options.
-
#send_username_reminder ⇒ void
Sends username reminders to the provided email address for multiple matching accounts.
-
#show ⇒ void
Renders the navbar account panel for the current user.
Methods included from Controllers::RequireTurboFrame
require_in_pane_tab_frames, require_turbo_frame
Methods included from Controllers::TurboFrameErrorHandling
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
Methods included from Controllers::SubdomainDetection
#is_crm_request?, #is_www_request?, #json_request?
Methods included from Controllers::TurboSafeRedirect
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_email ⇒ void
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_reminder ⇒ void
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 |
#show ⇒ void
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 |