From: Tom Hughes Date: Tue, 19 Dec 2023 11:58:30 +0000 (+0000) Subject: Make allow_account_creation work the same as other ACLs X-Git-Tag: live~838 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/9a6a6fab731559570a8da2647bc24c6d93fdcbc3?ds=sidebyside Make allow_account_creation work the same as other ACLs --- diff --git a/app/models/acl.rb b/app/models/acl.rb index 26285cef3..aa503f40c 100644 --- a/app/models/acl.rb +++ b/app/models/acl.rb @@ -42,12 +42,7 @@ class Acl < ApplicationRecord end def self.allow_account_creation(address, options = {}) - acls = Acl.where("address >>= ?", address) - .and(Acl.where(:k => "allow_account_creation")) - acls = acls.and(Acl.where(:domain => options[:domain])) if options[:domain] - acls = acls.and(Acl.where(:mx => options[:mx])) if options[:mx] - - !acls.empty? + match(address, options).exists?(:k => "allow_account_creation") end def self.no_note_comment(address, domain = nil) diff --git a/test/models/acl_test.rb b/test/models/acl_test.rb index 33601df2b..ecf150c6d 100644 --- a/test/models/acl_test.rb +++ b/test/models/acl_test.rb @@ -28,16 +28,23 @@ class AclTest < ActiveSupport::TestCase assert Acl.no_account_creation("192.168.1.1", :mx => "mail.example.com") end - def test_allowed_account_creation - assert_not Acl.allow_account_creation("192.168.1.1", :domain => "example.com", :mx => "mail.example.com") - create(:acl, :address => "192.168.1.1", :domain => "example.com", :mx => "mail.example.com", :k => "allow_account_creation") - - assert_not Acl.allow_account_creation("192.168.1.2") + def test_allow_account_creation_by_subnet + assert_not Acl.allow_account_creation("192.168.1.1") + create(:acl, :address => "192.168.0.0/16", :k => "allow_account_creation") assert Acl.allow_account_creation("192.168.1.1") + end + + def test_allow_account_creation_by_domain + assert_not Acl.allow_account_creation("192.168.1.1", :domain => "example.com") + assert_not Acl.allow_account_creation("192.168.1.1", :domain => "test.example.com") + create(:acl, :domain => "example.com", :k => "allow_account_creation") + assert Acl.allow_account_creation("192.168.1.1", :domain => "example.com") + assert Acl.allow_account_creation("192.168.1.1", :domain => "test.example.com") + end - assert_not Acl.allow_account_creation("192.168.1.2", :domain => "example.com", :mx => "mail.example.com") - assert_not Acl.allow_account_creation("192.168.1.1", :domain => "example1.com", :mx => "mail.example.com") - assert_not Acl.allow_account_creation("192.168.1.1", :domain => "example.com", :mx => "mail1.example.com") - assert Acl.allow_account_creation("192.168.1.1", :domain => "example.com", :mx => "mail.example.com") + def test_allow_account_creation_by_mx + assert_not Acl.allow_account_creation("192.168.1.1", :mx => "mail.example.com") + create(:acl, :mx => "mail.example.com", :k => "allow_account_creation") + assert Acl.allow_account_creation("192.168.1.1", :mx => "mail.example.com") end end