diff --git a/app/controllers/concerns/authorization.rb b/app/controllers/concerns/authorization.rb
index df48f62f5..0e5e9240d 100644
--- a/app/controllers/concerns/authorization.rb
+++ b/app/controllers/concerns/authorization.rb
@@ -29,7 +29,7 @@ module Authorization
if Current.membership.blank?
redirect_to session_menu_url(script_name: nil)
elsif Current.user.nil? && Current.membership.join_code.present?
- redirect_to new_user_path
+ redirect_to new_users_join_path
elsif !Current.user&.active?
redirect_to unlink_membership_url(script_name: nil, membership_id: Current.membership.signed_id(purpose: :unlinking))
end
diff --git a/app/controllers/users/joins_controller.rb b/app/controllers/users/joins_controller.rb
new file mode 100644
index 000000000..630c579bc
--- /dev/null
+++ b/app/controllers/users/joins_controller.rb
@@ -0,0 +1,32 @@
+class Users::JoinsController < ApplicationController
+ require_access_without_a_user
+
+ before_action :set_join_code, :ensure_join_code_is_valid
+
+ def new
+ end
+
+ def create
+ @join_code.redeem do
+ User.create!(user_params.merge(membership: Current.membership))
+ end
+
+ redirect_to root_path
+ end
+
+ private
+ def set_join_code
+ @join_code = Account::JoinCode.active.find_by(code: Current.membership.join_code)
+ end
+
+ def ensure_join_code_is_valid
+ unless @join_code&.active?
+ redirect_to unlink_membership_url(script_name: nil, membership_id: Current.membership.signed_id(purpose: :unlinking))
+ end
+ end
+
+ def user_params
+ params.expect(user: [ :name, :avatar ])
+ end
+end
+
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 8b89fc0e4..2ba535fef 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -1,21 +1,7 @@
class UsersController < ApplicationController
- require_access_without_a_user only: %i[ new create ]
-
- before_action :set_join_code, :ensure_join_code_is_valid, only: %i[ new create ]
before_action :set_user, only: %i[ show edit update destroy ]
before_action :ensure_permission_to_change_user, only: %i[ update destroy ]
- def new
- end
-
- def create
- @join_code.redeem do
- User.create!(user_params.merge(membership: Current.membership))
- end
-
- redirect_to root_path
- end
-
def edit
end
@@ -33,16 +19,6 @@ class UsersController < ApplicationController
end
private
- def set_join_code
- @join_code = Account::JoinCode.active.find_by(code: Current.membership.join_code)
- end
-
- def ensure_join_code_is_valid
- unless @join_code&.active?
- redirect_to unlink_membership_url(script_name: nil, membership_id: Current.membership.signed_id(purpose: :unlinking))
- end
- end
-
def set_user
@user = User.active.find(params[:id])
end
diff --git a/app/views/users/new.html.erb b/app/views/users/joins/new.html.erb
similarity index 84%
rename from app/views/users/new.html.erb
rename to app/views/users/joins/new.html.erb
index 9239786fe..adf795ece 100644
--- a/app/views/users/new.html.erb
+++ b/app/views/users/joins/new.html.erb
@@ -5,10 +5,11 @@
<%= @page_title %>
+
Enter your name to continue
- <%= form_with scope: "user", url: users_path(membership: params[:membership]), class: "flex flex-column gap txt-medium", data: { controller: "form" } do |form| %>
+ <%= form_with scope: "user", url: users_joins_path(membership: params[:membership]), class: "flex flex-column gap txt-medium", data: { controller: "form" } do |form| %>