forked from External/greenlight
Added filter for user role (#540)
This commit is contained in:
parent
eac8290001
commit
996518eea7
|
@ -31,8 +31,21 @@ $(document).on('turbolinks:load', function(){
|
|||
$("#delete-confirm").parent().attr("action", url)
|
||||
})
|
||||
|
||||
/* COLOR SELECTORS */
|
||||
//clear the role filter if user clicks on the x
|
||||
$(".clear-role").click(function(data) {
|
||||
search = new URL(location.href).searchParams.get('search')
|
||||
|
||||
url = window.location.pathname + "?page=1"
|
||||
|
||||
if (search) {
|
||||
url += "&search=" + search
|
||||
}
|
||||
|
||||
window.location.replace(url);
|
||||
})
|
||||
|
||||
/* COLOR SELECTORS */
|
||||
|
||||
$('#colorinput-regular').ColorPicker({
|
||||
onBeforeShow: function () {
|
||||
var colour = rgb2hex($("#colorinput-regular").css("background-color"))
|
||||
|
@ -93,6 +106,19 @@ function changeBrandingImage(path) {
|
|||
$.post(path, {url: url})
|
||||
}
|
||||
|
||||
// Filters by role
|
||||
function filterRole(role) {
|
||||
search = new URL(location.href).searchParams.get('search')
|
||||
|
||||
url = window.location.pathname + "?page=1" + "&role=" + role
|
||||
|
||||
if (search) {
|
||||
url += "&search=" + search
|
||||
}
|
||||
|
||||
window.location.replace(url);
|
||||
}
|
||||
|
||||
function rgb2hex(rgb) {
|
||||
rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
|
||||
function hex(x) {
|
||||
|
@ -100,3 +126,4 @@ function rgb2hex(rgb) {
|
|||
}
|
||||
return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);
|
||||
}
|
||||
|
||||
|
|
|
@ -77,10 +77,19 @@ function searchPage() {
|
|||
var controller = $("body").data('controller');
|
||||
var action = $("body").data('action');
|
||||
|
||||
// Check if the user filtered by role
|
||||
role = new URL(location.href).searchParams.get('role')
|
||||
|
||||
url = window.location.pathname + "?page=1&search=" + search
|
||||
|
||||
if (role) {
|
||||
url += "&role=" + role
|
||||
}
|
||||
|
||||
if(controller === "rooms" && action === "show"){
|
||||
window.location.replace(window.location.pathname + "?page=1&search=" + search + "#recordings-table");
|
||||
window.location.replace(url + "#recordings-table");
|
||||
} else{
|
||||
window.location.replace(window.location.pathname + "?page=1&search=" + search);
|
||||
window.location.replace(url);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -90,9 +99,17 @@ function clearSearch() {
|
|||
var controller = $("body").data('controller');
|
||||
var action = $("body").data('action');
|
||||
|
||||
role = new URL(location.href).searchParams.get('role')
|
||||
|
||||
url = window.location.pathname + "?page=1"
|
||||
|
||||
if (role) {
|
||||
url += "&role=" + role
|
||||
}
|
||||
|
||||
if(controller === "rooms" && action === "show"){
|
||||
window.location.replace(window.location.pathname + "?page=1" + "#recordings-table");
|
||||
window.location.replace(url + "#recordings-table");
|
||||
} else{
|
||||
window.location.replace(window.location.pathname + "?page=1");
|
||||
window.location.replace(url);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
@import "tabler/stamp";
|
||||
//@import "tabler/chat";
|
||||
//@import "tabler/example";
|
||||
//@import "tabler/tag";
|
||||
@import "tabler/tag";
|
||||
//@import "tabler/syntax";
|
||||
//@import "tabler/infobox";
|
||||
//@import "tabler/carousel";
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
// with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#users-table {
|
||||
.user-role:hover {
|
||||
cursor: default;
|
||||
.user-role {
|
||||
color: white !important;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -31,6 +31,10 @@
|
|||
}
|
||||
}
|
||||
|
||||
.tag i {
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
#branding-image{
|
||||
z-index: auto;
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ class AdminsController < ApplicationController
|
|||
@search = params[:search] || ""
|
||||
@order_column = params[:column] && params[:direction] != "none" ? params[:column] : "created_at"
|
||||
@order_direction = params[:direction] && params[:direction] != "none" ? params[:direction] : "DESC"
|
||||
@role = params[:role] || ""
|
||||
|
||||
@pagy, @users = pagy(user_list)
|
||||
end
|
||||
|
@ -161,15 +162,18 @@ class AdminsController < ApplicationController
|
|||
|
||||
# Gets the list of users based on your configuration
|
||||
def user_list
|
||||
list = if @role.present?
|
||||
User.with_role(@role.to_sym).where.not(id: current_user.id)
|
||||
else
|
||||
User.where.not(id: current_user.id)
|
||||
end
|
||||
|
||||
if Rails.configuration.loadbalanced_configuration
|
||||
User.without_role(:super_admin)
|
||||
.where(provider: user_settings_provider)
|
||||
.where.not(id: current_user.id)
|
||||
list.where(provider: user_settings_provider)
|
||||
.admins_search(@search)
|
||||
.admins_order(@order_column, @order_direction)
|
||||
else
|
||||
User.where.not(id: current_user.id)
|
||||
.admins_search(@search)
|
||||
list.admins_search(@search)
|
||||
.admins_order(@order_column, @order_direction)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -111,8 +111,8 @@ class User < ApplicationRecord
|
|||
"created_at"
|
||||
end
|
||||
|
||||
search_query = "name LIKE :search OR email LIKE :search OR username LIKE :search" \
|
||||
" OR #{created_at_query} LIKE :search OR provider LIKE :search"
|
||||
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_param = "%#{string}%"
|
||||
where(search_query, search: search_param)
|
||||
end
|
||||
|
|
|
@ -13,6 +13,10 @@
|
|||
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
%>
|
||||
|
||||
<% if @role.present? %>
|
||||
<%= render "shared/components/admins_tags" %>
|
||||
<% end %>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
|
@ -69,27 +73,7 @@
|
|||
<td><%= user.provider %></td>
|
||||
<td class="text-center">
|
||||
<% roles = user.roles().pluck(:name) %>
|
||||
<% if roles.include?("denied")%>
|
||||
<div class="user-role btn btn-sm btn-gray-dark">
|
||||
<%= t("roles.banned") %>
|
||||
</div>
|
||||
<% elsif roles.include?("pending") %>
|
||||
<div class="user-role btn btn-sm btn-cyan">
|
||||
<%= t("roles.pending") %>
|
||||
</div>
|
||||
<% elsif roles.include?("super_admin") %>
|
||||
<div class="user-role btn btn-sm btn-red">
|
||||
<%= t("roles.super_admin") %>
|
||||
</div>
|
||||
<% elsif roles.include?("admin") %>
|
||||
<div class="user-role btn btn-sm btn-yellow">
|
||||
<%= t("roles.administrator") %>
|
||||
</div>
|
||||
<% else %>
|
||||
<div class="user-role btn btn-sm btn-gray">
|
||||
<%= t("roles.user") %>
|
||||
</div>
|
||||
<% end %>
|
||||
<%= render "shared/components/admins_role", roles: roles %>
|
||||
</td>
|
||||
<td>
|
||||
<% if roles.include?("pending") %>
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
<%
|
||||
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/.
|
||||
# Copyright (c) 2018 BigBlueButton Inc. and by respective authors (see below).
|
||||
# This program is free software; you can redistribute it and/or modify it under the
|
||||
# terms of the GNU Lesser General Public License as published by the Free Software
|
||||
# Foundation; either version 3.0 of the License, or (at your option) any later
|
||||
# version.
|
||||
#
|
||||
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
# You should have received a copy of the GNU Lesser General Public License along
|
||||
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
%>
|
||||
|
||||
<% if roles.include?("denied")%>
|
||||
<button class="user-role btn btn-sm btn-gray-dark" onclick="filterRole('denied')">
|
||||
<%= t("roles.banned") %>
|
||||
</button>
|
||||
<% elsif roles.include?("pending") %>
|
||||
<button class="user-role btn btn-sm btn-cyan" onclick="filterRole('pending')">
|
||||
<%= t("roles.pending") %>
|
||||
</button>
|
||||
<% elsif roles.include?("super_admin") %>
|
||||
<button class="user-role btn btn-sm btn-red" onclick="filterRole('super_admin')">
|
||||
<%= t("roles.super_admin") %>
|
||||
</button>
|
||||
<% elsif roles.include?("admin") %>
|
||||
<button class="user-role btn btn-sm btn-yellow" onclick="filterRole('admin')">
|
||||
<%= t("roles.administrator") %>
|
||||
</button>
|
||||
<% else %>
|
||||
<button class="user-role btn btn-sm btn-gray" onclick="filterRole('user')">
|
||||
<%= t("roles.user") %>
|
||||
</button>
|
||||
<% end %>
|
|
@ -0,0 +1,57 @@
|
|||
<%
|
||||
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/.
|
||||
# Copyright (c) 2018 BigBlueButton Inc. and by respective authors (see below).
|
||||
# This program is free software; you can redistribute it and/or modify it under the
|
||||
# terms of the GNU Lesser General Public License as published by the Free Software
|
||||
# Foundation; either version 3.0 of the License, or (at your option) any later
|
||||
# version.
|
||||
#
|
||||
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
# You should have received a copy of the GNU Lesser General Public License along
|
||||
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
%>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-12 tags">
|
||||
<% if @role == "denied"%>
|
||||
<span class="tag tag-gray-dark">
|
||||
<%= t("roles.banned") %>
|
||||
<a class="tag-addon clear-role">
|
||||
<i class="fas fa-times"></i>
|
||||
</a>
|
||||
</span>
|
||||
<% elsif @role == "pending" %>
|
||||
<span class="tag tag-cyan">
|
||||
<%= t("roles.pending") %>
|
||||
<a class="tag-addon clear-role">
|
||||
<i class="fas fa-times"></i>
|
||||
</a>
|
||||
</span>
|
||||
<% elsif @role == "super_admin" %>
|
||||
<span class="tag tag-red">
|
||||
<%= t("roles.super_admin") %>
|
||||
<a class="tag-addon clear-role">
|
||||
<i class="fas fa-times"></i>
|
||||
</a>
|
||||
</span>
|
||||
<% elsif @role == "admin" %>
|
||||
<span class="tag tag-yellow">
|
||||
<%= t("roles.administrator") %>
|
||||
<a class="tag-addon clear-role">
|
||||
<i class="fas fa-times"></i>
|
||||
</a>
|
||||
</span>
|
||||
<% else %>
|
||||
<span class="tag tag-gray">
|
||||
<%= t("roles.user") %>
|
||||
<a class="tag-addon clear-role">
|
||||
<i class="fas fa-times"></i>
|
||||
</a>
|
||||
</span>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
Loading…
Reference in New Issue