about summary refs log tree commit diff
path: root/app/models/account_domain_permission.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/account_domain_permission.rb')
-rw-r--r--app/models/account_domain_permission.rb5
1 files changed, 3 insertions, 2 deletions
diff --git a/app/models/account_domain_permission.rb b/app/models/account_domain_permission.rb
index 2606c4133..9e77950f2 100644
--- a/app/models/account_domain_permission.rb
+++ b/app/models/account_domain_permission.rb
@@ -7,6 +7,7 @@
 #  account_id :bigint(8)        not null
 #  domain     :string           default(""), not null
 #  visibility :integer          default("public"), not null
+#  sticky     :boolean          default(FALSE), not null
 #
 
 class AccountDomainPermission < ApplicationRecord
@@ -40,7 +41,7 @@ class AccountDomainPermission < ApplicationRecord
       domain_permissions = normalize(domain_permissions)
       permissions = find_by(domain: domain_permissions[:domain])
       if permissions.present?
-        permissions.update(**domain_permissions)
+        permissions.update(**domain_permissions) unless permissions.sticky? && %w(direct limited private).include?(domain_permissions[:visibility].to_s)
       else
         create(**domain_permissions)
       end
@@ -51,7 +52,7 @@ class AccountDomainPermission < ApplicationRecord
       domain_permissions = normalize(domain_permissions)
       permissions = find_by(domain: domain_permissions[:domain])
       if permissions.present?
-        permissions.update!(**domain_permissions)
+        permissions.update!(**domain_permissions) unless permissions.sticky? && %w(direct limited private).include?(domain_permissions[:visibility].to_s)
       else
         create!(**domain_permissions)
       end