[NEW] add delete-own-message permission (#15512)
parent
6c0e8d12ea
commit
04b4b9a8f4
@ -0,0 +1,41 @@ |
||||
import { hasPermissionAsync } from './hasPermission'; |
||||
import { getValue } from '../../../settings/server/raw'; |
||||
|
||||
const elapsedTime = (ts) => { |
||||
const dif = Date.now() - ts; |
||||
return Math.round((dif / 1000) / 60); |
||||
}; |
||||
|
||||
export const canDeleteMessageAsync = async (uid, { u, rid, ts }) => { |
||||
const forceDelete = await hasPermissionAsync(uid, 'force-delete-message', rid); |
||||
|
||||
if (forceDelete) { |
||||
return true; |
||||
} |
||||
|
||||
if (!ts) { |
||||
return false; |
||||
} |
||||
const deleteAllowed = await getValue('Message_AllowDeleting'); |
||||
|
||||
if (!deleteAllowed) { |
||||
return false; |
||||
} |
||||
|
||||
const allowedToDeleteAny = await hasPermissionAsync(uid, 'delete-message', rid); |
||||
|
||||
const allowed = allowedToDeleteAny || (uid === u._id && await hasPermissionAsync(uid, 'delete-own-message')); |
||||
if (!allowed) { |
||||
return false; |
||||
} |
||||
const blockDeleteInMinutes = await getValue('Message_AllowDeleting_BlockDeleteInMinutes'); |
||||
|
||||
if (!blockDeleteInMinutes) { |
||||
return true; |
||||
} |
||||
|
||||
const timeElapsedForMessage = elapsedTime(ts); |
||||
return timeElapsedForMessage <= blockDeleteInMinutes; |
||||
}; |
||||
|
||||
export const canDeleteMessage = (uid, { u, rid, ts }) => Promise.await(canDeleteMessageAsync(uid, { u, rid, ts })); |
||||
Loading…
Reference in new issue