Add search for external users
This commit is contained in:
@ -12,8 +12,12 @@
|
||||
}
|
||||
|
||||
.filter-form {
|
||||
.form-group:not(:last-child) {
|
||||
margin-right: 1em;
|
||||
.form-group {
|
||||
margin-bottom: 1em;
|
||||
|
||||
&:not(:last-child) {
|
||||
margin-right: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
input, select {
|
||||
|
@ -5,7 +5,8 @@ class ExternalUsersController < ApplicationController
|
||||
private :authorize!
|
||||
|
||||
def index
|
||||
@users = ExternalUser.all.includes(:consumer).paginate(page: params[:page])
|
||||
@search = ExternalUser.ransack(params[:q])
|
||||
@users = @search.result.includes(:consumer).paginate(page: params[:page])
|
||||
authorize!
|
||||
end
|
||||
|
||||
|
@ -2,6 +2,7 @@ class Consumer < ApplicationRecord
|
||||
has_many :users
|
||||
|
||||
scope :with_internal_users, -> { where('id IN (SELECT DISTINCT consumer_id FROM internal_users)') }
|
||||
scope :with_external_users, -> { where('id IN (SELECT DISTINCT consumer_id FROM external_users)') }
|
||||
scope :with_study_groups, -> { where('id IN (SELECT DISTINCT consumer_id FROM study_groups)') }
|
||||
|
||||
validates :name, presence: true
|
||||
|
@ -1,7 +1,7 @@
|
||||
class User < ApplicationRecord
|
||||
self.abstract_class = true
|
||||
|
||||
ROLES = %w(admin teacher)
|
||||
ROLES = %w(admin teacher learner)
|
||||
|
||||
belongs_to :consumer
|
||||
has_many :study_group_memberships, as: :user
|
||||
|
@ -1,5 +1,23 @@
|
||||
h1 = ExternalUser.model_name.human(count: 2)
|
||||
|
||||
= render(layout: 'shared/form_filters') do |f|
|
||||
.row.px-3
|
||||
.form-group
|
||||
= f.label(:name_cont, t('activerecord.attributes.external_user.name'), class: 'sr-only')
|
||||
= f.search_field(:name_cont, class: 'form-control', placeholder: t('activerecord.attributes.external_user.name'))
|
||||
.form-group
|
||||
= f.label(:email_cont, t('activerecord.attributes.external_user.email'), class: 'sr-only')
|
||||
= f.search_field(:email_cont, class: 'form-control', placeholder: t('activerecord.attributes.external_user.email'))
|
||||
.form-group
|
||||
= f.label(:external_id_cont, t('activerecord.attributes.external_user.external_id'), class: 'sr-only')
|
||||
= f.search_field(:external_id_cont, class: 'form-control', placeholder: t('activerecord.attributes.external_user.external_id'))
|
||||
.row.px-3
|
||||
.form-group
|
||||
= f.label(:role_eq, t('activerecord.attributes.external_user.role'), class: 'sr-only')
|
||||
= 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'))
|
||||
.form-group
|
||||
= f.label(:consumer_id_eq, t('activerecord.attributes.external_user.consumer'), class: 'sr-only')
|
||||
= f.collection_select(:consumer_id_eq, Consumer.with_external_users, :id, :name, class: 'form-control', prompt: t('activerecord.attributes.external_user.consumer'))
|
||||
.table-responsive
|
||||
table.table
|
||||
thead
|
||||
|
@ -2,6 +2,9 @@ h1 = @user.displayname
|
||||
|
||||
= row(label: 'external_user.name', value: @user.name)
|
||||
= row(label: 'external_user.email', value: @user.email)
|
||||
= row(label: 'external_user.external_id') do
|
||||
code
|
||||
= @user.external_id
|
||||
= row(label: 'external_user.consumer', value: link_to(@user.consumer, @user.consumer))
|
||||
= row(label: 'external_user.role', value: t("users.roles.#{@user.role}"))
|
||||
|
||||
|
@ -1,9 +1,11 @@
|
||||
.card.card-body.bg-light
|
||||
= search_form_for(@search, class: 'clearfix filter-form form-inline') do |f|
|
||||
= yield(f)
|
||||
.btn-group.ml-auto
|
||||
button.btn.btn-primary type='submit' = t('shared.apply_filters')
|
||||
button.btn.btn-primary.dropdown-toggle data-toggle='dropdown' type='button'
|
||||
ul.dropdown-menu role='menu'
|
||||
li
|
||||
a.dropdown-item href=request.path = t('shared.reset_filters')
|
||||
.card.card-body.bg-light.flex-row.container.row.mx-0
|
||||
= search_form_for(@search, class: 'clearfix filter-form form-inline w-100') do |f|
|
||||
.col-sm.p-0
|
||||
= yield(f)
|
||||
.col-sm-auto.p-0
|
||||
.btn-group.ml-auto
|
||||
button.btn.btn-primary type='submit' = t('shared.apply_filters')
|
||||
button.btn.btn-primary.dropdown-toggle data-toggle='dropdown' type='button'
|
||||
ul.dropdown-menu role='menu'
|
||||
li
|
||||
a.dropdown-item href=request.path = t('shared.reset_filters')
|
||||
|
@ -52,6 +52,7 @@ de:
|
||||
external_user:
|
||||
consumer: Konsument
|
||||
email: E-Mail
|
||||
external_id: Externe ID
|
||||
name: Name
|
||||
role: Rolle
|
||||
file:
|
||||
|
@ -52,6 +52,7 @@ en:
|
||||
external_user:
|
||||
consumer: Consumer
|
||||
email: Email
|
||||
external_id: External ID
|
||||
name: Name
|
||||
role: Role
|
||||
file:
|
||||
|
Reference in New Issue
Block a user