diff options
author | Fire Demon <firedemon@creature.cafe> | 2020-09-01 13:28:42 -0500 |
---|---|---|
committer | Fire Demon <firedemon@creature.cafe> | 2020-09-01 13:28:55 -0500 |
commit | 97a98796b4b01d9ce4c2147cacf54960a71010f2 (patch) | |
tree | 062f6df58600a4289e39c3e197163772181ea3a0 /app | |
parent | 0dc67e07f1c53d5feae19417743fb225dfa64178 (diff) |
[Future, Privacy] Add sticky domain permissions flag
Diffstat (limited to 'app')
-rw-r--r-- | app/lib/command_tag/command/account_tools.rb | 2 | ||||
-rw-r--r-- | app/models/account_domain_permission.rb | 5 |
2 files changed, 4 insertions, 3 deletions
diff --git a/app/lib/command_tag/command/account_tools.rb b/app/lib/command_tag/command/account_tools.rb index b433c32d4..8c8c74e68 100644 --- a/app/lib/command_tag/command/account_tools.rb +++ b/app/lib/command_tag/command/account_tools.rb @@ -56,7 +56,7 @@ module CommandTag::Command::AccountTools @account.user.settings.default_privacy = args[1] elsif args[1] == 'public' domains = args[2..-1].map { |domain| normalize_domain(domain) unless domain == '*' }.uniq.compact - @account.domain_permissions.where(domain: domains).destroy_all if domains.present? + @account.domain_permissions.where(domain: domains, sticky: false).destroy_all if domains.present? elsif args[1] != 'cc' args[2..-1].flat_map(&:split).uniq.each do |domain| domain = normalize_domain(domain) unless domain == '*' 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 |