mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 22:43:42 +00:00
guests: Block guest user access to default streams.
Guest users will just get an empty list of default streams; we also hide the "Default streams" organization view from the guest users UI. This is for consistency with not providing guest users the full list of streams in an organization.
This commit is contained in:
@@ -111,6 +111,7 @@
|
|||||||
<i class="locked fa fa-lock" title="{{ _('Only organization administrators can edit these settings.') }}"></i>
|
<i class="locked fa fa-lock" title="{{ _('Only organization administrators can edit these settings.') }}"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</li>
|
</li>
|
||||||
|
{% if not is_guest %}
|
||||||
<li tabindex="0" data-section="default-streams-list">
|
<li tabindex="0" data-section="default-streams-list">
|
||||||
<i class="icon fa fa-exchange" aria-hidden="true"></i>
|
<i class="icon fa fa-exchange" aria-hidden="true"></i>
|
||||||
<div class="text">{{ _('Default streams') }}</div>
|
<div class="text">{{ _('Default streams') }}</div>
|
||||||
@@ -118,6 +119,7 @@
|
|||||||
<i class="locked fa fa-lock" title="{{ _('Only organization administrators can edit these settings.') }}"></i>
|
<i class="locked fa fa-lock" title="{{ _('Only organization administrators can edit these settings.') }}"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</li>
|
</li>
|
||||||
|
{% endif %}
|
||||||
<li tabindex="0" data-section="filter-settings">
|
<li tabindex="0" data-section="filter-settings">
|
||||||
<i class="icon fa fa-font" aria-hidden="true"></i>
|
<i class="icon fa fa-font" aria-hidden="true"></i>
|
||||||
<div class="text">{{ _('Linkifiers') }}</div>
|
<div class="text">{{ _('Linkifiers') }}</div>
|
||||||
|
|||||||
@@ -3650,14 +3650,14 @@ def notify_default_streams(realm: Realm) -> None:
|
|||||||
type="default_streams",
|
type="default_streams",
|
||||||
default_streams=streams_to_dicts_sorted(get_default_streams_for_realm(realm.id))
|
default_streams=streams_to_dicts_sorted(get_default_streams_for_realm(realm.id))
|
||||||
)
|
)
|
||||||
send_event(realm, event, active_user_ids(realm.id))
|
send_event(realm, event, active_non_guest_user_ids(realm.id))
|
||||||
|
|
||||||
def notify_default_stream_groups(realm: Realm) -> None:
|
def notify_default_stream_groups(realm: Realm) -> None:
|
||||||
event = dict(
|
event = dict(
|
||||||
type="default_stream_groups",
|
type="default_stream_groups",
|
||||||
default_stream_groups=default_stream_groups_to_dicts_sorted(get_default_stream_groups(realm))
|
default_stream_groups=default_stream_groups_to_dicts_sorted(get_default_stream_groups(realm))
|
||||||
)
|
)
|
||||||
send_event(realm, event, active_user_ids(realm.id))
|
send_event(realm, event, active_non_guest_user_ids(realm.id))
|
||||||
|
|
||||||
def do_add_default_stream(stream: Stream) -> None:
|
def do_add_default_stream(stream: Stream) -> None:
|
||||||
realm_id = stream.realm_id
|
realm_id = stream.realm_id
|
||||||
|
|||||||
@@ -289,11 +289,17 @@ def fetch_initial_state_data(user_profile: UserProfile,
|
|||||||
state['stream_name_max_length'] = Stream.MAX_NAME_LENGTH
|
state['stream_name_max_length'] = Stream.MAX_NAME_LENGTH
|
||||||
state['stream_description_max_length'] = Stream.MAX_DESCRIPTION_LENGTH
|
state['stream_description_max_length'] = Stream.MAX_DESCRIPTION_LENGTH
|
||||||
if want('default_streams'):
|
if want('default_streams'):
|
||||||
state['realm_default_streams'] = streams_to_dicts_sorted(
|
if user_profile.is_guest:
|
||||||
get_default_streams_for_realm(realm.id))
|
state['realm_default_streams'] = []
|
||||||
|
else:
|
||||||
|
state['realm_default_streams'] = streams_to_dicts_sorted(
|
||||||
|
get_default_streams_for_realm(realm.id))
|
||||||
if want('default_stream_groups'):
|
if want('default_stream_groups'):
|
||||||
state['realm_default_stream_groups'] = default_stream_groups_to_dicts_sorted(
|
if user_profile.is_guest:
|
||||||
get_default_stream_groups(realm))
|
state['realm_default_stream_groups'] = []
|
||||||
|
else:
|
||||||
|
state['realm_default_stream_groups'] = default_stream_groups_to_dicts_sorted(
|
||||||
|
get_default_stream_groups(realm))
|
||||||
|
|
||||||
if want('stop_words'):
|
if want('stop_words'):
|
||||||
state['stop_words'] = read_stop_words()
|
state['stop_words'] = read_stop_words()
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ from zerver.lib.actions import (
|
|||||||
do_change_full_name,
|
do_change_full_name,
|
||||||
do_change_icon_source,
|
do_change_icon_source,
|
||||||
do_change_is_admin,
|
do_change_is_admin,
|
||||||
|
do_change_is_guest,
|
||||||
do_change_notification_settings,
|
do_change_notification_settings,
|
||||||
do_change_realm_domain,
|
do_change_realm_domain,
|
||||||
do_change_stream_description,
|
do_change_stream_description,
|
||||||
@@ -1422,6 +1423,21 @@ class EventsRegisterTest(ZulipTestCase):
|
|||||||
error = default_stream_groups_checker('events[0]', events[0])
|
error = default_stream_groups_checker('events[0]', events[0])
|
||||||
self.assert_on_error(error)
|
self.assert_on_error(error)
|
||||||
|
|
||||||
|
def test_default_stream_group_events_guest(self) -> None:
|
||||||
|
streams = []
|
||||||
|
for stream_name in ["Scotland", "Verona", "Denmark"]:
|
||||||
|
streams.append(get_stream(stream_name, self.user_profile.realm))
|
||||||
|
|
||||||
|
do_create_default_stream_group(self.user_profile.realm, "group1",
|
||||||
|
"This is group1", streams)
|
||||||
|
group = lookup_default_stream_groups(["group1"], self.user_profile.realm)[0]
|
||||||
|
|
||||||
|
do_change_is_guest(self.user_profile, True)
|
||||||
|
venice_stream = get_stream("Venice", self.user_profile.realm)
|
||||||
|
self.do_test(lambda: do_add_streams_to_default_stream_group(self.user_profile.realm,
|
||||||
|
group, [venice_stream]),
|
||||||
|
state_change_expected = False, num_events=0)
|
||||||
|
|
||||||
def test_default_streams_events(self) -> None:
|
def test_default_streams_events(self) -> None:
|
||||||
default_streams_checker = self.check_events_dict([
|
default_streams_checker = self.check_events_dict([
|
||||||
('type', equals('default_streams')),
|
('type', equals('default_streams')),
|
||||||
@@ -1440,6 +1456,14 @@ class EventsRegisterTest(ZulipTestCase):
|
|||||||
error = default_streams_checker('events[0]', events[0])
|
error = default_streams_checker('events[0]', events[0])
|
||||||
self.assert_on_error(error)
|
self.assert_on_error(error)
|
||||||
|
|
||||||
|
def test_default_streams_events_guest(self) -> None:
|
||||||
|
do_change_is_guest(self.user_profile, True)
|
||||||
|
stream = get_stream("Scotland", self.user_profile.realm)
|
||||||
|
self.do_test(lambda: do_add_default_stream(stream),
|
||||||
|
state_change_expected = False, num_events=0)
|
||||||
|
self.do_test(lambda: do_remove_default_stream(stream),
|
||||||
|
state_change_expected = False, num_events=0)
|
||||||
|
|
||||||
def test_muted_topics_events(self) -> None:
|
def test_muted_topics_events(self) -> None:
|
||||||
muted_topics_checker = self.check_events_dict([
|
muted_topics_checker = self.check_events_dict([
|
||||||
('type', equals('muted_topics')),
|
('type', equals('muted_topics')),
|
||||||
|
|||||||
Reference in New Issue
Block a user