FIX: Use Guardian.basic_user instead of new (anon) (#332)
c.f. de983796e1b66aa2ab039a4fb6e32cec8a65a098 There will soon be additional login_required checks for Guardian, and the intent of many checks by automated systems is better fulfilled by using BasicUser, which simulates a logged in TL0 forum user, rather than an anon user.
This commit is contained in:
parent
92286ad0c4
commit
a3a1285dc5
|
@ -41,11 +41,12 @@ module DiscourseAi::AiBot::Commands
|
||||||
topic_id = topic_id.to_i
|
topic_id = topic_id.to_i
|
||||||
|
|
||||||
topic = Topic.find_by(id: topic_id)
|
topic = Topic.find_by(id: topic_id)
|
||||||
return not_found if !topic || !Guardian.new.can_see?(topic)
|
return not_found if !topic || !Guardian.basic_user.can_see?(topic)
|
||||||
|
|
||||||
@title = topic.title
|
@title = topic.title
|
||||||
|
|
||||||
posts = Post.secured(Guardian.new).where(topic_id: topic_id).order(:post_number).limit(40)
|
posts =
|
||||||
|
Post.secured(Guardian.basic_user).where(topic_id: topic_id).order(:post_number).limit(40)
|
||||||
@url = topic.relative_url(post_number)
|
@url = topic.relative_url(post_number)
|
||||||
|
|
||||||
posts = posts.where("post_number = ?", post_number) if post_number
|
posts = posts.where("post_number = ?", post_number) if post_number
|
||||||
|
@ -60,7 +61,7 @@ module DiscourseAi::AiBot::Commands
|
||||||
content << "\ncategories: #{category_names}" if category_names.present?
|
content << "\ncategories: #{category_names}" if category_names.present?
|
||||||
|
|
||||||
if topic.tags.length > 0
|
if topic.tags.length > 0
|
||||||
tags = DiscourseTagging.filter_visible(topic.tags, Guardian.new)
|
tags = DiscourseTagging.filter_visible(topic.tags, Guardian.basic_user)
|
||||||
content << "\ntags: #{tags.map(&:name).join(", ")}\n\n" if tags.length > 0
|
content << "\ntags: #{tags.map(&:name).join(", ")}\n\n" if tags.length > 0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -123,7 +123,7 @@ module DiscourseAi::AiBot::Commands
|
||||||
Search.execute(
|
Search.execute(
|
||||||
search_string.to_s + " status:public",
|
search_string.to_s + " status:public",
|
||||||
search_type: :full_page,
|
search_type: :full_page,
|
||||||
guardian: Guardian.new(),
|
guardian: Guardian.basic_user,
|
||||||
)
|
)
|
||||||
|
|
||||||
# let's be frugal with tokens, 50 results is too much and stuff gets cut off
|
# let's be frugal with tokens, 50 results is too much and stuff gets cut off
|
||||||
|
@ -140,10 +140,10 @@ module DiscourseAi::AiBot::Commands
|
||||||
posts = posts[0..limit - 1]
|
posts = posts[0..limit - 1]
|
||||||
|
|
||||||
if should_try_semantic_search
|
if should_try_semantic_search
|
||||||
semantic_search = DiscourseAi::Embeddings::SemanticSearch.new(Guardian.new())
|
semantic_search = DiscourseAi::Embeddings::SemanticSearch.new(Guardian.basic_user)
|
||||||
topic_ids = Set.new(posts.map(&:topic_id))
|
topic_ids = Set.new(posts.map(&:topic_id))
|
||||||
|
|
||||||
search = Search.new(search_string, guardian: Guardian.new)
|
search = Search.new(search_string, guardian: Guardian.basic_user)
|
||||||
|
|
||||||
results = nil
|
results = nil
|
||||||
begin
|
begin
|
||||||
|
|
|
@ -51,7 +51,7 @@ module DiscourseAi::AiBot::Commands
|
||||||
topic = nil
|
topic = nil
|
||||||
if topic_id > 0
|
if topic_id > 0
|
||||||
topic = Topic.find_by(id: topic_id)
|
topic = Topic.find_by(id: topic_id)
|
||||||
topic = nil if !topic || !Guardian.new.can_see?(topic)
|
topic = nil if !topic || !Guardian.basic_user.can_see?(topic)
|
||||||
end
|
end
|
||||||
|
|
||||||
@last_summary = nil
|
@last_summary = nil
|
||||||
|
|
|
@ -5,7 +5,7 @@ RSpec.describe DiscourseAi::Embeddings::SemanticSearch do
|
||||||
fab!(:user) { Fabricate(:user) }
|
fab!(:user) { Fabricate(:user) }
|
||||||
|
|
||||||
let(:query) { "test_query" }
|
let(:query) { "test_query" }
|
||||||
let(:subject) { described_class.new(Guardian.new(user)) }
|
let(:subject) { described_class.new(user.guardian) }
|
||||||
|
|
||||||
describe "#search_for_topics" do
|
describe "#search_for_topics" do
|
||||||
let(:hypothetical_post) { "This is an hypothetical post generated from the keyword test_query" }
|
let(:hypothetical_post) { "This is an hypothetical post generated from the keyword test_query" }
|
||||||
|
@ -129,7 +129,7 @@ RSpec.describe DiscourseAi::Embeddings::SemanticSearch do
|
||||||
posts =
|
posts =
|
||||||
DiscourseAi::Completions::Llm.with_prepared_responses(
|
DiscourseAi::Completions::Llm.with_prepared_responses(
|
||||||
["<ai>#{hypothetical_post}</ai>"],
|
["<ai>#{hypothetical_post}</ai>"],
|
||||||
) { described_class.new(Guardian.new(nil)).search_for_topics(query) }
|
) { described_class.new(Guardian.basic_user).search_for_topics(query) }
|
||||||
|
|
||||||
expect(posts).to be_empty
|
expect(posts).to be_empty
|
||||||
end
|
end
|
||||||
|
|
|
@ -58,7 +58,7 @@ describe DiscourseAi::Toxicity::EntryPoint do
|
||||||
fab!(:chat_message) { Fabricate(:chat_message) }
|
fab!(:chat_message) { Fabricate(:chat_message) }
|
||||||
let(:updater) do
|
let(:updater) do
|
||||||
Chat::UpdateMessage.call(
|
Chat::UpdateMessage.call(
|
||||||
guardian: Guardian.new(chat_message.user),
|
guardian: chat_message.user.guardian,
|
||||||
message_id: chat_message.id,
|
message_id: chat_message.id,
|
||||||
message: "This is my updated message",
|
message: "This is my updated message",
|
||||||
)
|
)
|
||||||
|
|
|
@ -6,7 +6,7 @@ describe ReviewableAiPost do
|
||||||
fab!(:target) { Fabricate(:post) }
|
fab!(:target) { Fabricate(:post) }
|
||||||
|
|
||||||
describe "#build_actions" do
|
describe "#build_actions" do
|
||||||
let(:guardian) { Guardian.new }
|
let(:guardian) { Guardian.basic_user }
|
||||||
|
|
||||||
let(:reviewable) do
|
let(:reviewable) do
|
||||||
subject.tap do |r|
|
subject.tap do |r|
|
||||||
|
|
|
@ -8,7 +8,7 @@ RSpec.describe AiChatChannelSerializer do
|
||||||
fab!(:dm_channel) { Fabricate(:direct_message_channel) }
|
fab!(:dm_channel) { Fabricate(:direct_message_channel) }
|
||||||
|
|
||||||
it "display every participant" do
|
it "display every participant" do
|
||||||
serialized = described_class.new(dm_channel, scope: Guardian.new(admin), root: nil)
|
serialized = described_class.new(dm_channel, scope: admin.guardian, root: nil)
|
||||||
|
|
||||||
expect(serialized.title).to eq(dm_channel.title(nil))
|
expect(serialized.title).to eq(dm_channel.title(nil))
|
||||||
end
|
end
|
||||||
|
@ -18,7 +18,7 @@ RSpec.describe AiChatChannelSerializer do
|
||||||
fab!(:channel) { Fabricate(:chat_channel) }
|
fab!(:channel) { Fabricate(:chat_channel) }
|
||||||
|
|
||||||
it "displays the category title" do
|
it "displays the category title" do
|
||||||
serialized = described_class.new(channel, scope: Guardian.new(admin), root: nil)
|
serialized = described_class.new(channel, scope: admin.guardian, root: nil)
|
||||||
|
|
||||||
expect(serialized.title).to eq(channel.title)
|
expect(serialized.title).to eq(channel.title)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue