From 4852dec6f40af99c9f57215657a79cb1c63bfa67 Mon Sep 17 00:00:00 2001 From: Stephan Wiehr Date: Tue, 15 May 2018 15:53:16 +0200 Subject: [PATCH] Limit @query modifications to IssueQuery instances Only IssueQuery implements the used functions, thus the plugin breaks any other implementations creating subclasses of Query and QueriesController. --- .../patches/queries_controller_patch.rb | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/lib/query_share/patches/queries_controller_patch.rb b/lib/query_share/patches/queries_controller_patch.rb index 76ea831..64f2ca5 100644 --- a/lib/query_share/patches/queries_controller_patch.rb +++ b/lib/query_share/patches/queries_controller_patch.rb @@ -18,17 +18,18 @@ module ClassMethods module InstanceMethods def update_query_from_params_with_share update_query_from_params_without_share - share_visibility = params[:query] && params[:query][:visibility] + if @query.instanceof?(IssueQuery) + share_visibility = params[:query] && params[:query][:visibility] - if (User.current.allowed_to?(:manage_group_queries, @query.project) || User.current.admin?) && - share_visibility.to_i == IssueQuery::VISIBILITY_GROUP - @query.query_principal_ids = params[:query] && params[:query][:principal_ids] - @query.principals_logins = params[:query] && params[:query][:principals_logins] - @query.visibility = share_visibility - elsif @query.visibility.to_i == IssueQuery::VISIBILITY_GROUP - @query.visibility = IssueQuery::VISIBILITY_PRIVATE + if (User.current.allowed_to?(:manage_group_queries, @query.project) || User.current.admin?) && + share_visibility.to_i == IssueQuery::VISIBILITY_GROUP + @query.query_principal_ids = params[:query] && params[:query][:principal_ids] + @query.principals_logins = params[:query] && params[:query][:principals_logins] + @query.visibility = share_visibility + elsif @query.visibility.to_i == IssueQuery::VISIBILITY_GROUP + @query.visibility = IssueQuery::VISIBILITY_PRIVATE + end end - @query end end