mirror of
https://github.com/discourse/discourse.git
synced 2025-03-09 14:34:35 +00:00
FEATURE: do no search for groups unless a term is specified
Do not allow `/u/search/users.json` to list any group matches unless a specific `term` is specified in the API call. Adding groups should always be done when an actual search term exists, blank search is only supported for users within a topic
This commit is contained in:
parent
31ffa5f64e
commit
33269c4172
@ -867,6 +867,10 @@ class UsersController < ApplicationController
|
|||||||
|
|
||||||
include_groups = params[:include_groups] == "true"
|
include_groups = params[:include_groups] == "true"
|
||||||
|
|
||||||
|
# blank term is only handy for in-topic search of users after @
|
||||||
|
# we do not want group results ever if term is blank
|
||||||
|
include_groups = groups = nil if term.blank?
|
||||||
|
|
||||||
if include_groups || groups
|
if include_groups || groups
|
||||||
groups = Group.search_groups(term, groups: groups)
|
groups = Group.search_groups(term, groups: groups)
|
||||||
groups = groups.where(visibility_level: Group.visibility_levels[:public]) if include_groups
|
groups = groups.where(visibility_level: Group.visibility_levels[:public]) if include_groups
|
||||||
|
@ -2802,7 +2802,8 @@ describe UsersController do
|
|||||||
Fabricate(:group,
|
Fabricate(:group,
|
||||||
mentionable_level: 99,
|
mentionable_level: 99,
|
||||||
messageable_level: 0,
|
messageable_level: 0,
|
||||||
visibility_level: 0
|
visibility_level: 0,
|
||||||
|
name: 'aaa1'
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -2810,14 +2811,16 @@ describe UsersController do
|
|||||||
Fabricate(:group,
|
Fabricate(:group,
|
||||||
mentionable_level: 99,
|
mentionable_level: 99,
|
||||||
messageable_level: 0,
|
messageable_level: 0,
|
||||||
visibility_level: 1
|
visibility_level: 1,
|
||||||
|
name: 'aaa2'
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
let!(:messageable_group) do
|
let!(:messageable_group) do
|
||||||
Fabricate(:group,
|
Fabricate(:group,
|
||||||
mentionable_level: 0,
|
mentionable_level: 0,
|
||||||
messageable_level: 99
|
messageable_level: 99,
|
||||||
|
name: 'aaa3'
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -2826,11 +2829,20 @@ describe UsersController do
|
|||||||
sign_in(user)
|
sign_in(user)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "only returns visible groups" do
|
it "does not search for groups if there is no term" do
|
||||||
get "/u/search/users.json", params: { include_groups: "true" }
|
get "/u/search/users.json", params: { include_groups: "true" }
|
||||||
|
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
|
|
||||||
|
groups = JSON.parse(response.body)["groups"]
|
||||||
|
expect(groups).to eq(nil)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "only returns visible groups" do
|
||||||
|
get "/u/search/users.json", params: { include_groups: "true", term: 'a' }
|
||||||
|
|
||||||
|
expect(response.status).to eq(200)
|
||||||
|
|
||||||
groups = JSON.parse(response.body)["groups"]
|
groups = JSON.parse(response.body)["groups"]
|
||||||
|
|
||||||
expect(groups.map { |group| group['name'] })
|
expect(groups.map { |group| group['name'] })
|
||||||
@ -2840,7 +2852,8 @@ describe UsersController do
|
|||||||
it "doesn't search for groups" do
|
it "doesn't search for groups" do
|
||||||
get "/u/search/users.json", params: {
|
get "/u/search/users.json", params: {
|
||||||
include_mentionable_groups: 'false',
|
include_mentionable_groups: 'false',
|
||||||
include_messageable_groups: 'false'
|
include_messageable_groups: 'false',
|
||||||
|
term: 'a'
|
||||||
}
|
}
|
||||||
|
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
@ -2850,7 +2863,8 @@ describe UsersController do
|
|||||||
it "searches for messageable groups" do
|
it "searches for messageable groups" do
|
||||||
get "/u/search/users.json", params: {
|
get "/u/search/users.json", params: {
|
||||||
include_mentionable_groups: 'false',
|
include_mentionable_groups: 'false',
|
||||||
include_messageable_groups: 'true'
|
include_messageable_groups: 'true',
|
||||||
|
term: 'a'
|
||||||
}
|
}
|
||||||
|
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
@ -2862,7 +2876,8 @@ describe UsersController do
|
|||||||
it 'searches for mentionable groups' do
|
it 'searches for mentionable groups' do
|
||||||
get "/u/search/users.json", params: {
|
get "/u/search/users.json", params: {
|
||||||
include_messageable_groups: 'false',
|
include_messageable_groups: 'false',
|
||||||
include_mentionable_groups: 'true'
|
include_mentionable_groups: 'true',
|
||||||
|
term: 'a'
|
||||||
}
|
}
|
||||||
|
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
@ -2878,7 +2893,8 @@ describe UsersController do
|
|||||||
it 'should not include mentionable/messageable groups' do
|
it 'should not include mentionable/messageable groups' do
|
||||||
get "/u/search/users.json", params: {
|
get "/u/search/users.json", params: {
|
||||||
include_mentionable_groups: 'false',
|
include_mentionable_groups: 'false',
|
||||||
include_messageable_groups: 'false'
|
include_messageable_groups: 'false',
|
||||||
|
term: 'a'
|
||||||
}
|
}
|
||||||
|
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
@ -2886,7 +2902,8 @@ describe UsersController do
|
|||||||
|
|
||||||
get "/u/search/users.json", params: {
|
get "/u/search/users.json", params: {
|
||||||
include_mentionable_groups: 'false',
|
include_mentionable_groups: 'false',
|
||||||
include_messageable_groups: 'true'
|
include_messageable_groups: 'true',
|
||||||
|
term: 'a'
|
||||||
}
|
}
|
||||||
|
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
@ -2894,7 +2911,8 @@ describe UsersController do
|
|||||||
|
|
||||||
get "/u/search/users.json", params: {
|
get "/u/search/users.json", params: {
|
||||||
include_messageable_groups: 'false',
|
include_messageable_groups: 'false',
|
||||||
include_mentionable_groups: 'true'
|
include_mentionable_groups: 'true',
|
||||||
|
term: 'a'
|
||||||
}
|
}
|
||||||
|
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user