@@ -11,6 +11,7 @@ class SignupController < DeveloperPortal::BaseController
1111 before_action :deny_if_signup_disabled
1212 before_action :find_plans , :except => :success
1313 before_action :set_strategy , :only => %i[ show create ]
14+ before_action :init_signup_service , only : %i[ create ]
1415 skip_before_action :finish_signup_for_paid_plan
1516
1617 self . builtin_template_scope = 'signup'
@@ -30,10 +31,7 @@ def show
3031 end
3132
3233 def create
33- account_params = filter_readonly_params ( params [ :account ] , Account )
34- user_params = filter_readonly_params ( account_params . try ( :delete , :user ) , User )
35-
36- if signup_user! ( account_params , user_params )
34+ if signup_user!
3735 if @user . can_login?
3836 self . current_user = @user
3937 create_user_session!
@@ -67,9 +65,9 @@ def authentication_provider
6765 . find_by ( system_name : session [ :authentication_provider ] )
6866 end
6967
70- def signup_user! ( account_params , user_params )
68+ def signup_user!
7169 Account . transaction do
72- SignupService . create ( ** signup_service_params ( account_params , user_params ) ) do |signup_result |
70+ @signup_service . create ( account_params : , user_params : ) do |signup_result |
7371 @signup_result = signup_result
7472 @user = signup_result . user
7573 @buyer = signup_result . account
@@ -80,16 +78,6 @@ def signup_user!(account_params, user_params)
8078 @signup_result . persisted?
8179 end
8280
83- def signup_service_params ( account_params , user_params )
84- { provider : @provider ,
85- plans : @plans ,
86- session : session ,
87- account_params : account_params ,
88- user_params : user_params ,
89- authentication_provider : authentication_provider
90- }
91- end
92-
9381 def redirect_if_logged_in
9482 redirect_to admin_dashboard_path if logged_in?
9583 end
@@ -134,5 +122,31 @@ def convert_legacy_params
134122 params [ :plans ] << params [ type ] if params [ type ] . present?
135123 end
136124 end
125+
126+ def init_signup_service
127+ signup_service_params = {
128+ provider : @provider ,
129+ plans : @plans ,
130+ session : session ,
131+ authentication_provider : authentication_provider
132+ }
133+ @signup_service = SignupService . new ( **signup_service_params )
134+ end
135+
136+ def account_params
137+ @account_params ||= begin
138+ account = @signup_service . account_manager . account
139+ allowed_attrs = account . defined_fields_names - %i( billing_address country ) + %i( country_id )
140+ filter_readonly_params ( params . fetch ( :account , { } ) , Account ) . permit ( *allowed_attrs )
141+ end
142+ end
143+
144+ def user_params
145+ @user_params ||= begin
146+ user = @signup_service . account_manager . user
147+ allowed_attrs = user . defined_fields_names | %i( password signup_type )
148+ filter_readonly_params ( params . fetch ( :account , { } ) [ :user ] , User ) . permit ( *allowed_attrs ) . merge ( { signup_type : :minimal } )
149+ end
150+ end
137151 end
138152end
0 commit comments