Class: Www::BlogSubscriptionsController
- Inherits:
-
BasePortalController
- Object
- ActionController::Base
- ApplicationController
- BasePortalController
- Www::BlogSubscriptionsController
- Defined in:
- app/controllers/www/blog_subscriptions_controller.rb
Overview
Handles blog subscription signup and email confirmation
using the existing Audience (ID 2652) and AudienceMember model.
Unsubscribe is handled by the EmailPreference system (newsletters category).
Constant Summary collapse
- BLOG_AUDIENCE_ID =
Blog audience id.
2652
Constants included from Controllers::MasqueradeGuarded
Controllers::MasqueradeGuarded::DEFAULT_BLOCK_MESSAGE
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
-
#confirm ⇒ void
Confirms a blog subscription from the emailed token, activating the audience member.
-
#create ⇒ void
Subscribes an email to the blog audience, sending a confirmation email for a new or reactivated subscription.
Methods inherited from BasePortalController
#current_ability, #portal_party, #set_catalog, #set_webpack
Methods included from Controllers::MasqueradeGuarded
block_while_masquerading, #masquerade_blocks?
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
#confirm ⇒ void
This method returns an undefined value.
Confirms a blog subscription from the emailed token, activating the
audience member.
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'app/controllers/www/blog_subscriptions_controller.rb', line 56 def confirm email = begin Encryption.decrypt_string(params[:token].to_s) rescue StandardError nil end audience_member = email.present? ? find_audience_member(email) : nil if audience_member audience_member.activate render layout: 'www/pages/account_portal' else redirect_to www_posts_path, alert: t('.invalid_confirmation') end end |
#create ⇒ void
This method returns an undefined value.
Subscribes an email to the blog audience, sending a confirmation email
for a new or reactivated subscription.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'app/controllers/www/blog_subscriptions_controller.rb', line 16 def create email = params[:email].to_s.strip.downcase unless Truemail.valid?(email, with: :mx) flash.now[:warning] = t('.invalid_email') return respond_to do |format| format.turbo_stream { render partial: 'shared/flash' } format.html { redirect_to www_posts_path } end end audience_member = find_audience_member(email) if audience_member if audience_member.active? flash.now[:info] = t('.already_subscribed') else BlogSubscriptionMailer.confirmation(audience_member).deliver_later flash.now[:info] = t('.check_email') end else audience_member = AudienceMember.new(email_address: email, audience_id: BLOG_AUDIENCE_ID, active: false) if audience_member.save BlogSubscriptionMailer.confirmation(audience_member).deliver_later flash.now[:success] = t('.check_email') else flash.now[:warning] = audience_member.errors..first || t('.invalid_email') end end respond_to do |format| format.turbo_stream { render partial: 'shared/flash' } format.html { redirect_to www_posts_path } end end |