Skip to content

Commit

Permalink
GRN2-210: Add ability to search by role (bigbluebutton#659)
Browse files Browse the repository at this point in the history
* Add ability to search by role

* Fix role search to work with select
  • Loading branch information
shawn-higgins1 authored and jfederico committed Jul 23, 2019
1 parent 68eb677 commit 81aea82
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 12 deletions.
12 changes: 5 additions & 7 deletions app/controllers/admins_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -206,15 +206,13 @@ def user_list
User.without_role(:super_admin).where.not(id: current_user.id).includes(:roles)
end

list = @role.present? ? initial_list.with_role(@role.to_sym) : initial_list

if Rails.configuration.loadbalanced_configuration
list.where(provider: user_settings_provider)
.admins_search(@search)
.admins_order(@order_column, @order_direction)
initial_list.where(provider: user_settings_provider)
.admins_search(@search, @role)
.admins_order(@order_column, @order_direction)
else
list.admins_search(@search)
.admins_order(@order_column, @order_direction)
initial_list.admins_search(@search, @role)
.admins_order(@order_column, @order_direction)
end
end

Expand Down
22 changes: 18 additions & 4 deletions app/models/user.rb
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ def auth_image(auth)
end
end

def self.admins_search(string)
def self.admins_search(string, role)
active_database = Rails.configuration.database_configuration[Rails.env]["adapter"]
# Postgres requires created_at to be cast to a string
created_at_query = if active_database == "postgresql"
Expand All @@ -110,10 +110,24 @@ def self.admins_search(string)
"created_at"
end

search_query = "users.name LIKE :search OR email LIKE :search OR username LIKE :search" \
" OR users.#{created_at_query} LIKE :search OR provider LIKE :search"
search_query = ""
role_search_param = ""
if role.present?
search_query = "(users.name LIKE :search OR email LIKE :search OR username LIKE :search" \
" OR users.#{created_at_query} LIKE :search OR provider LIKE :search)" \
" AND roles.name = :roles_search"
role_search_param = role
else
search_query = "users.name LIKE :search OR email LIKE :search OR username LIKE :search" \
" OR users.#{created_at_query} LIKE :search OR provider LIKE :search" \
" OR roles.name LIKE :roles_search"
role_search_param = "%#{string}%".downcase
end

search_param = "%#{string}%"
where(search_query, search: search_param)
joins("LEFT OUTER JOIN users_roles ON users_roles.user_id = users.id LEFT OUTER JOIN roles " \
"ON roles.id = users_roles.role_id").distinct
.where(search_query, search: search_param, roles_search: role_search_param)
end

def self.admins_order(column, direction)
Expand Down
2 changes: 1 addition & 1 deletion config/locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -360,7 +360,7 @@ en:
confirm: New Password Confirmation
update: Update Password
roles:
administrator: Administrator
administrator: Admin
banned: Banned
pending: Pending
super_admin: Super Admin
Expand Down

0 comments on commit 81aea82

Please sign in to comment.