From 1581d658ea973a324e32a624308e564b462d2878 Mon Sep 17 00:00:00 2001 From: Sebastian Serth Date: Sun, 4 Sep 2022 19:03:15 +0200 Subject: [PATCH] Simplify user search for external teachers --- app/controllers/external_users_controller.rb | 2 +- app/controllers/internal_users_controller.rb | 2 +- app/models/user.rb | 8 +++- app/views/external_users/index.html.slim | 44 ++++++++++++-------- 4 files changed, 34 insertions(+), 22 deletions(-) diff --git a/app/controllers/external_users_controller.rb b/app/controllers/external_users_controller.rb index 18a287c2..10f7a77c 100644 --- a/app/controllers/external_users_controller.rb +++ b/app/controllers/external_users_controller.rb @@ -9,7 +9,7 @@ class ExternalUsersController < ApplicationController private :authorize! 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) authorize! end diff --git a/app/controllers/internal_users_controller.rb b/app/controllers/internal_users_controller.rb index aa528d25..a5125fc6 100644 --- a/app/controllers/internal_users_controller.rb +++ b/app/controllers/internal_users_controller.rb @@ -67,7 +67,7 @@ class InternalUsersController < ApplicationController end 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) authorize! end diff --git a/app/models/user.rb b/app/models/user.rb index fb718c57..ce519fc2 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -42,7 +42,11 @@ class User < ApplicationRecord displayname end - def self.ransackable_attributes(_auth_object = nil) - %w[name email external_id consumer_id role] + def self.ransackable_attributes(auth_object) + if auth_object.admin? + %w[name email external_id consumer_id role] + else + %w[name external_id] + end end end diff --git a/app/views/external_users/index.html.slim b/app/views/external_users/index.html.slim index daa4aacb..20f86edb 100644 --- a/app/views/external_users/index.html.slim +++ b/app/views/external_users/index.html.slim @@ -1,24 +1,32 @@ h1 = ExternalUser.model_name.human(count: 2) = render(layout: 'shared/form_filters') do |f| - .col-md-9.col - .row.align-items-center - .col - = 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.mt-0.mt-sm-3.mt-md-0 - = f.label(:email_cont, t('activerecord.attributes.external_user.email'), class: 'visually-hidden form-label') - = f.search_field(:email_cont, class: 'form-control', placeholder: t('activerecord.attributes.external_user.email')) - .col.mt-3.mt-lg-0 - = 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')) - .row - .col-auto - = f.label(:role_eq, t('activerecord.attributes.external_user.role'), class: 'visually-hidden form-label') - = 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')) - .col-auto.mt-3.mt-lg-0 - = 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')) + - if current_user.admin? + .col-md-9.col + .row.align-items-center + .col + = 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.mt-0.mt-sm-3.mt-md-0 + = f.label(:email_cont, t('activerecord.attributes.external_user.email'), class: 'visually-hidden form-label') + = f.search_field(:email_cont, class: 'form-control', placeholder: t('activerecord.attributes.external_user.email')) + .col.mt-3.mt-lg-0 + = 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')) + .row + .col-auto + = f.label(:role_eq, t('activerecord.attributes.external_user.role'), class: 'visually-hidden form-label') + = 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')) + .col-auto.mt-3.mt-lg-0 + = 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.table thead