Simplify user search for external teachers

This commit is contained in:
Sebastian Serth
2022-09-04 19:03:15 +02:00
parent fbe80ac557
commit 1581d658ea
4 changed files with 34 additions and 22 deletions

View File

@ -9,7 +9,7 @@ class ExternalUsersController < ApplicationController
private :authorize! private :authorize!
def index def index
@search = ExternalUser.ransack(params[:q]) @search = ExternalUser.ransack(params[:q], {auth_object: current_user})
@users = @search.result.in_study_group_of(current_user).includes(:consumer).paginate(page: params[:page], per_page: per_page_param) @users = @search.result.in_study_group_of(current_user).includes(:consumer).paginate(page: params[:page], per_page: per_page_param)
authorize! authorize!
end end

View File

@ -67,7 +67,7 @@ class InternalUsersController < ApplicationController
end end
def index def index
@search = InternalUser.ransack(params[:q]) @search = InternalUser.ransack(params[:q], {auth_object: current_user})
@users = @search.result.includes(:consumer).order(:name).paginate(page: params[:page], per_page: per_page_param) @users = @search.result.includes(:consumer).order(:name).paginate(page: params[:page], per_page: per_page_param)
authorize! authorize!
end end

View File

@ -42,7 +42,11 @@ class User < ApplicationRecord
displayname displayname
end end
def self.ransackable_attributes(_auth_object = nil) def self.ransackable_attributes(auth_object)
%w[name email external_id consumer_id role] if auth_object.admin?
%w[name email external_id consumer_id role]
else
%w[name external_id]
end
end end
end end

View File

@ -1,24 +1,32 @@
h1 = ExternalUser.model_name.human(count: 2) h1 = ExternalUser.model_name.human(count: 2)
= render(layout: 'shared/form_filters') do |f| = render(layout: 'shared/form_filters') do |f|
.col-md-9.col - if current_user.admin?
.row.align-items-center .col-md-9.col
.col .row.align-items-center
= f.label(:name_cont, t('activerecord.attributes.external_user.name'), class: 'visually-hidden form-label') .col
= f.search_field(:name_cont, class: 'form-control', placeholder: t('activerecord.attributes.external_user.name')) = f.label(:name_cont, t('activerecord.attributes.external_user.name'), class: 'visually-hidden form-label')
.col.mt-0.mt-sm-3.mt-md-0 = f.search_field(:name_cont, class: 'form-control', placeholder: t('activerecord.attributes.external_user.name'))
= f.label(:email_cont, t('activerecord.attributes.external_user.email'), class: 'visually-hidden form-label') .col.mt-0.mt-sm-3.mt-md-0
= f.search_field(:email_cont, class: 'form-control', placeholder: t('activerecord.attributes.external_user.email')) = f.label(:email_cont, t('activerecord.attributes.external_user.email'), class: 'visually-hidden form-label')
.col.mt-3.mt-lg-0 = f.search_field(:email_cont, class: 'form-control', placeholder: t('activerecord.attributes.external_user.email'))
= f.label(:external_id_cont, t('activerecord.attributes.external_user.external_id'), class: 'visually-hidden form-label') .col.mt-3.mt-lg-0
= f.search_field(:external_id_cont, class: 'form-control', placeholder: t('activerecord.attributes.external_user.external_id')) = f.label(:external_id_cont, t('activerecord.attributes.external_user.external_id'), class: 'visually-hidden form-label')
.row = f.search_field(:external_id_cont, class: 'form-control', placeholder: t('activerecord.attributes.external_user.external_id'))
.col-auto .row
= f.label(:role_eq, t('activerecord.attributes.external_user.role'), class: 'visually-hidden form-label') .col-auto
= f.select(:role_eq, User::ROLES.map { |role| [t("users.roles.#{role}"), role] }, { include_blank: true }, class: 'form-control', prompt: t('activerecord.attributes.external_user.role')) = f.label(:role_eq, t('activerecord.attributes.external_user.role'), class: 'visually-hidden form-label')
.col-auto.mt-3.mt-lg-0 = f.select(:role_eq, User::ROLES.map { |role| [t("users.roles.#{role}"), role] }, { include_blank: true }, class: 'form-control', prompt: t('activerecord.attributes.external_user.role'))
= f.label(:consumer_id_eq, t('activerecord.attributes.external_user.consumer'), class: 'visually-hidden form-label') .col-auto.mt-3.mt-lg-0
= f.collection_select(:consumer_id_eq, Consumer.with_external_users, :id, :name, class: 'form-control', prompt: t('activerecord.attributes.external_user.consumer')) = f.label(:consumer_id_eq, t('activerecord.attributes.external_user.consumer'), class: 'visually-hidden form-label')
= f.collection_select(:consumer_id_eq, Consumer.with_external_users, :id, :name, class: 'form-control', prompt: t('activerecord.attributes.external_user.consumer'))
- else
.col-auto
= f.label(:name_cont, t('activerecord.attributes.external_user.name'), class: 'visually-hidden form-label')
= f.search_field(:name_cont, class: 'form-control', placeholder: t('activerecord.attributes.external_user.name'))
.col-auto
= f.label(:external_id_cont, t('activerecord.attributes.external_user.external_id'), class: 'visually-hidden form-label')
= f.search_field(:external_id_cont, class: 'form-control', placeholder: t('activerecord.attributes.external_user.external_id'))
.table-responsive .table-responsive
table.table table.table
thead thead