forked from e621ng/e621ng
[Users] Redirect to name changes when name is invalid
The more or less unintrusive message has been there for a few months now. Start forcing a name change when accessing through a browser, ignore api for now
This commit is contained in:
parent
e397370498
commit
d9a055d058
@ -10,6 +10,7 @@ class ApplicationController < ActionController::Base
|
||||
before_action :normalize_search
|
||||
before_action :api_check
|
||||
before_action :enable_cors
|
||||
before_action :check_valid_username
|
||||
after_action :reset_current_user
|
||||
layout "default"
|
||||
|
||||
@ -30,6 +31,14 @@ class ApplicationController < ActionController::Base
|
||||
response.headers["Access-Control-Allow-Headers"] = "Authorization"
|
||||
end
|
||||
|
||||
def check_valid_username
|
||||
return if params[:controller] == "user_name_change_requests"
|
||||
|
||||
if request.format.html? && CurrentUser.user.name_error
|
||||
redirect_to new_user_name_change_request_path
|
||||
end
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def api_check
|
||||
|
@ -30,13 +30,6 @@
|
||||
<div id="page">
|
||||
<%= render "news_updates/notice", news_update: NewsUpdate.recent %>
|
||||
|
||||
<% if CurrentUser.is_member? && (name_error = CurrentUser.name_error) %>
|
||||
<div class="ui-state-highlight site-notice">
|
||||
<p>Your current username '<%= CurrentUser.pretty_name %>' is invalid. Please change it <%= link_to "here", new_user_name_change_request_path %>.<p>
|
||||
Error: <%= name_error %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<% if CurrentUser.user.is_banned? %>
|
||||
<%= render "users/ban_notice" %>
|
||||
<% end %>
|
||||
|
@ -1,5 +1,12 @@
|
||||
<div id="c-user-name-change-requests">
|
||||
<div id="a-new">
|
||||
<% if CurrentUser.is_member? && (name_error = CurrentUser.user.name_error) %>
|
||||
<div class="ui-state-highlight site-notice">
|
||||
<p>Your current username '<%= CurrentUser.user.pretty_name %>' is invalid. You must change it to continue using the site.<p>
|
||||
Error: <%= name_error %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<h1>Name Change Request</h1>
|
||||
|
||||
<p>You can request a name change once per week.</p>
|
||||
|
@ -143,5 +143,22 @@ class ApplicationControllerTest < ActionDispatch::IntegrationTest
|
||||
assert_equal("s", post.reload.rating)
|
||||
end
|
||||
end
|
||||
|
||||
context "when the user has an invalid username" do
|
||||
setup do
|
||||
@user = build(:user, name: "12345")
|
||||
@user.save(validate: false)
|
||||
end
|
||||
|
||||
should "redirect for html requests" do
|
||||
get_auth posts_path, @user, params: { format: :html }
|
||||
assert_redirected_to new_user_name_change_request_path
|
||||
end
|
||||
|
||||
should "not redirect for json requests" do
|
||||
get_auth posts_path, @user, params: { format: :json }
|
||||
assert_response :success
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -7,14 +7,6 @@ class UserNameChangeRequestsControllerTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
@user = create(:privileged_user)
|
||||
@admin = create(:admin_user)
|
||||
as(@user) do
|
||||
@change_request = UserNameChangeRequest.create!(
|
||||
:user_id => @user.id,
|
||||
:original_name => @user.name,
|
||||
:desired_name => "abc",
|
||||
:change_reason => "hello"
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
context "new action" do
|
||||
@ -22,16 +14,43 @@ class UserNameChangeRequestsControllerTest < ActionDispatch::IntegrationTest
|
||||
get_auth new_user_name_change_request_path, @user
|
||||
assert_response :success
|
||||
end
|
||||
end
|
||||
|
||||
context "create action" do
|
||||
should "work" do
|
||||
post_auth user_name_change_requests_path, @user, params: { user_name_change_request: { desired_name: "zun" }}
|
||||
should "render for a user with a currently invalid username" do
|
||||
@user.update_columns(name: "12345")
|
||||
get_auth new_user_name_change_request_path, @user
|
||||
assert_response :success
|
||||
end
|
||||
end
|
||||
|
||||
context "create action" do
|
||||
should "work" do
|
||||
post_auth user_name_change_requests_path, @user, params: { user_name_change_request: { desired_name: "zun" } }
|
||||
change_request = UserNameChangeRequest.last
|
||||
assert_redirected_to user_name_change_request_path(change_request)
|
||||
assert_equal("zun", @user.reload.name)
|
||||
end
|
||||
|
||||
should "work for a user with a currently invalid name" do
|
||||
@user.update_columns(name: "12345")
|
||||
post_auth user_name_change_requests_path, @user, params: { user_name_change_request: { desired_name: "zun" } }
|
||||
change_request = UserNameChangeRequest.last
|
||||
assert_redirected_to user_name_change_request_path(change_request)
|
||||
assert_equal("zun", @user.reload.name)
|
||||
end
|
||||
end
|
||||
|
||||
context "show action" do
|
||||
setup do
|
||||
as(@user) do
|
||||
@change_request = UserNameChangeRequest.create!(
|
||||
user_id: @user.id,
|
||||
original_name: @user.name,
|
||||
desired_name: "abc",
|
||||
change_reason: "hello",
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
should "render" do
|
||||
get_auth user_name_change_request_path(@change_request), @user
|
||||
assert_response :success
|
||||
|
Loading…
Reference in New Issue
Block a user