Class: MyAccountsController
- Inherits:
-
BasePortalController
- Object
- ActionController::Base
- ApplicationController
- BasePortalController
- MyAccountsController
- Defined in:
- app/controllers/my_accounts_controller.rb
Overview
Customer-portal account management: dashboard, profile/billing-address
edits, social-login linking, password change, and account deletion.
Blocked from destructive/identity-linking actions while an employee is
masquerading as the customer.
Constant Summary
Constants included from Controllers::MasqueradeGuarded
Controllers::MasqueradeGuarded::DEFAULT_BLOCK_MESSAGE
Constants included from Controllers::DeviseReturnable
Controllers::DeviseReturnable::ALLOWED_REDIRECT_HOSTS
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
-
#change_password ⇒ void
Redirects to Devise's registration edit form (password change).
-
#destroy ⇒ void
Deletes the customer's account (blocked while masquerading).
-
#edit ⇒ void
Loads the profile-edit form.
-
#edit_billing_address ⇒ void
Loads the billing-address edit form.
-
#manage_users ⇒ void
Renders the sub-user management page.
-
#new ⇒ void
Redirects to the dashboard if the customer already has a valid account (there's no separate "new account" form).
-
#omniauth_register ⇒ void
Starts the OAuth flow to link a social-login identity to the account (blocked while masquerading).
-
#pending ⇒ void
Shows the "confirm your email" pending page.
-
#settings ⇒ void
Renders the account settings menu.
-
#show ⇒ void
Renders the account dashboard (orders, active projects).
-
#social_logins ⇒ void
Renders the linked-social-logins management page.
-
#update ⇒ void
Updates the customer's profile.
-
#update_billing_address ⇒ void
Updates the customer's billing address.
Methods included from MyAccountHelper
#account_nav_active?, #can_list_contact_resources?, #is_current_user_or_customer_login_email?, #setup_contact, #setup_customer_account, #sorted_contact_points
Methods included from Controllers::MasqueradeGuarded
block_while_masquerading, #masquerade_blocks?
Methods included from Controllers::DeviseReturnable
#check_for_devise_return_path, #devise_return_path_from_omniauth_hash, #safe_referer
Methods inherited from BasePortalController
#current_ability, #portal_party, #set_catalog, #set_webpack
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, #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
#change_password ⇒ void
This method returns an undefined value.
Redirects to Devise's registration edit form (password change).
170 171 172 |
# File 'app/controllers/my_accounts_controller.rb', line 170 def change_password redirect_to edit_account_registration_path end |
#destroy ⇒ void
This method returns an undefined value.
Deletes the customer's account (blocked while masquerading).
141 142 143 144 145 146 147 148 149 150 |
# File 'app/controllers/my_accounts_controller.rb', line 141 def destroy account = @context_user.account sign_out(account) if account.destroy flash[:info] = 'Sigh... WarmlyYours account deleted. Until we meet again...' else flash[:error] = 'Oops! Could not delete WarmlyYours account.' end redirect_to cms_link('/') end |
#edit ⇒ void
This method returns an undefined value.
Loads the profile-edit form.
68 69 70 71 72 73 74 75 76 77 78 |
# File 'app/controllers/my_accounts_controller.rb', line 68 def edit @contact_points = sorted_contact_points(@context_user.customer, begin current_account.email rescue StandardError nil end) @hide_new_address_form = true if @context_user.billing_address.nil? || @context_user.billing_address.new_record? @cancel_path = edit_my_account_path @customer = @context_user.customer @contact = @context_user.is_a?(Contact) ? @context_user : @context_user.contacts.first || @context_user.contacts.build end |
#edit_billing_address ⇒ void
This method returns an undefined value.
Loads the billing-address edit form.
83 84 85 86 87 88 89 90 91 92 |
# File 'app/controllers/my_accounts_controller.rb', line 83 def edit_billing_address @contact_points = sorted_contact_points(@context_user.customer, begin current_account.email rescue StandardError nil end) @hide_new_address_form = true if @context_user.billing_address.nil? || @context_user.billing_address.new_record? @cancel_path = edit_my_account_path @return_path = my_account_addresses_path end |
#manage_users ⇒ void
This method returns an undefined value.
Renders the sub-user management page.
182 |
# File 'app/controllers/my_accounts_controller.rb', line 182 def manage_users; end |
#new ⇒ void
This method returns an undefined value.
Redirects to the dashboard if the customer already has a valid
account (there's no separate "new account" form).
52 53 54 55 56 57 58 |
# File 'app/controllers/my_accounts_controller.rb', line 52 def new @account = @context_user.account return unless @account&.valid? flash[:info] = 'You already have an account' redirect_to my_account_path and return end |
#omniauth_register ⇒ void
This method returns an undefined value.
Starts the OAuth flow to link a social-login identity to the account
(blocked while masquerading).
156 157 158 159 160 161 162 163 164 165 |
# File 'app/controllers/my_accounts_controller.rb', line 156 def omniauth_register provider = nil provider = params[:provider].to_sym if params[:provider] if provider && Authentication::SUPPORTED_PROVIDERS.include?(provider.to_s) redirect_post delocalized_path((:account, provider, authenticity_token: form_authenticity_token, devise_return_path: )) else flash[:error] = 'Whoops! Unsupported provider.' redirect_to end end |
#pending ⇒ void
This method returns an undefined value.
Shows the "confirm your email" pending page.
131 132 133 134 135 136 |
# File 'app/controllers/my_accounts_controller.rb', line 131 def pending return unless @context_user.account.nil? || !@context_user.account.pending_confirmation? flash[:error] = 'No user confirmation pending' redirect_to cms_link('/') end |
#settings ⇒ void
This method returns an undefined value.
Renders the account settings menu.
63 |
# File 'app/controllers/my_accounts_controller.rb', line 63 def settings; end |
#show ⇒ void
This method returns an undefined value.
Renders the account dashboard (orders, active projects). Employees
aren't customers, so this is unavailable to them.
36 37 38 39 40 41 42 43 44 45 46 |
# File 'app/controllers/my_accounts_controller.rb', line 36 def show if @context_user.is_a?(Employee) || @party.is_a?(Employee) flash[:error] = 'Your current Employee log-in does not support this function' redirect_to cms_link('/') else @orders = (@context_user || @party).orders.active.non_credit @order_pending_payment = @orders.pending_payment @projects = (@context_user || @party).opportunities @active_projects = @projects.open_opportunities end end |
#social_logins ⇒ void
This method returns an undefined value.
Renders the linked-social-logins management page.
177 |
# File 'app/controllers/my_accounts_controller.rb', line 177 def ; end |
#update ⇒ void
This method returns an undefined value.
Updates the customer's profile.
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'app/controllers/my_accounts_controller.rb', line 109 def update @customer = @context_user.customer @customer.attributes = params[:customer] @customer.leadify if @customer.save redirect_to(@devise_return_path || @return_path || settings_my_account_path) else @contact_points = sorted_contact_points(@context_user.customer, begin current_account.email rescue StandardError nil end) @contact = @context_user.is_a?(Contact) ? @context_user : @context_user.contacts.first || @context_user.contacts.build @cancel_path = edit_my_account_path @hide_new_address_form = true if @context_user.billing_address.nil? || @context_user.billing_address.new_record? render action: :edit, status: :unprocessable_content end end |
#update_billing_address ⇒ void
This method returns an undefined value.
Updates the customer's billing address.
97 98 99 100 101 102 103 104 |
# File 'app/controllers/my_accounts_controller.rb', line 97 def update_billing_address if @context_user.customer.update(params[:customer]) redirect_to my_account_addresses_path else @hide_new_address_form = true if @context_user.billing_address.nil? || @context_user.billing_address.new_record? render action: :edit_billing_address, status: :unprocessable_content end end |