diff --git a/src/applications/people/controller/profileedit/PhabricatorPeopleProfileEditController.php b/src/applications/people/controller/profileedit/PhabricatorPeopleProfileEditController.php index 26ee121d99..cd4d1d1620 100644 --- a/src/applications/people/controller/profileedit/PhabricatorPeopleProfileEditController.php +++ b/src/applications/people/controller/profileedit/PhabricatorPeopleProfileEditController.php @@ -32,7 +32,7 @@ class PhabricatorPeopleProfileEditController $profile->setUserPHID($user->getPHID()); } - + $errors = array(); if ($request->isFormPost()) { $profile->setTitle($request->getStr('title')); $profile->setBlurb($request->getStr('blurb')); @@ -41,14 +41,29 @@ class PhabricatorPeopleProfileEditController $err = idx($_FILES['image'], 'error'); if ($err != UPLOAD_ERR_NO_FILE) { $file = PhabricatorFile::newFromPHPUpload($_FILES['image']); - $profile->setProfileImagePHID($file->getPHID()); + $okay = $file->isTransformableImage(); + if ($okay) { + $profile->setProfileImagePHID($file->getPHID()); + } else { + $errors[] = + 'Only valid image files (jpg, jpeg, png or gif) '. + 'will be accepted.'; + } } } - $profile->save(); - $response = id(new AphrontRedirectResponse()) - ->setURI('/p/'.$user->getUsername().'/'); - return $response; + if (!$errors) { + $profile->save(); + $response = id(new AphrontRedirectResponse()) + ->setURI('/p/'.$user->getUsername().'/'); + return $response; + } + } + + if ($errors) { + $error_view = new AphrontErrorView(); + $error_view->setTitle('Form Errors'); + $error_view->setErrors($errors); } $form = new AphrontFormView(); @@ -88,10 +103,13 @@ class PhabricatorPeopleProfileEditController $panel->setWidth(AphrontPanelView::WIDTH_FORM); return $this->buildStandardPageResponse( - $panel, + array( + $error_view, + $panel, + ), array( 'title' => 'Edit Profile', )); } -} +} \ No newline at end of file diff --git a/src/applications/people/controller/profileedit/__init__.php b/src/applications/people/controller/profileedit/__init__.php index cc770bbc87..0a37dee920 100644 --- a/src/applications/people/controller/profileedit/__init__.php +++ b/src/applications/people/controller/profileedit/__init__.php @@ -15,9 +15,10 @@ phutil_require_module('phabricator', 'view/form/control/file'); phutil_require_module('phabricator', 'view/form/control/submit'); phutil_require_module('phabricator', 'view/form/control/text'); phutil_require_module('phabricator', 'view/form/control/textarea'); +phutil_require_module('phabricator', 'view/form/error'); phutil_require_module('phabricator', 'view/layout/panel'); phutil_require_module('phutil', 'utils'); -phutil_require_source('PhabricatorPeopleProfileEditController.php'); +phutil_require_source('PhabricatorPeopleProfileEditController.php'); \ No newline at end of file diff --git a/src/applications/people/controller/settings/PhabricatorUserSettingsController.php b/src/applications/people/controller/settings/PhabricatorUserSettingsController.php index 45290e4c95..319066ffc2 100644 --- a/src/applications/people/controller/settings/PhabricatorUserSettingsController.php +++ b/src/applications/people/controller/settings/PhabricatorUserSettingsController.php @@ -118,14 +118,22 @@ class PhabricatorUserSettingsController extends PhabricatorPeopleController { $err = idx($_FILES['profile'], 'error'); if ($err != UPLOAD_ERR_NO_FILE) { $file = PhabricatorFile::newFromPHPUpload($_FILES['profile']); - $user->setProfileImagePHID($file->getPHID()); + $okay = $file->isTransformableImage(); + + if ($okay) { + $user->setProfileImagePHID($file->getPHID()); + } else { + $errors[] = + 'Only valid image files (jpg, jpeg, png or gif) '. + 'will be accepted.'; + } } } $user->setRealName($request->getStr('realname')); if (!strlen($user->getRealName())) { - $errors[] = 'Real name must be nonempty'; + $errors[] = 'Real name must be nonempty.'; $e_realname = 'Required'; } @@ -245,7 +253,6 @@ class PhabricatorUserSettingsController extends PhabricatorPeopleController { $regen_form = new AphrontFormView(); $regen_form ->setUser($user) - ->setWorkflow(true) ->setAction('/settings/page/arcanist/') ->appendChild( '
You can regenerate this '. @@ -526,7 +533,5 @@ class PhabricatorUserSettingsController extends PhabricatorPeopleController { return $notice.$panel->render(); - } - -} +} \ No newline at end of file diff --git a/src/infrastructure/setup/PhabricatorSetup.php b/src/infrastructure/setup/PhabricatorSetup.php index 820ea6dd7f..c89759f2f9 100644 --- a/src/infrastructure/setup/PhabricatorSetup.php +++ b/src/infrastructure/setup/PhabricatorSetup.php @@ -130,18 +130,28 @@ class PhabricatorSetup { self::writeDoc('article/Configuration_Guide.html'); return; } else { - self::write(" okay Custom configuration loaded.\n"); - } - - if (!PhabricatorEnv::getEnvConfig('phabricator.base-uri')) { - self::writeFailure(); - self::write( - "Setup failure! You must specify 'phabricator.base-uri' in your ". - "custom config file. Refer to 'default.conf.php' for documentation ". - "on configuration options.\n"); - return; - } else { - self::write(" okay phabricator.base-uri\n"); + $host = PhabricatorEnv::getEnvConfig('phabricator.base-uri'); + $protocol = id(new PhutilURI($host))->getProtocol(); + if (!($protocol === 'http') || !($protocol === 'https')) { + self::writeFailure(); + self::write( + "You must specify the protocol over which your host works (e.g.: ". + "\"http:// or https://\")\nin your custom config file.\nRefer to ". + "'default.conf.php' for documentation on configuration options.\n"); + return; + } + if (preg_match('/.*\/$/', $host)) { + self::write(" okay phabricator.base-uri\n"); + } else { + self::writeFailure(); + self::write( + "You must add a trailing slash at the end of the host\n(e.g.: ". + "\"http://phabricator.example.com/ instead of ". + "http://phabricator.example.com\")\nin your custom config file.". + "\nRefer to 'default.conf.php' for documentation on configuration ". + "options.\n"); + return; + } } self::write("[OKAY] Basic configuration OKAY\n"); @@ -426,4 +436,4 @@ class PhabricatorSetup { "\n\n"); } -} +} \ No newline at end of file diff --git a/src/infrastructure/setup/__init__.php b/src/infrastructure/setup/__init__.php index e11efddfe6..b2b41afd60 100644 --- a/src/infrastructure/setup/__init__.php +++ b/src/infrastructure/setup/__init__.php @@ -4,8 +4,6 @@ * @generated */ - - phutil_require_module('phabricator', 'infrastructure/env'); phutil_require_module('phabricator', 'infrastructure/setup/sql'); phutil_require_module('phabricator', 'storage/connection/mysql'); @@ -14,7 +12,7 @@ phutil_require_module('phabricator', 'storage/queryfx'); phutil_require_module('phutil', 'filesystem'); phutil_require_module('phutil', 'future/exec'); phutil_require_module('phutil', 'moduleutils'); +phutil_require_module('phutil', 'parser/uri'); phutil_require_module('phutil', 'utils'); - -phutil_require_source('PhabricatorSetup.php'); +phutil_require_source('PhabricatorSetup.php'); \ No newline at end of file