mirror of https://github.com/zulip/zulip.git
551fc7f165
Bots are not allowed to use the same name as other users in the realm (either bot or human). This is kind of a big commit, but I wanted to combine the post/patch (aka add/edit) checks into one commit, since it's a change in policy that affects both codepaths. A lot of the noise is in tests. We had good coverage on the previous code, including some places like event testing where we were expediently not bothering to use different names for different bots in some longer tests. And then of course I test some new scenarios that are relevant with the new policy. There are two new functions: check_bot_name_available: very simple Django query check_change_bot_full_name: this diverges from the 3-line check_change_full_name, where the latter is still used for the "humans" use case And then we just call those in appropriate places. Note that there is still a loophole here where you can get two bots with the same name if you reactivate a bot named Fred that was inactive when the second bot named Fred was created. Also, we don't attempt to fix historical data. So this commit shouldn't be considered any kind of lockdown, it's just meant to help people from inadvertently creating two bots of the same name where they don't intend to. For more context, we are continuing to allow two human users in the same realm to have the same full name, and our code should generally be tolerant of that possibility. (A good example is our new mention syntax, which disambiguates same-named people using ids.) It's also worth noting that our web app client doesn't try to scrub full_name from its payload in situations where the user has actually only modified other fields in the "Edit bot" UI. Starting here we just handle this on the server, since it's easy to fix there, and even if we fixed it in the web app, there's no guarantee that other clients won't be just as brute force. It wasn't exactly broken before, but we'd needlessly write rows to audit tables. Fixes #10509 |
||
---|---|---|
.. | ||
__init__.py | ||
alert_words.py | ||
archive.py | ||
attachments.py | ||
auth.py | ||
compatibility.py | ||
custom_profile_fields.py | ||
email_log.py | ||
email_mirror.py | ||
events_register.py | ||
home.py | ||
hotspots.py | ||
integrations.py | ||
invite.py | ||
messages.py | ||
muting.py | ||
pointer.py | ||
presence.py | ||
push_notifications.py | ||
reactions.py | ||
realm.py | ||
realm_domains.py | ||
realm_emoji.py | ||
realm_filters.py | ||
realm_icon.py | ||
registration.py | ||
report.py | ||
storage.py | ||
streams.py | ||
submessage.py | ||
thumbnail.py | ||
tutorial.py | ||
typing.py | ||
unsubscribe.py | ||
upload.py | ||
user_groups.py | ||
user_settings.py | ||
users.py | ||
zephyr.py |