From 9837f12b595cbd783e835f93dd995f83b68e6749 Mon Sep 17 00:00:00 2001 From: MrYummy Date: Fri, 2 Jun 2017 18:19:06 +0200 Subject: allowed role and badge filtering, made User.search take Role and Badge as params --- app/controllers/users_controller.rb | 5 ++--- app/models/user.rb | 12 +++++++++--- app/views/users/index.html.erb | 14 ++++++-------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 60011a2..dd12a98 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -7,11 +7,10 @@ class UsersController < ApplicationController before_filter :set_user, except: [:index, :new, :create, :lost_password, :reset_password, :suggestions] 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]) - @users = User.search(params[:search], role, badge) - @users = @users.order("roles.value desc", "confirmed desc", :name) unless params[:badge] + @users = User.search(params[:search], role, badge, params[:staff]) @count = @users.size @users = @users.page(params[:page]).per(100) end diff --git a/app/models/user.rb b/app/models/user.rb index ff09c70..24e7a2d 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -151,6 +151,10 @@ class User < ActiveRecord::Base self.role ||= Role.get(:normal) end + def set_badge + self.badge ||= Badge.get(:none) + end + def set_uuid if !self.uuid.present? # idk @@ -175,9 +179,9 @@ class User < ActiveRecord::Base self.email_token ||= SecureRandom.hex(16) end - def self.search (search, role, badge) + def self.search (search, role, badge, staff) if role - if role.try(:downcase) == "staff" + if staff users = User.joins(:role).where("roles.value >= ?", Role.get(:mod).to_i) else 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) end 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 diff --git a/app/views/users/index.html.erb b/app/views/users/index.html.erb index 12e80ad..05e9249 100644 --- a/app/views/users/index.html.erb +++ b/app/views/users/index.html.erb @@ -1,11 +1,9 @@ -
- <%= form_tag({controller: "users", action: "index"}, method: :get, enforce_utf8: false) do %> - <%= text_field_tag "search", params[:search], placeholder: "Search for a user", style: "width:300px" %> - <%= submit_tag "Go", class: "searchfield btn", style: "width:40px", name: nil %> - <%= hidden_field_tag "role", params[:role] if params[:role] %> - <%= hidden_field_tag "badge", params[:badge] if params[:badge]%> - <% end %> -
+<%= form_tag(users_path, method: :get) do %> + <%= text_field_tag "search", params[:search], placeholder: "Search for a user", class: "searchfield field" %> + <%= submit_tag "Go", class: "searchfield btn", name: nil %> + <%= hidden_field_tag "role", params[:role] if params[:role] %> + <%= hidden_field_tag "badge", params[:badge] if params[:badge]%> +<% end %>

<% if params[:role] && !params[:badge] -- cgit v1.2.3