Skip to content

Commit 2bf2e73

Browse files
authored
Perf: Refactor role checks with #has_cached_role? (#4880)
1 parent 2f3ece1 commit 2bf2e73

File tree

17 files changed

+27
-26
lines changed

17 files changed

+27
-26
lines changed

app/controllers/admin/broadcast_announcements_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ class Admin::BroadcastAnnouncementsController < AdminController
33
before_action :require_admin
44

55
def require_admin
6-
verboten! unless current_user.has_role?(Role::SUPER_ADMIN)
6+
verboten! unless current_user.has_cached_role?(Role::SUPER_ADMIN)
77
end
88

99
def index

app/controllers/admin_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ class AdminController < ApplicationController
33
before_action :require_admin
44

55
def require_admin
6-
verboten! unless current_user.has_role?(Role::SUPER_ADMIN)
6+
verboten! unless current_user.has_cached_role?(Role::SUPER_ADMIN)
77
end
88

99
def dashboard

app/controllers/application_controller.rb

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,22 +59,21 @@ def dashboard_path_from_current_role
5959
def authorize_user
6060
return unless params[:controller] # part of omniauth controller flow
6161
verboten! unless params[:controller].include?("devise") ||
62-
current_user.has_role?(Role::SUPER_ADMIN) ||
63-
current_user.has_role?(Role::ORG_USER, current_organization) ||
64-
current_user.has_role?(Role::ORG_ADMIN, current_organization) ||
65-
current_user.has_role?(Role::PARTNER, current_partner)
62+
current_user.has_cached_role?(Role::SUPER_ADMIN) ||
63+
current_user.has_cached_role?(Role::ORG_USER, current_organization) ||
64+
current_user.has_cached_role?(Role::ORG_ADMIN, current_organization) ||
65+
current_user.has_cached_role?(Role::PARTNER, current_partner)
6666
end
6767

6868
def authorize_admin
69-
verboten! unless current_user.has_role?(Role::SUPER_ADMIN) ||
70-
current_user.has_role?(Role::ORG_ADMIN, current_organization)
69+
verboten! unless current_user.has_cached_role?(Role::SUPER_ADMIN) ||
70+
current_user.has_cached_role?(Role::ORG_ADMIN, current_organization)
7171
end
7272

7373
def log_active_user
7474
if current_user && should_update_last_request_at?
7575
# we don't want the user record to validate or run callbacks when we're tracking activity
7676
current_user.update_columns(last_request_at: Time.now.utc)
77-
7877
end
7978
end
8079

app/controllers/distributions_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ def edit
177177
@distribution = Distribution.includes(:line_items).includes(:storage_location).find(params[:id])
178178
@distribution.initialize_request_items
179179
if (!@distribution.complete? && @distribution.future?) ||
180-
current_user.has_role?(Role::ORG_ADMIN, current_organization)
180+
current_user.has_cached_role?(Role::ORG_ADMIN, current_organization)
181181
@distribution.line_items.build if @distribution.line_items.size.zero?
182182
@items = current_organization.items.active.alphabetized
183183
@partner_list = current_organization.partners.alphabetized

app/controllers/organizations_controller.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ def remove_user
8181
private
8282

8383
def authorize_user
84-
verboten! unless current_user.has_role?(Role::SUPER_ADMIN) ||
85-
current_user.has_role?(Role::ORG_USER, current_organization)
84+
verboten! unless current_user.has_cached_role?(Role::SUPER_ADMIN) ||
85+
current_user.has_cached_role?(Role::ORG_USER, current_organization)
8686
end
8787

8888
def organization_params
@@ -121,7 +121,7 @@ def request_type_formatter(params)
121121
end
122122

123123
def user_update_redirect_path
124-
if current_user.has_role?(Role::SUPER_ADMIN)
124+
if current_user.has_cached_role?(Role::SUPER_ADMIN)
125125
admin_organization_path(current_organization.id)
126126
else
127127
organization_path

app/helpers/application_helper.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def menu_open?(controller_action_names)
2323
end
2424

2525
def can_administrate?
26-
current_user.has_role?(Role::ORG_ADMIN, current_organization)
26+
current_user.has_cached_role?(Role::ORG_ADMIN, current_organization)
2727
end
2828

2929
def navigation_link_to(*args)

app/views/distributions/show.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383
</div>
8484
<div class="card-footer">
8585
<%= update_button_to picked_up_distribution_path(@distribution), {text: "Distribution Complete", size: "md"} if @distribution.scheduled? %>
86-
<% if @distribution.future? || current_user.has_role?(Role::ORG_ADMIN, current_organization) %>
86+
<% if @distribution.future? || current_user.has_cached_role?(Role::ORG_ADMIN, current_organization) %>
8787
<%= edit_button_to edit_distribution_path(@distribution), {
8888
text: "Make a Correction",
8989
enabled: !@distribution.has_inactive_item?,

app/views/donations/show.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
enabled: !@donation.has_inactive_item?,
7676
size: "md" } %>
7777
<%= new_button_to new_distribution_path(donation_id: @donation.id, storage_location_id: @donation.storage_location_id), { text: "Start a new Distribution" } %>
78-
<% if current_user.has_role?(Role::ORG_ADMIN, current_organization) %>
78+
<% if current_user.has_cached_role?(Role::ORG_ADMIN, current_organization) %>
7979
<%= delete_button_to donation_path(@donation), {
8080
size: "md",
8181
enabled: !@donation.has_inactive_item?,

app/views/item_categories/show.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
<tr>
7878
<td><%= item.name %> </td>
7979
<td><%= view_button_to item_path(item) %>
80-
<% if current_user.has_role?(Role::ORG_ADMIN, current_organization) %>
80+
<% if current_user.has_cached_role?(Role::ORG_ADMIN, current_organization) %>
8181
<%= delete_button_to(remove_category_item_path(item), method: :patch, text: "Remove from category") %>
8282
<% end %>
8383
</td>

app/views/items/_form.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
<%= f.input_field :distribution_quantity, class: "form-control" %>
3131
<% end %>
3232

33-
<% if current_user.has_role?(Role::ORG_ADMIN, current_organization) %>
33+
<% if current_user.has_cached_role?(Role::ORG_ADMIN, current_organization) %>
3434
<%= f.input :name, label: "On hand minimum quantity", wrapper: :input_group do %>
3535
<%= f.input_field :on_hand_minimum_quantity, input_html: {value: 0}, class: "form-control" %>
3636
<% end %>

0 commit comments

Comments
 (0)