Commit Graph

20130 Commits

Author SHA1 Message Date
PieterCK
4775f9673f integrations: Rename config_options "description" field.
This renames WebhookConfigOption's "description" field to "label". That
name is consistent with how config_data is declared on the events and
API level, it's also a more accurate description of how the field is
used in the web client, as the UI label element for the config_options.
2025-07-09 10:12:33 -07:00
PieterCK
feb25b0e6b integrations: Move configs in config_options to url_options.
Currently we have 2 implementations of `config_options`:

- It's used for generating optional webhook URL parameters. These
settings also come with custom UI in the "Generate integration URL"
modal.

- In `/bots` API, it's used as schema for the bots `BotConfigData`. Each
type of bots have different ways of defining their `BotConfigData`
fields. Currently, only embedded bots use `BotConfigData`, and only the
incoming webhooks use `config_options` to configure a bot's
`BotConfigData`; thus, the `config_options` remain unused.

To avoid confusion as to which implementation of `config_options` is
used by an integration, this separates the first use case -- to generate
optional webhook URL -- to a new field called `url_options`. Thus, the
`config_options` field is reserved only for the second use case.
2025-07-09 10:12:33 -07:00
PieterCK
74089cf469 api_docs: Update the changelog for feature 318.
This changelog for feature 318 was added in this commit:
d1ff871523. The changelog stated that it
added a new field called `config_options` to the
`realm__incoming_webhook_bots` field, but in reality, the it renamed an
existing field called `config`.

This fixes the changelog for feature 318 and its changes note in the API
documentation to correctly describe the change.
2025-07-09 10:12:33 -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
Tim Abbott
dd5ae0af44 test_helpers: Include an empty session for HostRequestMock.
This allows code that expects request.session to exist to not crash.
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
Rohan Gudimetla
05b6672777 refactor: Extract method handling URLs starting with user_uploads.
This commit extracts the method which handles both relative
URLs starting with `/user_uploads` and `user_uploads`,
converting the latter into former, and attaching the path_id
to it.

This is a preparatory commit to #27007
2025-07-08 15:46:18 -07:00
roanster007
0b2cb835f5 topics: Apply automatic follow/unmute when message moved to new topic.
This commit adds a feature, wherein when someone moves a user's
message to be the first message in a topic, and the user has the
Automatically follow topics initiated enabled, then the new topic will
also be followed by the user.

Similarly, if the user has Automatically unmute topics initiated
enabled, the moved topic would also be unmuted.

Fixes #28408.
2025-07-08 11:18:15 -07:00
Varun-Kolanu
93913dd6e7 integrations: Support colon and comma characters in jotform payloads.
The payload might contain colons and commas within keys and
values entered by the user. Simply splitting the fields using
", " is therefore unreliable and can lead to incorrect parsing.
Hence, this commit updates the logic for splitting fields in
the pretty data of the Jotform payload.

Fixes #32461.
2025-07-08 11:00:06 -07:00
PieterCK
f4432f99df message_report: Use get_message_link_syntax.
This updates the message report module to use the
`get_message_link_syntax` function.
2025-07-08 10:08:44 -07:00
Lauryn Menard
ca48ffccb8 realm-create: Update default user email visibility for org_type.
When creating a new organization, the new user default for email
address visibility is now limited to admins for most organization
types. The exceptions are education organizations, which have the
default set to moderators, and business organizations, which have
the default set to all users.

Fixes #34859.
2025-07-08 09:30:39 -07:00
Lauryn Menard
be30af9f22 test-send-message: Update cross realm direct message test.
Set organization type as business when making realms for tests,
and get newly created users with delivery email.

Prep for changes to the default email visibility setting for new
realms based on organization type.
2025-07-08 09:30:39 -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
9abdb17d1f do_start_email_change_process: Don't revoke USED EmailChangeStatus objs.
We obviously shouldn't set such objects to REVOKED as that introduces
misleading information into our data. USED objects cannot be re-used, so
they can stay as they are.
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
Aditya Kumar Kasaudhan
cc9d78328e users: Add SECURITY_SENSITIVE_USER_SETTINGS to UserBaseSettings.
This commit is a preparatory step for allowing organization owners to
reset user preferences, defines a set of sensitive user settings
that will be protected from resets by organization owners.
2025-07-07 09:48:25 -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
Prakhar Pratyush
86e771c982 test_classes: Use "pk" instead of "id" for primary key lookup.
Prep commit to use "pk" to get the primary keys instead of
hardcoded "id" as we plan to introduce a model with `device_id`
as the primary key name.
2025-07-06 21:07:27 -07:00
Prakhar Pratyush
0c3e0f19d2 test_event_system: Fix ordering of giphy in sorted expected_counts. 2025-07-06 21:07:27 -07:00
Rohan Gudimetla
a3e7ef8e71 left_sidebar: Add navigation option to go to top unread topic.
This commit adds option in personal settings to allow
navigation of channel links in left sidebar to the top
unread topic in that channel.

In cases of no unread messages in unmuted topics of the channel,
it falls back to the top topic of channel.

