MM-11713: Allows edit others posts to function without edit own posts. (#4406)
* MM-11713: Allows edit others posts to function without edit own posts. * MM-11713: Switches branching statement to ternary. * MM-11713: Default to false expclicitly. * MM-11713: Uses old logic for server versions prior to v5.26.
This commit is contained in:
parent
dbe9b4ee35
commit
47863cae3e
2 changed files with 18 additions and 10 deletions
|
|
@ -135,7 +135,7 @@ describe('PostUtils', () => {
|
|||
const newVersionState = {
|
||||
entities: {
|
||||
general: {
|
||||
serverVersion: '4.9.0',
|
||||
serverVersion: '5.26.0',
|
||||
},
|
||||
users: {
|
||||
currentUserId: userId,
|
||||
|
|
@ -231,8 +231,8 @@ describe('PostUtils', () => {
|
|||
assert.ok(!canEditPost(newVersionState, {PostEditTimeLimit: -1}, licensed, teamId, channelId, userId, {user_id: userId}));
|
||||
assert.ok(!canEditPost(newVersionState, {PostEditTimeLimit: 300}, licensed, teamId, channelId, userId, {user_id: userId, create_at: Date.now() - 100}));
|
||||
assert.ok(!canEditPost(newVersionState, {PostEditTimeLimit: 300}, licensed, teamId, channelId, userId, {user_id: userId, create_at: Date.now() - 6000000}));
|
||||
assert.ok(!canEditPost(newVersionState, {PostEditTimeLimit: -1}, licensed, teamId, channelId, userId, {user_id: 'other'}));
|
||||
assert.ok(!canEditPost(newVersionState, {PostEditTimeLimit: 300}, licensed, teamId, channelId, userId, {user_id: 'other', create_at: Date.now() - 100}));
|
||||
assert.ok(canEditPost(newVersionState, {PostEditTimeLimit: -1}, licensed, teamId, channelId, userId, {user_id: 'other'}));
|
||||
assert.ok(canEditPost(newVersionState, {PostEditTimeLimit: 300}, licensed, teamId, channelId, userId, {user_id: 'other', create_at: Date.now() - 100}));
|
||||
assert.ok(!canEditPost(newVersionState, {PostEditTimeLimit: 300}, licensed, teamId, channelId, userId, {user_id: 'other', create_at: Date.now() - 6000000}));
|
||||
|
||||
newVersionState.entities.roles = {
|
||||
|
|
@ -245,8 +245,8 @@ describe('PostUtils', () => {
|
|||
assert.ok(!canEditPost(newVersionState, {PostEditTimeLimit: -1}, licensed, teamId, channelId, userId, {user_id: userId}));
|
||||
assert.ok(!canEditPost(newVersionState, {PostEditTimeLimit: 300}, licensed, teamId, channelId, userId, {user_id: userId, create_at: Date.now() - 100}));
|
||||
assert.ok(!canEditPost(newVersionState, {PostEditTimeLimit: 300}, licensed, teamId, channelId, userId, {user_id: userId, create_at: Date.now() - 6000000}));
|
||||
assert.ok(!canEditPost(newVersionState, {PostEditTimeLimit: -1}, licensed, teamId, channelId, userId, {user_id: 'other'}));
|
||||
assert.ok(!canEditPost(newVersionState, {PostEditTimeLimit: 300}, licensed, teamId, channelId, userId, {user_id: 'other', create_at: Date.now() - 100}));
|
||||
assert.ok(canEditPost(newVersionState, {PostEditTimeLimit: -1}, licensed, teamId, channelId, userId, {user_id: 'other'}));
|
||||
assert.ok(canEditPost(newVersionState, {PostEditTimeLimit: 300}, licensed, teamId, channelId, userId, {user_id: 'other', create_at: Date.now() - 100}));
|
||||
assert.ok(!canEditPost(newVersionState, {PostEditTimeLimit: 300}, licensed, teamId, channelId, userId, {user_id: 'other', create_at: Date.now() - 6000000}));
|
||||
|
||||
newVersionState.entities.roles = {
|
||||
|
|
@ -259,8 +259,8 @@ describe('PostUtils', () => {
|
|||
assert.ok(!canEditPost(newVersionState, {PostEditTimeLimit: -1}, licensed, teamId, channelId, userId, {user_id: userId}));
|
||||
assert.ok(!canEditPost(newVersionState, {PostEditTimeLimit: 300}, licensed, teamId, channelId, userId, {user_id: userId, create_at: Date.now() - 100}));
|
||||
assert.ok(!canEditPost(newVersionState, {PostEditTimeLimit: 300}, licensed, teamId, channelId, userId, {user_id: userId, create_at: Date.now() - 6000000}));
|
||||
assert.ok(!canEditPost(newVersionState, {PostEditTimeLimit: -1}, licensed, teamId, channelId, userId, {user_id: 'other'}));
|
||||
assert.ok(!canEditPost(newVersionState, {PostEditTimeLimit: 300}, licensed, teamId, channelId, userId, {user_id: 'other', create_at: Date.now() - 100}));
|
||||
assert.ok(canEditPost(newVersionState, {PostEditTimeLimit: -1}, licensed, teamId, channelId, userId, {user_id: 'other'}));
|
||||
assert.ok(canEditPost(newVersionState, {PostEditTimeLimit: 300}, licensed, teamId, channelId, userId, {user_id: 'other', create_at: Date.now() - 100}));
|
||||
assert.ok(!canEditPost(newVersionState, {PostEditTimeLimit: 300}, licensed, teamId, channelId, userId, {user_id: 'other', create_at: Date.now() - 6000000}));
|
||||
|
||||
newVersionState.entities.roles = {
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import {UserProfile} from '@mm-redux/types/users';
|
|||
import {Team} from '@mm-redux/types/teams';
|
||||
import {Channel} from '@mm-redux/types/channels';
|
||||
import {$ID} from '@mm-redux/types/utilities';
|
||||
import {isMinimumServerVersion} from '@mm-redux/utils/helpers';
|
||||
|
||||
import {getPreferenceKey} from './preference_utils';
|
||||
|
||||
|
|
@ -86,10 +87,17 @@ export function canEditPost(state: GlobalState, config: any, license: any, teamI
|
|||
let canEdit = true;
|
||||
|
||||
if (hasNewPermissions(state)) {
|
||||
canEdit = canEdit && haveIChannelPermission(state, {team: teamId, channel: channelId, permission: Permissions.EDIT_POST});
|
||||
if (!isOwner) {
|
||||
canEdit = canEdit && haveIChannelPermission(state, {team: teamId, channel: channelId, permission: Permissions.EDIT_OTHERS_POSTS});
|
||||
const {serverVersion} = state.entities.general;
|
||||
let permissions = [];
|
||||
if (isOwner) {
|
||||
permissions = [Permissions.EDIT_POST];
|
||||
} else {
|
||||
// prior to v5.26, the server used to require edit_own_posts and
|
||||
// edit_others_posts permissions to be able to edit a post by a
|
||||
// different author.
|
||||
permissions = isMinimumServerVersion(serverVersion, 5, 26) ? [Permissions.EDIT_OTHERS_POSTS] : [Permissions.EDIT_POST, Permissions.EDIT_OTHERS_POSTS];
|
||||
}
|
||||
canEdit = permissions.every((permission) => haveIChannelPermission(state, {team: teamId, channel: channelId, permission, default: false}));
|
||||
if (license.IsLicensed === 'true' && config.PostEditTimeLimit !== '-1' && config.PostEditTimeLimit !== -1) {
|
||||
const timeLeft = (post.create_at + (config.PostEditTimeLimit * 1000)) - Date.now();
|
||||
if (timeLeft <= 0) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue