about summary refs log tree commit diff
path: root/app/policies
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2022-02-14 21:27:53 +0100
committerGitHub <noreply@github.com>2022-02-14 21:27:53 +0100
commit564efd06515edc524a8a1cdf7a3d8a7d9a376c04 (patch)
treea0d0a8ec693e06ef67ef25ec22128da291c318d1 /app/policies
parent5be705e1e0e3c05486c6069a7c8387c123a6d405 (diff)
Add appeals (#17364)
* Add appeals

* Add ability to reject appeals and ability to browse pending appeals in admin UI

* Add strikes to account page in settings

* Various fixes and improvements

- Add separate notification setting for appeals, separate from reports
- Fix style of links in report/strike header
- Change approving an appeal to not restore statuses (due to federation complexities)
- Change style of successfully appealed strikes on account settings page
- Change account settings page to only show unappealed or recently appealed strikes

* Change appealed_at to overruled_at

* Fix missing method error
Diffstat (limited to 'app/policies')
-rw-r--r--app/policies/account_warning_policy.rb17
-rw-r--r--app/policies/appeal_policy.rb13
2 files changed, 30 insertions, 0 deletions
diff --git a/app/policies/account_warning_policy.rb b/app/policies/account_warning_policy.rb
new file mode 100644
index 000000000..6b92da475
--- /dev/null
+++ b/app/policies/account_warning_policy.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AccountWarningPolicy < ApplicationPolicy
+  def show?
+    target? || staff?
+  end
+
+  def appeal?
+    target?
+  end
+
+  private
+
+  def target?
+    record.target_account_id == current_account&.id
+  end
+end
diff --git a/app/policies/appeal_policy.rb b/app/policies/appeal_policy.rb
new file mode 100644
index 000000000..a25187172
--- /dev/null
+++ b/app/policies/appeal_policy.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class AppealPolicy < ApplicationPolicy
+  def index?
+    staff?
+  end
+
+  def approve?
+    record.pending? && staff?
+  end
+
+  alias reject? approve?
+end