Correct rights check in monoforums.

This commit is contained in:
John Preston 2025-05-22 13:12:59 +04:00
parent 075f754a71
commit 646b852717
2 changed files with 7 additions and 3 deletions

View file

@ -343,7 +343,7 @@ void ChannelData::setMonoforumLink(ChannelData *link) {
_monoforumLink = link;
link->setMonoforumLink(this);
session().changes().peerUpdated(this, UpdateFlag::MonoforumLink);
if (isMegagroup() && (link->amCreator() || link->hasAdminRights())) {
if (isMegagroup() && link->canAccessMonoforum()) {
setFlags(flags() | Flag::MonoforumAdmin);
}
}
@ -656,6 +656,10 @@ bool ChannelData::canDeleteStories() const {
|| (adminRights() & AdminRight::DeleteStories);
}
bool ChannelData::canAccessMonoforum() const {
return canPostMessages();
}
bool ChannelData::canPostPaidMedia() const {
return canPostMessages() && (flags() & Flag::PaidMediaAllowed);
}
@ -836,9 +840,8 @@ void ChannelData::setAdminRights(ChatAdminRights rights) {
UpdateFlag::Rights | UpdateFlag::Admins | UpdateFlag::BannedUsers);
if (isBroadcast() && _monoforumLink) {
const auto flags = _monoforumLink->flags();
const auto admin = (amCreator() || hasAdminRights());
_monoforumLink->setFlags((flags & ~Flag::MonoforumAdmin)
| (admin ? Flag::MonoforumAdmin : Flag()));
| (canAccessMonoforum() ? Flag::MonoforumAdmin : Flag()));
}
}

View file

@ -396,6 +396,7 @@ public:
[[nodiscard]] bool canEditStories() const;
[[nodiscard]] bool canDeleteStories() const;
[[nodiscard]] bool canPostPaidMedia() const;
[[nodiscard]] bool canAccessMonoforum() const;
[[nodiscard]] bool hiddenPreHistory() const;
[[nodiscard]] bool canViewMembers() const;
[[nodiscard]] bool canViewAdmins() const;