From e4058953ca06b81d5e530a55b33cd1dabb8d6d5f Mon Sep 17 00:00:00 2001
From: davidg73 <david.gunnarsson@univie.ac.at>
Date: Tue, 13 May 2025 12:36:20 +0200
Subject: [PATCH] DRY up policies by making use of default ApplicationPolicy

so most things do not have to be repeated, only the few custom cases
---
 app/policies/actor_policy.rb                 | 20 --------------------
 app/policies/actor_type_policy.rb            | 20 --------------------
 app/policies/analysis_method_policy.rb       | 20 --------------------
 app/policies/application_policy.rb           | 10 +++++-----
 app/policies/archaeometry_analysis_policy.rb | 16 ----------------
 app/policies/colour_policy.rb                | 20 --------------------
 app/policies/fabric_code_policy.rb           | 20 --------------------
 app/policies/form_policy.rb                  | 20 --------------------
 app/policies/fragmentation_policy.rb         | 20 --------------------
 app/policies/frequency_policy.rb             | 20 --------------------
 app/policies/gazetteer_policy.rb             | 20 --------------------
 app/policies/hardness_policy.rb              | 20 --------------------
 app/policies/image_color_policy.rb           | 20 --------------------
 app/policies/image_size_policy.rb            | 20 --------------------
 app/policies/literature_policy.rb            | 20 --------------------
 app/policies/phase_policy.rb                 | 20 --------------------
 app/policies/sample_policy.rb                | 16 ----------------
 app/policies/sorting_policy.rb               | 20 --------------------
 app/policies/sphericity_policy.rb            | 20 --------------------
 app/policies/surface_policy.rb               | 20 --------------------
 app/policies/text_policy.rb                  | 20 --------------------
 app/policies/texture_policy.rb               | 20 --------------------
 app/policies/type_policy.rb                  | 20 --------------------
 app/policies/user_policy.rb                  |  8 --------
 app/policies/vessel_form_type_policy.rb      | 20 --------------------
 app/policies/voids_form_policy.rb            | 20 --------------------
 app/policies/ware_policy.rb                  | 20 --------------------
 27 files changed, 5 insertions(+), 505 deletions(-)

diff --git a/app/policies/actor_policy.rb b/app/policies/actor_policy.rb
index 912d03b..a6d4046 100644
--- a/app/policies/actor_policy.rb
+++ b/app/policies/actor_policy.rb
@@ -1,26 +1,6 @@
 class ActorPolicy < ApplicationPolicy
   alias_method :actor, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/actor_type_policy.rb b/app/policies/actor_type_policy.rb
index 83218fd..29eb55f 100644
--- a/app/policies/actor_type_policy.rb
+++ b/app/policies/actor_type_policy.rb
@@ -1,26 +1,6 @@
 class ActorTypePolicy < ApplicationPolicy
   alias_method :actor_type, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/analysis_method_policy.rb b/app/policies/analysis_method_policy.rb
index 9a62417..d0563f3 100644
--- a/app/policies/analysis_method_policy.rb
+++ b/app/policies/analysis_method_policy.rb
@@ -1,26 +1,6 @@
 class AnalysisMethodPolicy < ApplicationPolicy
   alias_method :analysis_method, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/application_policy.rb b/app/policies/application_policy.rb
index 8dff05b..338e6c2 100644
--- a/app/policies/application_policy.rb
+++ b/app/policies/application_policy.rb
@@ -9,15 +9,15 @@ class ApplicationPolicy
   end
 
   def index?
-    false
+    user? && user.apprentice?
   end
 
   def show?
-    false
+    user? && user.apprentice?
   end
 
   def create?
-    false
+    user? && user.apprentice?
   end
 
   def new?
@@ -25,7 +25,7 @@ class ApplicationPolicy
   end
 
   def update?
-    false
+    user? && user.apprentice?
   end
 
   def edit?
@@ -33,7 +33,7 @@ class ApplicationPolicy
   end
 
   def destroy?
-    false
+    user? && user.editor?
   end
 
   class Scope
