user name changes: require confirmation of new name.

This commit is contained in:
evazion
2019-09-25 22:16:06 -05:00
parent 07f706e75f
commit eff6480699
5 changed files with 7 additions and 31 deletions

View File

@@ -9,7 +9,7 @@ class UserNameChangeRequestsController < ApplicationController
def create
@change_request = UserNameChangeRequest.create_with(user: CurrentUser.user, original_name: CurrentUser.name).create(change_request_params)
flash[:notice] = "Your name has been changed"
flash[:notice] = "Your name has been changed" if @change_request.valid?
respond_with(@change_request, location: profile_path)
end
@@ -32,6 +32,6 @@ class UserNameChangeRequestsController < ApplicationController
end
def change_request_params
params.fetch(:user_name_change_request, {}).permit(%i[desired_name])
params.fetch(:user_name_change_request, {}).permit(%i[desired_name desired_name_confirmation])
end
end

View File

@@ -1,25 +0,0 @@
#c-user-name-change-requests {
.feedback-category-positive {
background: var(--success-background-color);
}
.feedback-category-negative {
background: var(--error-background-color);
}
li {
margin-bottom: 1em;
}
form {
margin-bottom: 2em;
}
p {
margin: 0;
}
section {
margin-bottom: 1em;
}
}

View File

@@ -3,7 +3,7 @@ class UserNameChangeRequest < ApplicationRecord
belongs_to :approver, class_name: "User", optional: true
validate :not_limited, on: :create
validates :desired_name, user_name: true
validates :desired_name, user_name: true, confirmation: true, on: :create
validates_presence_of :original_name, :desired_name
after_create :update_name!

View File

@@ -9,7 +9,8 @@
<%= error_messages_for "change_request" %>
<%= simple_form_for(@change_request) do |f| %>
<%= f.input :desired_name %>
<%= f.input :desired_name, label: "Name" %>
<%= f.input :desired_name_confirmation, label: "Confirm name" %>
<%= f.submit "Submit" %>
<% end %>
</div>

View File

@@ -16,9 +16,9 @@ class UserNameChangeRequestsControllerTest < ActionDispatch::IntegrationTest
context "create action" do
should "work" do
post_auth user_name_change_requests_path, @user, params: { user_name_change_request: { desired_name: "zun" }}
post_auth user_name_change_requests_path, @user, params: { user_name_change_request: { desired_name: "zun", desired_name_confirmation: "zun" }}
assert_response :redirect
assert_redirected_to profile_path
assert_equal("zun", @user.reload.name)
end
end