mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: Admin can't see user sidebar preferences of other users (#19570)
This commit is contained in:
committed by
GitHub
parent
9f927cf999
commit
1d926e88a9
48
app/serializers/concerns/user_sidebar_mixin.rb
Normal file
48
app/serializers/concerns/user_sidebar_mixin.rb
Normal file
@@ -0,0 +1,48 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module UserSidebarMixin
|
||||
def sidebar_tags
|
||||
object.visible_sidebar_tags(scope)
|
||||
.pluck(:name, :topic_count, :pm_topic_count)
|
||||
.reduce([]) do |tags, sidebar_tag|
|
||||
tags.push(
|
||||
name: sidebar_tag[0],
|
||||
pm_only: sidebar_tag[1] == 0 && sidebar_tag[2] > 0
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
def display_sidebar_tags
|
||||
DiscourseTagging.filter_visible(Tag, scope).exists?
|
||||
end
|
||||
|
||||
def include_display_sidebar_tags?
|
||||
include_sidebar_tags?
|
||||
end
|
||||
|
||||
def include_sidebar_tags?
|
||||
SiteSetting.tagging_enabled && sidebar_navigation_menu?
|
||||
end
|
||||
|
||||
def sidebar_category_ids
|
||||
object.category_sidebar_section_links.pluck(:linkable_id) & scope.allowed_category_ids
|
||||
end
|
||||
|
||||
def include_sidebar_category_ids?
|
||||
sidebar_navigation_menu?
|
||||
end
|
||||
|
||||
def sidebar_list_destination
|
||||
object.user_option.sidebar_list_none_selected? ? SiteSetting.default_sidebar_list_destination : object.user_option.sidebar_list_destination
|
||||
end
|
||||
|
||||
def include_sidebar_list_destination?
|
||||
sidebar_navigation_menu?
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def sidebar_navigation_menu?
|
||||
!SiteSetting.legacy_navigation_menu?
|
||||
end
|
||||
end
|
||||
@@ -1,31 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module UserSidebarTagsMixin
|
||||
def self.included(base)
|
||||
base.attributes :display_sidebar_tags,
|
||||
:sidebar_tags
|
||||
end
|
||||
|
||||
def sidebar_tags
|
||||
object.visible_sidebar_tags(scope)
|
||||
.pluck(:name, :topic_count, :pm_topic_count)
|
||||
.reduce([]) do |tags, sidebar_tag|
|
||||
tags.push(
|
||||
name: sidebar_tag[0],
|
||||
pm_only: sidebar_tag[1] == 0 && sidebar_tag[2] > 0
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
def include_sidebar_tags?
|
||||
include_display_sidebar_tags?
|
||||
end
|
||||
|
||||
def display_sidebar_tags
|
||||
DiscourseTagging.filter_visible(Tag, scope).exists?
|
||||
end
|
||||
|
||||
def include_display_sidebar_tags?
|
||||
SiteSetting.tagging_enabled && !SiteSetting.legacy_navigation_menu?
|
||||
end
|
||||
end
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
class CurrentUserSerializer < BasicUserSerializer
|
||||
include UserTagNotificationsMixin
|
||||
include UserSidebarTagsMixin
|
||||
include UserSidebarMixin
|
||||
|
||||
attributes :name,
|
||||
:unread_notifications,
|
||||
@@ -62,12 +62,14 @@ class CurrentUserSerializer < BasicUserSerializer
|
||||
:draft_count,
|
||||
:pending_posts_count,
|
||||
:status,
|
||||
:sidebar_category_ids,
|
||||
:grouped_unread_notifications,
|
||||
:redesigned_user_menu_enabled,
|
||||
:redesigned_user_page_nav_enabled,
|
||||
:sidebar_list_destination,
|
||||
:redesigned_topic_timeline_enabled
|
||||
:redesigned_topic_timeline_enabled,
|
||||
:display_sidebar_tags,
|
||||
:sidebar_tags,
|
||||
:sidebar_category_ids,
|
||||
:sidebar_list_destination
|
||||
|
||||
delegate :user_stat, to: :object, private: true
|
||||
delegate :any_posts, :draft_count, :pending_posts_count, :read_faq?, to: :user_stat
|
||||
@@ -100,10 +102,6 @@ class CurrentUserSerializer < BasicUserSerializer
|
||||
scope.can_create_group?
|
||||
end
|
||||
|
||||
def sidebar_list_destination
|
||||
object.user_option.sidebar_list_none_selected? ? SiteSetting.default_sidebar_list_destination : object.user_option.sidebar_list_destination
|
||||
end
|
||||
|
||||
def can_send_private_email_messages
|
||||
scope.can_send_private_messages_to_email?
|
||||
end
|
||||
@@ -253,14 +251,6 @@ class CurrentUserSerializer < BasicUserSerializer
|
||||
Draft.has_topic_draft(object)
|
||||
end
|
||||
|
||||
def sidebar_category_ids
|
||||
object.category_sidebar_section_links.pluck(:linkable_id) & scope.allowed_category_ids
|
||||
end
|
||||
|
||||
def include_sidebar_category_ids?
|
||||
!SiteSetting.legacy_navigation_menu?
|
||||
end
|
||||
|
||||
def include_status?
|
||||
SiteSetting.enable_user_status && object.has_status?
|
||||
end
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
class UserSerializer < UserCardSerializer
|
||||
include UserTagNotificationsMixin
|
||||
include UserSidebarTagsMixin
|
||||
include UserSidebarMixin
|
||||
|
||||
attributes :bio_raw,
|
||||
:bio_cooked,
|
||||
@@ -64,7 +64,10 @@ class UserSerializer < UserCardSerializer
|
||||
:user_auth_tokens,
|
||||
:user_notification_schedule,
|
||||
:use_logo_small_as_avatar,
|
||||
:sidebar_tags
|
||||
:sidebar_tags,
|
||||
:sidebar_category_ids,
|
||||
:sidebar_list_destination,
|
||||
:display_sidebar_tags
|
||||
|
||||
untrusted_attributes :bio_raw,
|
||||
:bio_cooked,
|
||||
|
||||
Reference in New Issue
Block a user