diff --git a/app/policies/archaeometry_analysis_policy.rb b/app/policies/archaeometry_analysis_policy.rb
index 5356849..b0335a4 100644
--- a/app/policies/archaeometry_analysis_policy.rb
+++ b/app/policies/archaeometry_analysis_policy.rb
@@ -1,22 +1,6 @@
 class ArchaeometryAnalysisPolicy < ApplicationPolicy
   alias_method :archaeometry_analysis, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
   def destroy?
     user? && user.apprentice?
   end
diff --git a/app/policies/colour_policy.rb b/app/policies/colour_policy.rb
index 1517afb..f9635ec 100644
--- a/app/policies/colour_policy.rb
+++ b/app/policies/colour_policy.rb
@@ -1,26 +1,6 @@
 class ColourPolicy < ApplicationPolicy
   alias_method :colour, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/fabric_code_policy.rb b/app/policies/fabric_code_policy.rb
index c5a22c4..4e729f9 100644
--- a/app/policies/fabric_code_policy.rb
+++ b/app/policies/fabric_code_policy.rb
@@ -1,26 +1,6 @@
 class FabricCodePolicy < ApplicationPolicy
   alias_method :fabric_code, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/form_policy.rb b/app/policies/form_policy.rb
index bcbeb7e..593f90b 100644
--- a/app/policies/form_policy.rb
+++ b/app/policies/form_policy.rb
@@ -1,26 +1,6 @@
 class FormPolicy < ApplicationPolicy
   alias_method :form, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/fragmentation_policy.rb b/app/policies/fragmentation_policy.rb
index 603966f..1868175 100644
--- a/app/policies/fragmentation_policy.rb
+++ b/app/policies/fragmentation_policy.rb
@@ -1,26 +1,6 @@
 class FragmentationPolicy < ApplicationPolicy
   alias_method :fragmentation, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/frequency_policy.rb b/app/policies/frequency_policy.rb
index 06d813c..17d80ea 100644
--- a/app/policies/frequency_policy.rb
+++ b/app/policies/frequency_policy.rb
@@ -1,26 +1,6 @@
 class FrequencyPolicy < ApplicationPolicy
   alias_method :frequency, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/gazetteer_policy.rb b/app/policies/gazetteer_policy.rb
index 83b49a9..69c7d3a 100644
--- a/app/policies/gazetteer_policy.rb
+++ b/app/policies/gazetteer_policy.rb
@@ -1,26 +1,6 @@
 class GazetteerPolicy < ApplicationPolicy
   alias_method :gazetteer, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   def view_children?
     user? && user.apprentice?
   end
diff --git a/app/policies/hardness_policy.rb b/app/policies/hardness_policy.rb
index e1ac2ce..35ac791 100644
--- a/app/policies/hardness_policy.rb
+++ b/app/policies/hardness_policy.rb
@@ -1,26 +1,6 @@
 class HardnessPolicy < ApplicationPolicy
   alias_method :hardness, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/image_color_policy.rb b/app/policies/image_color_policy.rb
index 1b418c4..2540cdf 100644
--- a/app/policies/image_color_policy.rb
+++ b/app/policies/image_color_policy.rb
@@ -1,26 +1,6 @@
 class ImageColorPolicy < ApplicationPolicy
   alias_method :image_color, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/image_size_policy.rb b/app/policies/image_size_policy.rb
index 09922d0..9f76199 100644
--- a/app/policies/image_size_policy.rb
+++ b/app/policies/image_size_policy.rb
@@ -1,26 +1,6 @@
 class ImageSizePolicy < ApplicationPolicy
   alias_method :image_size, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/literature_policy.rb b/app/policies/literature_policy.rb
index be28c0b..608ddc0 100644
--- a/app/policies/literature_policy.rb
+++ b/app/policies/literature_policy.rb
@@ -1,26 +1,6 @@
 class LiteraturePolicy < ApplicationPolicy
   alias_method :literature, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/phase_policy.rb b/app/policies/phase_policy.rb
index 53d73d6..e11513d 100644
--- a/app/policies/phase_policy.rb
+++ b/app/policies/phase_policy.rb
@@ -1,26 +1,6 @@
 class PhasePolicy < ApplicationPolicy
   alias_method :phase, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/sample_policy.rb b/app/policies/sample_policy.rb
