6
6
7
7
class RegistrationsController < Devise ::RegistrationsController
8
8
before_action :check_registrations_open_or_valid_invite! , except : :registrations_closed
9
-
9
+ before_action :configure_sign_up_params , only : [ :create ]
10
10
layout -> { request . format == :mobile ? "application" : "with_header_with_footer" }
11
11
12
12
def create
13
- @user = User . build ( user_params )
14
-
15
- if @user . sign_up
16
- flash [ :notice ] = t ( "registrations.create.success" )
17
- @user . process_invite_acceptence ( invite ) if invite . present?
18
- @user . seed_aspects
19
- @user . send_welcome_message
20
- WelcomeMailer . send_welcome_email ( @user ) . deliver_now
21
- sign_in_and_redirect ( :user , @user )
22
- logger . info "event=registration status=successful user=#{ @user . diaspora_handle } "
23
- else
24
- @user . errors . delete ( :person )
25
-
26
- flash . now [ :error ] = @user . errors . full_messages . join ( " - " )
27
- logger . info "event=registration status=failure errors='#{ @user . errors . full_messages . join ( ', ' ) } '"
28
- render action : "new"
13
+ build_resource ( sign_up_params )
14
+ raise unless resource . check_and_verify_captcha?
15
+ super
16
+ if resource . persisted?
17
+ resource . process_invite_acceptence ( invite ) if invite . present?
18
+ resource . seed_aspects
29
19
end
20
+ rescue
21
+ resource . errors . delete ( :person )
22
+ flash . now [ :error ] = resource . errors . full_messages . join ( " - " )
23
+ logger . info "event=registration status=failure errors='#{ resource . errors . full_messages . join ( ', ' ) } '"
24
+ render action : "new"
30
25
end
31
26
32
27
def registrations_closed
33
28
render "registrations/registrations_closed"
34
29
end
35
30
31
+ protected
32
+
33
+ def build_resource ( hash = nil )
34
+ super ( hash )
35
+ return if hash . nil? # return for 'new'
36
+ resource . language = hash [ :language ]
37
+ resource . language ||= I18n . locale . to_s
38
+ resource . color_theme = hash [ :color_theme ]
39
+ resource . color_theme ||= AppConfig . settings . default_color_theme
40
+ resource . set_person ( Person . new ( ( hash [ :person ] || { } ) . except ( :id ) ) )
41
+ resource . generate_keys
42
+ resource . valid?
43
+ errors = resource . errors
44
+ errors . delete :person
45
+ return if errors . size > 0
46
+ end
47
+
48
+ def configure_sign_up_params
49
+ devise_parameter_sanitizer . permit ( :sign_up , keys : [ :username , :email , :getting_started , :password , :password_confirmation , :language , :disable_mail , :show_community_spotlight_in_stream , :auto_follow_back , :auto_follow_back_aspect_id , :remember_me , :captcha , :captcha_key ] )
50
+ end
51
+
52
+ def after_inactive_sign_up_path_for ( _resource )
53
+ login_path
54
+ end
55
+
36
56
private
37
57
38
58
def check_registrations_open_or_valid_invite!
@@ -48,11 +68,4 @@ def invite
48
68
49
69
helper_method :invite
50
70
51
- def user_params
52
- params . require ( :user ) . permit (
53
- :username , :email , :getting_started , :password , :password_confirmation , :language , :disable_mail ,
54
- :show_community_spotlight_in_stream , :auto_follow_back , :auto_follow_back_aspect_id ,
55
- :remember_me , :captcha , :captcha_key
56
- )
57
- end
58
71
end
0 commit comments