users: fix exception during signup for IPv6 addresses.

`ip_address.private?` failed on IPv6 addresses.
This commit is contained in:
evazion
2021-01-01 03:57:17 -06:00
parent 83d6cd5980
commit 430ba5dced
2 changed files with 15 additions and 1 deletions

View File

@@ -23,7 +23,11 @@ class UserVerifier
end
def is_local_ip?
ip_address.loopback? || ip_address.link_local? || ip_address.private? || ip_address.try(:unique_local?)
if ip_address.ipv4?
ip_address.loopback? || ip_address.link_local? || ip_address.private?
elsif ip_address.ipv6?
ip_address.loopback? || ip_address.link_local? || ip_address.unique_local?
end
end
def is_logged_in?

View File

@@ -293,9 +293,19 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
setup do
@private_ip = "192.168.0.1"
@valid_ip = "187.37.226.17" # a random valid, non-proxy public IP
@valid_ipv6 = "2600:1700:6b0:a518::1"
@proxy_ip = "51.15.128.1"
end
should "work for a public IPv6 address" do
self.remote_addr = @valid_ipv6
post users_path, params: { user: { name: "xxx", password: "xxxxx1", password_confirmation: "xxxxx1" }}
assert_redirected_to User.last
assert_equal(false, User.last.requires_verification)
end
should "mark accounts created by already logged in users as requiring verification" do
self.remote_addr = @valid_ip