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| %>