Skip to content

Commit eb2e714

Browse files
committed
Simplify some policies
1 parent feff370 commit eb2e714

9 files changed

Lines changed: 30 additions & 41 deletions

app/policies/application_policy.rb

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,10 @@ def index?
2424

2525
def show?
2626
true
27-
# scope.where(:id => record.id).exists?
2827
end
2928

3029
def create?
31-
# Only admin, scraper_user or curator roles can create
32-
#@user.has_role?(:admin) or @user.has_role?(:scraper_user) or @user.has_role?(:curator)
33-
# Any registered user user can create
34-
@user && !@user.role.blank?
30+
@user
3531
end
3632

3733
def new?
@@ -52,19 +48,11 @@ def destroy?
5248

5349
# "manage" isn't actually an action, but the "destroy?" and "update?" policies delegate to this method.
5450
def manage?
55-
@user && @user.is_admin?
56-
end
57-
58-
def request_is_api?(request)
59-
return false if request.nil?
60-
return ((request.post? or request.put? or request.patch?) and request.format.json?)
51+
@user&.is_admin?
6152
end
6253

6354
def curators_and_admin
64-
@user && (
65-
@user.has_role?(:curator) ||
66-
@user.has_role?(:admin) ||
67-
@user.has_role?(:scraper_user))
55+
user_has_role?(:curator, :admin, :scraper_user)
6856
end
6957

7058
def scope
@@ -84,4 +72,20 @@ def resolve
8472
end
8573
end
8674

75+
private
76+
77+
def request_is_api?
78+
!!@request && ((@request.post? || @request.put? || @request.patch?) && @request.format.json?)
79+
end
80+
81+
def scraper?
82+
request_is_api? && @user&.has_role?(:scraper_user)
83+
end
84+
85+
# Check if the user has any of the given roles.
86+
def user_has_role?(*roles)
87+
return false if @user.nil?
88+
roles.any? { |r| @user.has_role?(r) }
89+
end
90+
8791
end

app/policies/learning_path_policy.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def update?
99
end
1010

1111
def manage?
12-
curators_and_admin || @user&.has_role?(:learning_path_curator)
12+
curators_and_admin || user_has_role?(:learning_path_curator)
1313
end
1414

1515
def create?

app/policies/learning_path_topic_policy.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ def update?
55
end
66

77
def manage?
8-
curators_and_admin || @user&.has_role?(:learning_path_curator)
8+
curators_and_admin || user_has_role?(:learning_path_curator)
99
end
1010

1111
def create?

app/policies/node_policy.rb

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,11 @@ class NodePolicy < ApplicationPolicy
22

33
def create?
44
# Only admin, scraper_user, curator or node_curator roles can create
5-
@user && (@user.has_role?(:admin) || @user.has_role?(:scraper_user) || @user.has_role?(:curator) || @user.has_role?(:node_curator))
5+
user_has_role?(:admin, :curator, :node_curator) || scraper?
66
end
77

88
def manage?
9-
return false unless @user
10-
return true if @user.is_admin?
11-
12-
if request_is_api?(@request) #is this an API action - allow scraper_user roles only
13-
if @user.has_role?(:scraper_user) #and @user.is_owner?(@record) # check ownership
14-
return true
15-
else
16-
return false
17-
end
18-
end
19-
20-
if @user.has_role?(:curator) || @user.has_role?(:node_curator) || @user.is_owner?(@record)
21-
return true
22-
else
23-
return false
24-
end
9+
user_has_role?(:admin, :curator, :node_curator) || scraper? || @user&.is_owner?(@record)
2510
end
2611

2712
end

app/policies/resource_policy.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ def create?
1010
end
1111

1212
def manage?
13-
super || (@user && (@user.is_owner?(@record) || (request_is_api?(@request) && @user.has_role?(:scraper_user))))
13+
super || (@user&.is_owner?(@record) || scraper?)
1414
end
1515

1616
end

app/policies/scraped_resource_policy.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
class ScrapedResourcePolicy < ResourcePolicy
44

55
def manage?
6-
super || (@user && @user.is_curator?) || is_content_provider_editor?
6+
super || (@user&.is_curator?) || is_content_provider_editor?
77
end
88

99
private

app/policies/source_policy.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def create?
2121
end
2222

2323
def approve?
24-
@user && @user.has_role?(:admin)
24+
user_has_role?(:admin)
2525
end
2626

2727
def request_approval?

app/policies/space_policy.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
class SpacePolicy < ApplicationPolicy
22

33
def create?
4-
@user && @user.has_role?(:admin)
4+
@user&.has_role?(:admin)
55
end
66

77
def edit?
@@ -13,7 +13,7 @@ def update?
1313
end
1414

1515
def manage?
16-
@user && @user.is_admin?
16+
@user&.is_admin?
1717
end
1818

1919
end

app/policies/user_policy.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ def show?
1212

1313
def create?
1414
# Do not allow creations via API and only admin role can create users
15-
!request_is_api?(request) && @user && @user.is_admin?
15+
!request_is_api? && @user&.is_admin?
1616
end
1717

1818
def manage?
1919
# Do not allow updates via API
2020
# Only admin role can update other users or the users themselves
21-
!request_is_api?(request) && (@user && (@user == @record || @user.is_admin?))
21+
!request_is_api? && (@user && (@user == @record || @user.is_admin?))
2222
end
2323

2424
def change_token?

0 commit comments

Comments
 (0)