index 054c921..1b78a67 100644
--- a/app/policies/sample_policy.rb
+++ b/app/policies/sample_policy.rb
@@ -1,22 +1,6 @@
 class SamplePolicy < ApplicationPolicy
   alias_method :sample, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
   def destroy?
     user? && user.apprentice?
   end
diff --git a/app/policies/sorting_policy.rb b/app/policies/sorting_policy.rb
index b678873..81f0d8a 100644
--- a/app/policies/sorting_policy.rb
+++ b/app/policies/sorting_policy.rb
@@ -1,26 +1,6 @@
 class SortingPolicy < ApplicationPolicy
   alias_method :sorting, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/sphericity_policy.rb b/app/policies/sphericity_policy.rb
index 592eeba..33f2a25 100644
--- a/app/policies/sphericity_policy.rb
+++ b/app/policies/sphericity_policy.rb
@@ -1,26 +1,6 @@
 class SphericityPolicy < ApplicationPolicy
   alias_method :sphericity, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/surface_policy.rb b/app/policies/surface_policy.rb
index 7b37cf2..c7a98e2 100644
--- a/app/policies/surface_policy.rb
+++ b/app/policies/surface_policy.rb
@@ -1,26 +1,6 @@
 class SurfacePolicy < ApplicationPolicy
   alias_method :surface, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/text_policy.rb b/app/policies/text_policy.rb
index 12e55f9..8d6cb18 100644
--- a/app/policies/text_policy.rb
+++ b/app/policies/text_policy.rb
@@ -1,26 +1,6 @@
 class TextPolicy < ApplicationPolicy
   alias_method :text, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/texture_policy.rb b/app/policies/texture_policy.rb
index 05413c3..b3f15ab 100644
--- a/app/policies/texture_policy.rb
+++ b/app/policies/texture_policy.rb
@@ -1,26 +1,6 @@
 class TexturePolicy < ApplicationPolicy
   alias_method :texture, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/type_policy.rb b/app/policies/type_policy.rb
index a7a33f4..db2cd41 100644
--- a/app/policies/type_policy.rb
+++ b/app/policies/type_policy.rb
@@ -1,26 +1,6 @@
 class TypePolicy < ApplicationPolicy
   alias_method :type, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/user_policy.rb b/app/policies/user_policy.rb
index c94a5ea..0f6aa82 100644
--- a/app/policies/user_policy.rb
+++ b/app/policies/user_policy.rb
@@ -1,14 +1,6 @@
 class UserPolicy < ApplicationPolicy
   alias_method :target_user, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
   def create?
     false
   end
diff --git a/app/policies/vessel_form_type_policy.rb b/app/policies/vessel_form_type_policy.rb
index a3656a6..b7e99c6 100644
--- a/app/policies/vessel_form_type_policy.rb
+++ b/app/policies/vessel_form_type_policy.rb
@@ -1,26 +1,6 @@
 class VesselFormTypePolicy < ApplicationPolicy
   alias_method :vessel_form_type, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/voids_form_policy.rb b/app/policies/voids_form_policy.rb
index fc091d2..1bdaa7c 100644
--- a/app/policies/voids_form_policy.rb
+++ b/app/policies/voids_form_policy.rb
@@ -1,26 +1,6 @@
 class VoidsFormPolicy < ApplicationPolicy
   alias_method :voids_form, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
diff --git a/app/policies/ware_policy.rb b/app/policies/ware_policy.rb
index 2cece86..64c46b1 100644
--- a/app/policies/ware_policy.rb
+++ b/app/policies/ware_policy.rb
@@ -1,26 +1,6 @@
 class WarePolicy < ApplicationPolicy
   alias_method :ware, :record
 
-  def index?
-    user? && user.apprentice?
-  end
-
-  def show?
-    user? && user.apprentice?
-  end
-
-  def create?
-    user? && user.apprentice?
-  end
-
-  def update?
-    user? && user.apprentice?
-  end
-
-  def destroy?
-    user? && user.editor?
-  end
-
   class Scope < ApplicationPolicy::Scope
     def resolve
       scope.all
-- 
GitLab