Commit Graph

4062 Commits

Author SHA1 Message Date
Prakhar Pratyush
fc6cd9a966 settings: Add require_e2ee_push_notifications realm setting.
This commit adds a realm setting:
"Require end-to-end encryption for push notification content".

This commit just involves backend & UI changes to add the setting,
the impact of this setting is in the next commit.

Fixes part of #35370.
2025-07-28 17:06:59 -07:00
Aman Agrawal
f4dd3aa066 auth: Pass None as default_subdomain to verify the host.
We were not verifying correctly if the host is in the same
subdomain as we never returned None for get_subdomain_from_hostname.
2025-07-28 10:59:38 -07:00
Alex Vandiver
74675fae94 settings: Use get_secret for altcha_hmac.
When building tarballs, we do not have development secrets.
2025-07-25 22:29:51 -07:00
Alex Vandiver
8af90294d8 altcha: More error-proofing around settings validation. 2025-07-25 22:29:51 -07:00
Alex Vandiver
25fbb05fea upload: Attempt to guess character set text/* which are served inline.
This is only `text/plain`, currently.  In such cases where the
client-provided content-type also does not specify a `charset`, we use
`chardet` to make a guess, and store that guess to provide later when
serving the content.  The detection is done in a streaming fashion,
and thus should not require re-downloading the full content.
2025-07-24 22:40:12 -07:00
Alex Vandiver
edb5943d8b upload: Use content_type instead of mimetype for consistency. 2025-07-24 22:40:12 -07:00
Prakhar Pratyush
1c7dd83dbe register_push_device: Add an error code to push-not-configured error.
This commit adds an error code to make it easier for clients
to identify when push device registration is rejected due to
server not being configured to use push notification service.

Fixes part of 35368.
2025-07-23 11:11:46 -07:00
Alex Vandiver
5319a2f33e narrow: Skip topic mutes for DM narrows. 2025-07-22 20:57:36 -07:00
Sahil Batra
eb57fe10a2 streams: Handle empty topic only streams being used for announcements.
This commit updates code to send messages to "general chat" topic
if streams used for announcements for "New user signups",
"New created streams", "Moderation requests" and "Zulip updates"
have topics policy set to allow only "general chat" messages.
2025-07-22 16:59:47 -07:00
Mateusz Mandera
8f66e0b640 access_user_group_api_value_for_setting: Change arg to realm.
This is a cleaner interface, allowing this function to be called in
contexts without a user_profile object.
2025-07-22 12:02:06 -07:00
ducnb
715d07c231 api: Add administrator endpoint for updating user status.
Fixes #33139.
2025-07-18 17:37:26 -07:00
Vector73
a02614204a settings: Add can_set_delete_message_policy_group setting.
Adds new organization setting `can_set_delete_message_policy_group`
for defining who can set per-channel message delete permissions.

Fixes #34214.
2025-07-17 15:44:53 -07:00
Vector73
97a43fa6b6 stream_settings: Add can_delete_own_message_group setting.
Adds per-channel `can_delete_own_message_group` setting for
defining who can delete their own message in the channel.
2025-07-17 15:44:52 -07:00
Vector73
c4e641365b stream_settings: Add can_delete_any_message_group setting.
Adds per-channel can_delete_any_message_group setting for
defining who can delete any message in the channel.
2025-07-17 15:44:42 -07:00
Anders Kaseorg
d24eab02d2 request: Use Django 5.2 HttpRequest.get_preferred_type.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2025-07-17 14:37:11 -07:00
Anders Kaseorg
6006ba4c44 upload: Make closest_thumbnail_format take an HttpRequest.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2025-07-17 14:37:11 -07:00
Mateusz Mandera
4210ccc5db realm_reactivation: Use redirect-to-POST trick.
Uses the approach done for email change confirmations in #34980 to avoid
triggering a reactivation via just a GET request. Instead, the GET
should return a page which will trigger the browser to then POST the key
to the endpoint.
2025-07-16 13:53:20 -07:00
apoorvapendse
ebbb208a47 streams: Extract channel description validation logic.
Fixes: Point 1 of https://github.com/zulip/zulip/pull/33405#issuecomment-3064452310
Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
2025-07-16 09:38:36 -07:00
apoorvapendse
947658def4 streams: Extract topics_policy validation.
Fixes: Point 3 of
https://github.com/zulip/zulip/pull/33405#issuecomment-3064452310.
Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
2025-07-16 09:38:36 -07:00
akshatdalton
520c58bf6b narrow: Fix topic highlighting issue with apostrophes in search results.
This commit addresses the issue where the topic highlighting
in search results was offset by one character when an
apostrophe was present. The problem stemmed from the disparity
in HTML escaping generated by the function `func.escape_html` which
is used to obtain `topic_matches` differs from the escaping performed
by the function `django.utils.html.escape` for apostrophes (').

func.escape_html | django.utils.html.escape
-----------------+--------------------------
      &#39;      |           &#x27;

To fix this SQL query is changed to return the HTML-escaped
topic name generated by the function `func.escape_html`.

Fixes: #25633.

Co-authored-by: Pieter CK <pieterceka123@gmail.com>
2025-07-16 09:26:40 -07:00
Prakhar Pratyush
5f8edf669d zerver: Add endpoint to register a push device to server.
This commit adds an endpoint to register a push device
to receive E2EE push notifications.
2025-07-14 14:52:39 -07:00
Tim Abbott
07bb806b28 streams: Extract access_requested_group_permissions.
This code will need to be called from both API endpoints for creating
channels soon.
2025-07-14 07:44:01 -07:00
apoorvapendse
cb487da45a streams: Set system_groups_name_dict in add_subscriptions_backend.
We need system_groups_name_dict in all cases.

Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
2025-07-14 07:44:01 -07:00
Aditya Kumar Kasaudhan
f6f4e3886e navigation_view: Add "scheduled" to built-in view fragments.
It was missed in #32528.
2025-07-11 15:48:20 -07:00
Aditya Kumar Kasaudhan
0b37ef6a9b email: Bulk clearing of scheduled emails for multiple users.
This commit is a preparatory step for allowing organization owners to
reset user preferences, refactors the `clear_scheduled_emails` function
to support bulk operations.
2025-07-11 14:15:49 -07:00
Mateusz Mandera
99b97ea883 saml: Don't put group_memberships_sync_map in the session.
In 40956ae4c5 we implemented group sync
via SAML during sign in and sign up. The sign up implementation used a
session variable group_memberships_sync_map to plumb through the sync
information to the registration codepath, to execute group sync after
user creation.

We can use a more robust approach instead, and just amend groups on the
`PreregistrationUser` object that's going to be used for registration.
2025-07-11 10:18:58 -07:00
Aman Agrawal
9b15dce1b2 auth: Only automatically redirect for same domain redirects.
If the `deactivated_redirect` belongs to the same domain as
`EXTERNAL_HOST`, automatically redirect, otherwise just point
user to the new URL.
2025-07-10 10:46:59 -07:00
Vector73
a77fc6aa79 stream_settings: Add new disable_topics option to topics_policy.
Adds new configuration option `disable_topics` in `topics_policy`
channel setting to support disabling topics in the channel.

Fixes #34553.
2025-07-09 14:25:53 -07:00
Vector73
7afed92c00 streams: Add function to get topic for channel events notifications.
Refactored the code to add a function `channel_events_topic_name`
to get the topic name for sending notification for channel events.
2025-07-09 14:25:53 -07:00
Mateusz Mandera
40956ae4c5 saml: Implement group sync.
Adds support for syncing group memberships for a user when logging in
via SAML. The list of group memberships is passed by the IdP in the
zulip_groups SAML attribute in the SAMLResponse.
2025-07-08 17:02:08 -07:00
Mateusz Mandera
b966397d25 registration: Do getLogger() instead of direct "logging.<level>" calls.
Having a logger object will be helpful in the upcoming commit to pass as
argument to sync_groups. We use the root logger here (sticking to
original behavior) rather than setting up `getLogger(__name__)` to avoid
breaking a large number of tests which assert logs content - as there
doesn't seem to be any major upside to using a separate logger for this
file.
2025-07-08 17:02:08 -07:00
opmkumar
8786b12f0c streams: Add can_resolve_topics_group setting.
Fixes #19955.
2025-07-08 16:53:43 -07:00
Mateusz Mandera
fe993032a6 validate_email_not_already_in_realm: Add kwarg for mirror dummies.
In user signup context, we are okay with there being an existing mirror
dummy user with the matching email - at the end of the signup, that
mirror dummy account will be activated and control of it given to the
user doing this signup.

However, in email change contexts (SCIM API and regular email change
flow), we can't change an account's email address to the address that
already belongs to an existing mirror dummy user.

To avoid subtle bugs like this, we make callers have to explicitly
specify whether existance of mirror dummies with the matching email
address is okay or not.
2025-07-07 17:15:08 -07:00
Mateusz Mandera
2bfefe2ebd confirm_email_change: Use redirect-to-POST trick.
Just like with signup confirmation links, we shouldn't trigger email
change based on a GET to the confirmation URL - POST should be required.

So upon GET of the confirmation link, we serve a form which will
immediately be POSTed by JS code to finalize the email change.
2025-07-07 17:15:08 -07:00
Mateusz Mandera
32daab11c5 confirm_email_change: Mark the Confirmation used inside a transaction.
The get_object_from_key call should be included in the transaction - we
shouldn't modify the object if the rest of the function fails to
actually confirm the email change (e.g. due to IntegrityError occurring).
2025-07-07 17:15:08 -07:00
Prakhar Pratyush
e6bdf84363 validate_token: Move validate_token to avoid dependency cycle.
Prep commit to avoid depencency cycle.
2025-07-06 21:11:26 -07:00
Sayam Samal
f8d82775d1 showroom: Set up devtools/inputs page for showcasing input components.
This is a prep commit to setup the devtools/inputs page for the
redesigned input components.
2025-07-03 11:45:35 -07:00
Aman Agrawal
25731859b6 zerver: Add endpoints and events for reminders.
There are similar to what exists for scheduled messages expect
the PATCH requests which will be added later when the
functionality is implemented.
2025-07-02 12:47:00 -07:00
PieterCK
38d2a95aa1 users: Add acting_user to do_update_outgoing_webhook_service.
The `acting_user` parameter is added in preparation to make
`do_update_outgoing_webhook_service` log `RealmAuditLog` when updating
bots service. It doesn't have any use as of right now.
2025-07-01 13:24:58 -07:00
PieterCK
fb229a013e actions: Refactor do_update_outgoing_webhook_service.
This updates `do_update_outgoing_webhook_service` to use
`BotServicesOutgoing` as the schema for the updated service data we send
back to client because it's the schema `bot_data.update` expects.

The function is also refactored to allow updating specific fields of the
Service row instead of requiring all value for the Service fields to be
passed.

This is a prep commit for #34524, it adds another field to the Service
field.
2025-07-01 13:24:35 -07:00
opmkumar
4aab379e2a views: Sort parameters alphabetically. 2025-06-30 09:13:25 -07:00
opmkumar
87d14086af settings: Add web_left_sidebar_unreads_count_summary setting.
Co-authored-by: Akarsh Jain <akarsh.jain.790@gmail.com>

Fixes part of #28759.
2025-06-27 13:50:15 -07:00
Mateusz Mandera
d5edaf33d0 signup: Add user to groups when joining via multiuse invite+social auth.
When a user was joining via a multi-use invitation link, using one of
the social auth methods (e.g. Login with Google), the intended group
memberships configured on the multi-use invite would be ignored.
2025-06-26 12:29:10 -07:00
Kislay Verma
ee8913e14b streams: Fix typos in comments.
This commit fixes some old typos in comments in views/streams.py file.
2025-06-26 10:08:11 -07:00
Kislay Verma
5f80f0a970 channel: Add option to notify users newly added to a channel.
When a user is added to a channel, we send
the user that was added a Notification Bot
DMs to let them know about it.

In this commit, we add an option for whether or not
this message is sent.

If more than 100 users are added at once, we
do not send notification bot DMs since it would
be a performance-costly operation.

We also send this threshold value of 100 in the
initial state data to the clients.

Fixes part of #31189
2025-06-26 10:08:11 -07:00
Vector73
b612351e48 stream_setting: Add setting for who can move messages out of channel.
Adds `can_move_messages_out_of_channel_group` channel-level
permission for who can move messages out of the channel.

Fixes #34243.
2025-06-24 16:52:53 -07:00
Vector73
703601a5d5 stream_setting: Add setting for who can move messages within channel.
Adds `can_move_messages_within_channel_group` channel-level
permission for who can move messages within the channel.
2025-06-24 16:52:53 -07:00
Niloth P
dab97304f6 documentation: Add context properties for subdomain and host segments.
The subdomain and host parts are already used within zulip_url, api_url,
this commit adds them as context properties themselves, so that they
can be used in email addresses and URLs without the URI scheme,
increasing uniformity.

The new context properties `display_host` and `display_subdomain` are
usable in the Help, API docs and Policies.

Occurrences of `*.zulipchat.com` have been updated to use them.
2025-06-20 16:04:26 -07:00
Niloth P
c690177481 documentation: Update the subdomain value used in URL context variables.
From "yourZulipDomain" to "your-org".
2025-06-20 16:04:26 -07:00
Lauryn Menard
0fde715a24 devlogin: Filter placeholder realms from a subdomain change.
Showing these realms in the drop down list of realms is not helpful
for developers, so we filter them out of the list. Realms that are
deactivated without a redirect are still listed.
2025-06-19 12:49:03 -07:00