Skip to content

Commit

Permalink
Fix: "Create private discussions with users that block it" permission…
Browse files Browse the repository at this point in the history
… not working for non-admin users (#194)

* fix: `startPrivateDiscussionWithBlockers` key

* chore: extend User model types and convert canStartPrivateDiscussion to TypeScript

* fix: remove non-existing attribute that causes permission issue
  • Loading branch information
rafaucau committed Feb 8, 2024
1 parent 725636c commit d13b4ab
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 15 deletions.
3 changes: 0 additions & 3 deletions extend.php
Original file line number Diff line number Diff line change
Expand Up @@ -99,9 +99,6 @@
(new Extend\ApiSerializer(Serializer\UserSerializer::class))
->attribute('blocksPd', function ($serializer, $user) {
return (bool) $user->blocks_byobu_pd;
})
->attribute('cannotBeDirectMessaged', function ($serializer, $user) {
return (bool) $serializer->getActor()->can('cannotBeDirectMessaged', $user);
}),

(new Extend\ApiSerializer(Serializer\CurrentUserSerializer::class))
Expand Down
8 changes: 8 additions & 0 deletions js/src/@types/Model/User.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
export * from 'flarum/common/models/User';

declare module 'flarum/common/models/User' {
export default interface User {
blocksPd(): boolean;
unreadPrivateMessagesCount(): number;
}
}
2 changes: 1 addition & 1 deletion js/src/admin/addPrivateDiscussionPermission.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export default function () {
{
icon: 'far fa-map',
label: app.translator.trans('fof-byobu.admin.permission.create_private_discussions_with_blocking_users'),
permission: 'startPrivateDiscussionWithBlockers',
permission: 'discussion.startPrivateDiscussionWithBlockers',
tagScoped: false,
},
'start',
Expand Down
2 changes: 1 addition & 1 deletion js/src/forum/extend.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,5 @@ export default [
.attribute<boolean>('canMakePublic')
.attribute<boolean>('isPrivateDiscussion'),

new Extend.Model(User).attribute<boolean>('blocksPd').attribute<boolean>('cannotBeDirectMessaged').attribute<number>('unreadPrivateMessagesCount'),
new Extend.Model(User).attribute<boolean>('blocksPd').attribute<number>('unreadPrivateMessagesCount'),
];
10 changes: 0 additions & 10 deletions js/src/forum/helpers/canStartPrivateDiscussion.js

This file was deleted.

11 changes: 11 additions & 0 deletions js/src/forum/helpers/canStartPrivateDiscussion.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import app from 'flarum/forum/app';
import type User from 'flarum/common/models/User';

export default function canStartPrivateDiscussion(recipient: User) {
return (
app.session.user &&
app.session.user.id() !== recipient.id() &&
app.forum.attribute<boolean>('canStartPrivateDiscussion') &&
(!recipient.blocksPd() || app.forum.attribute<boolean>('canStartPrivateDiscussionWithBlockers'))
);
}

0 comments on commit d13b4ab

Please sign in to comment.