allowed role and badge filtering, made User.search take Role and Badge as params
This commit is contained in:
@@ -7,11 +7,10 @@ class UsersController < ApplicationController
|
|||||||
before_filter :set_user, except: [:index, :new, :create, :lost_password, :reset_password, :suggestions]
|
before_filter :set_user, except: [:index, :new, :create, :lost_password, :reset_password, :suggestions]
|
||||||
|
|
||||||
def index
|
def index
|
||||||
role = Role.find_by(name: params[:role]) unless role.try(:downcase) == "staff"
|
role = Role.find_by(name: params[:role])
|
||||||
badge = Badge.find_by(name: params[:badge])
|
badge = Badge.find_by(name: params[:badge])
|
||||||
|
|
||||||
@users = User.search(params[:search], role, badge)
|
@users = User.search(params[:search], role, badge, params[:staff])
|
||||||
@users = @users.order("roles.value desc", "confirmed desc", :name) unless params[:badge]
|
|
||||||
@count = @users.size
|
@count = @users.size
|
||||||
@users = @users.page(params[:page]).per(100)
|
@users = @users.page(params[:page]).per(100)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -151,6 +151,10 @@ class User < ActiveRecord::Base
|
|||||||
self.role ||= Role.get(:normal)
|
self.role ||= Role.get(:normal)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_badge
|
||||||
|
self.badge ||= Badge.get(:none)
|
||||||
|
end
|
||||||
|
|
||||||
def set_uuid
|
def set_uuid
|
||||||
if !self.uuid.present?
|
if !self.uuid.present?
|
||||||
# idk
|
# idk
|
||||||
@@ -175,9 +179,9 @@ class User < ActiveRecord::Base
|
|||||||
self.email_token ||= SecureRandom.hex(16)
|
self.email_token ||= SecureRandom.hex(16)
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.search (search, role, badge)
|
def self.search (search, role, badge, staff)
|
||||||
if role
|
if role
|
||||||
if role.try(:downcase) == "staff"
|
if staff
|
||||||
users = User.joins(:role).where("roles.value >= ?", Role.get(:mod).to_i)
|
users = User.joins(:role).where("roles.value >= ?", Role.get(:mod).to_i)
|
||||||
else
|
else
|
||||||
users = User.joins(:role).where(role: role)
|
users = User.joins(:role).where(role: role)
|
||||||
@@ -189,6 +193,8 @@ class User < ActiveRecord::Base
|
|||||||
users = User.joins(:role).all.where.not(id: User.first.id)
|
users = User.joins(:role).all.where.not(id: User.first.id)
|
||||||
end
|
end
|
||||||
search_san = User.send(:sanitize_sql_like, search.to_s)
|
search_san = User.send(:sanitize_sql_like, search.to_s)
|
||||||
users.where("users.name like ? OR ign like ?", "%#{search_san}%", "%#{search_san}%")
|
users = users.where("users.name like ? OR ign like ?", "%#{search_san}%", "%#{search_san}%")
|
||||||
|
users = users.order("roles.value desc", "confirmed desc", :name) unless badge
|
||||||
|
users
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
<div class="searchfield">
|
<%= form_tag(users_path, method: :get) do %>
|
||||||
<%= form_tag({controller: "users", action: "index"}, method: :get, enforce_utf8: false) do %>
|
<%= text_field_tag "search", params[:search], placeholder: "Search for a user", class: "searchfield field" %>
|
||||||
<%= text_field_tag "search", params[:search], placeholder: "Search for a user", style: "width:300px" %>
|
<%= submit_tag "Go", class: "searchfield btn", name: nil %>
|
||||||
<%= submit_tag "Go", class: "searchfield btn", style: "width:40px", name: nil %>
|
<%= hidden_field_tag "role", params[:role] if params[:role] %>
|
||||||
<%= hidden_field_tag "role", params[:role] if params[:role] %>
|
<%= hidden_field_tag "badge", params[:badge] if params[:badge]%>
|
||||||
<%= hidden_field_tag "badge", params[:badge] if params[:badge]%>
|
<% end %>
|
||||||
<% end %>
|
|
||||||
</div>
|
|
||||||
<h1>
|
<h1>
|
||||||
<%
|
<%
|
||||||
if params[:role] && !params[:badge]
|
if params[:role] && !params[:badge]
|
||||||
|
|||||||
Reference in New Issue
Block a user