Fixes #35066
2025-07-03 18:14:10 -07:00
PieterCK
75f2e27500 url_encoding: Refactor a encode_user_full_name_and_id.
This refactors out a function that encode user name and user id into URL
compatible format.
2025-07-03 14:40:49 -07:00
PieterCK
29d42ab6ad url_encoding: Refactor a encode_user_ids.
This refactors out a function to encode the user ids into URL compatible
format. Previously we use the "-pm" decorator to encode user ids for
group direct messages. That decoration tag is not valid, so this also
updates some existing test cases.
2025-07-03 14:40:49 -07:00
PieterCK
48e33eed31 url_encoding: Standardize to use encode_hash_component.
Previously we use `hash_util_encode` to encode channel and topic names
to be URL compatible. This uses the more capable `encode_hash_component`
from the recently added `topic_link_utils.py` module. It also moves the
function to `url_encoding.py`
2025-07-03 14:40:49 -07:00
PieterCK
c460dc3c9c url_encoding: Update encode_stream -> encode_channel. 2025-07-03 14:40:49 -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
Rohan Gudimetla
8e0ba8cccf topics: Server generated permalinks now prefer latest message id.
Previously, when a topic is mentioned, the server generated a
permalink using the earliest accessible message of the topic.

This commit updates it to rather use the latest message of the
topic.
2025-07-03 11:06:39 -07:00
Aman Agrawal
5a65bd4746 reminders: Fix poll and todo list not correctly formatted for reminder. 2025-07-02 13:02:53 -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
Saubhagya Patel
26327135c0 api: Fix incorrect feature level format in zulip.yaml file.
In the `zulip.yaml` file, the commit
54b5182 - user_groups: Add API support to reactivate a user group
was merged without updating the feature level to the correct format.
This commit fixes that feature level.
2025-07-02 12:37:26 -07:00
Anders Kaseorg
08a17ef22d CVE-2025-52559: Generate HTML for digest new channels safely.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2025-07-02 12:12:36 -07:00
Anders Kaseorg
a274170293 CVE-2025-52559: Generate HTML for digest message sender safely.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2025-07-02 12:12:36 -07:00
Anders Kaseorg
c33b6cae38 CVE-2025-52559: Generate HTML for digest recipient header safely.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2025-07-02 12:12:36 -07:00
Vector73
459b4867f2 tools: Add support for viewing updated changelog for testing.
Adds support for showing unmerged changelogs in
"changelog.md" for testing purposes.
2025-07-02 11:34:34 -07:00
theofficialvedantjoshi
d94ba5e45b gitlab: Add deployment webhooks.
Fixes: #34220.
2025-07-02 11:31:15 -07:00
Alex Vandiver
8cde0af040 email_mirror: Fail more gracefully on empty EMAIL_GATEWAY_PATTERN.
Otherwise, this fails on `match.group(1)` as there is no match group.

The server would ideally respond with a 521 or 556 code[^1] on initial
connection, but aiosmtpd does not provide that option.

[^1]: https://www.rfc-editor.org/rfc/rfc7504
2025-07-02 10:21:08 -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
Evy Kassirer
0c5e1ac492 subscription_data: Flesh out partial suscription data sent to client.
Part of #34244.
2025-06-30 17:10:36 -07:00
Shubham Padia
d701fec37d markdown: Show inline video previews for dropbox videos.
Fixes https://chat.zulip.org/#narrow/channel/9-issues/topic/.F0.9F.93.82.20video.20preview.20not.20working.20.28Dropbox.29
2025-06-30 11:21:32 -07:00
Shubham Padia
276bc7284f markdown: Rename dropbox_image to dropbox_media.
We are adding video support to the function in upcoming commits and we
need to rename the function for that to be more generic.
We've also added a proper return type in the name of DropboxMediaInfo
TypedDict for the `dropbox_media` function.
2025-06-30 11:21:32 -07:00
Kislay Verma
1588b72e60 email_notifications: Use with and near operators when applicable.
We currently don't use either of those operators in email
topic links, which breaks the links on topic moves.

Quoting Tim for choosing `near` vs `with`:
"I guess for each case we should decide if we want /near/ links
to /with/ links. We likely want /with/ in some cases, to make
sure we land in the right conversation but not forcing the scroll
position to be on that particular message, which /near/ does."

"I feel like email notifications might want /near/ if the trigger
is a mention or something else that is specific to the message,
rather than the conversation, but probably /with/ otherwise."
2025-06-30 11:19:00 -07:00
Kislay Verma
6bd6f23549 url_encoding: Add support for with message links.
We abstract away "near" vs "with" from the function names and
allow callers to specify whether they want a conversation_link,
ie, use the "with" operator. The default choice is "near".
2025-06-30 11:19:00 -07:00
Aman Agrawal
1a9d8ffd95 openapi: Create a base schema for ScheduledMessage to be reused.
The base class will be used again for Reminder schema.
2025-06-30 11:12:45 -07:00
Aman Agrawal
766bef89b7 scheduled_messages: Extract method to notify new scheduled messages. 2025-06-30 11:12:45 -07:00
opmkumar
4aab379e2a views: Sort parameters alphabetically. 2025-06-30 09:13:25 -07:00
Alex Vandiver
de67d37884 thumbnail: Add flag for when thumbnail files are missing. 2025-06-28 10:32:45 -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