diff --git a/js/src/common/Application.js b/js/src/common/Application.js index e86cb0ced..65592ad08 100644 --- a/js/src/common/Application.js +++ b/js/src/common/Application.js @@ -382,6 +382,10 @@ export default class Application { content = app.translator.trans('core.lib.error.not_found_message'); break; + case 413: + content = app.translator.trans('core.lib.error.payload_too_large_message'); + break; + case 429: content = app.translator.trans('core.lib.error.rate_limit_exceeded_message'); break; diff --git a/locale/core.yml b/locale/core.yml index 79660abf5..b8276fbba 100644 --- a/locale/core.yml +++ b/locale/core.yml @@ -521,6 +521,7 @@ core: generic_message: "Oops! Something went wrong. Please reload the page and try again." missing_dependencies_message: "Cannot enable {extension} until the following dependencies are enabled: {extensions}" not_found_message: The requested resource was not found. + payload_too_large_message: The request payload was too large. permission_denied_message: You do not have permission to do that. rate_limit_exceeded_message: You're going a little too quickly. Please try again in a few seconds. diff --git a/locale/validation.yml b/locale/validation.yml index bd435434c..934d1739d 100644 --- a/locale/validation.yml +++ b/locale/validation.yml @@ -28,6 +28,8 @@ validation: ends_with: "The :attribute must end with one of the following: :values." exists: "The selected :attribute is invalid." file: "The :attribute must be a file." + file_too_large: "The :attribute is too large." + file_upload_failed: "The :attribute failed to upload." filled: "The :attribute field must have a value." gt: numeric: "The :attribute must be greater than :value." diff --git a/src/User/AvatarValidator.php b/src/User/AvatarValidator.php index e6fe0df3b..84d8e0995 100644 --- a/src/User/AvatarValidator.php +++ b/src/User/AvatarValidator.php @@ -30,8 +30,18 @@ class AvatarValidator extends AbstractValidator protected function assertFileRequired(UploadedFileInterface $file) { - if ($file->getError() !== UPLOAD_ERR_OK) { - $this->raise('required'); + $error = $file->getError(); + + if ($error !== UPLOAD_ERR_OK) { + if ($error === UPLOAD_ERR_INI_SIZE || $error === UPLOAD_ERR_FORM_SIZE) { + $this->raise('file_too_large'); + } + + if ($error === UPLOAD_ERR_NO_FILE) { + $this->raise('required'); + } + + $this->raise('file_upload_failed'); } }