mirror of
https://github.com/discourse/discourse.git
synced 2025-09-12 21:10:47 +08:00
FEATURE: New site setting for additional allowed filetypes for staff (#5364)
* FEATURE: New site setting for additional allowed filetypes for staff * Problematic variable name * feedback * small issues * fix indentation * failing tests * Remove message bus and fix minor issues * Missed this message bus
This commit is contained in:
parent
afa2b36842
commit
f3815cd785
6 changed files with 95 additions and 24 deletions
|
@ -203,7 +203,7 @@ export function validateUploadedFile(file, opts) {
|
|||
|
||||
// check that the uploaded file is authorized
|
||||
if (opts.allowStaffToUploadAnyFileInPm && opts.isPrivateMessage) {
|
||||
if (Discourse.User.current("staff")) {
|
||||
if (Discourse.User.currentProp('staff')) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -239,16 +239,28 @@ export function validateUploadedFile(file, opts) {
|
|||
|
||||
const IMAGES_EXTENSIONS_REGEX = /(png|jpe?g|gif|bmp|tiff?|svg|webp|ico)/i;
|
||||
|
||||
function extensionsToArray(exts) {
|
||||
return exts.toLowerCase()
|
||||
.replace(/[\s\.]+/g, "")
|
||||
.split("|")
|
||||
.filter(ext => ext.indexOf("*") === -1);
|
||||
}
|
||||
|
||||
function extensions() {
|
||||
return Discourse.SiteSettings.authorized_extensions
|
||||
.toLowerCase()
|
||||
.replace(/[\s\.]+/g, "")
|
||||
.split("|")
|
||||
.filter(ext => ext.indexOf("*") === -1);
|
||||
return extensionsToArray(Discourse.SiteSettings.authorized_extensions);
|
||||
}
|
||||
|
||||
function staffExtensions() {
|
||||
return extensionsToArray(Discourse.SiteSettings.authorized_extensions_for_staff);
|
||||
}
|
||||
|
||||
function imagesExtensions() {
|
||||
return extensions().filter(ext => IMAGES_EXTENSIONS_REGEX.test(ext));
|
||||
let exts = extensions().filter(ext => IMAGES_EXTENSIONS_REGEX.test(ext));
|
||||
if (Discourse.User.currentProp('staff')) {
|
||||
const staffExts = staffExtensions().filter(ext => IMAGES_EXTENSIONS_REGEX.test(ext));
|
||||
exts = _.union(exts, staffExts);
|
||||
}
|
||||
return exts;
|
||||
}
|
||||
|
||||
function extensionsRegex() {
|
||||
|
@ -259,7 +271,14 @@ function imagesExtensionsRegex() {
|
|||
return new RegExp("\\.(" + imagesExtensions().join("|") + ")$", "i");
|
||||
}
|
||||
|
||||
function staffExtensionsRegex() {
|
||||
return new RegExp("\\.(" + staffExtensions().join("|") + ")$", "i");
|
||||
}
|
||||
|
||||
function isAuthorizedFile(fileName) {
|
||||
if (Discourse.User.currentProp('staff') && staffExtensionsRegex().test(fileName)) {
|
||||
return true;
|
||||
}
|
||||
return extensionsRegex().test(fileName);
|
||||
}
|
||||
|
||||
|
@ -268,7 +287,8 @@ function isAuthorizedImage(fileName){
|
|||
}
|
||||
|
||||
export function authorizedExtensions() {
|
||||
return authorizesAllExtensions() ? "*" : extensions().join(", ");
|
||||
const exts = Discourse.User.currentProp('staff') ? [...extensions(), ...staffExtensions()] : extensions();
|
||||
return exts.filter(ext => ext.length > 0).join(", ");
|
||||
}
|
||||
|
||||
export function authorizedImagesExtensions() {
|
||||
|
@ -276,7 +296,9 @@ export function authorizedImagesExtensions() {
|
|||
}
|
||||
|
||||
export function authorizesAllExtensions() {
|
||||
return Discourse.SiteSettings.authorized_extensions.indexOf("*") >= 0;
|
||||
return Discourse.SiteSettings.authorized_extensions.indexOf("*") >= 0 || (
|
||||
Discourse.SiteSettings.authorized_extensions_for_staff.indexOf("*") >= 0 &&
|
||||
Discourse.User.currentProp('staff'));
|
||||
}
|
||||
|
||||
export function authorizesOneOrMoreExtensions() {
|
||||
|
@ -322,7 +344,7 @@ export function allowsImages() {
|
|||
}
|
||||
|
||||
export function allowsAttachments() {
|
||||
return authorizesAllExtensions() || extensions().length > imagesExtensions().length;
|
||||
return authorizesAllExtensions() || authorizedExtensions().split(", ").length > imagesExtensions().length;
|
||||
}
|
||||
|
||||
export function uploadLocation(url) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue