diff --git a/app/routes/api.php b/app/routes/api.php index c2c7b272..3e04d802 100644 --- a/app/routes/api.php +++ b/app/routes/api.php @@ -1,10 +1,6 @@ 'v1', - 'namespace' => 'CachetHQ\Cachet\Controllers\Api', - 'after' => 'allowed_domains', -], function () { +Route::api(['after' => 'allowed_domains', 'namespace' => 'CachetHQ\Cachet\Controllers\Api', 'version' => 'v1'], function () { Route::get('components', 'ComponentController@getComponents'); Route::get('components/{id}', 'ComponentController@getComponent'); Route::get('components/{id}/incidents', 'ComponentController@getComponentIncidents'); diff --git a/app/routes/app.php b/app/routes/app.php index 943edb1e..8ca87ef8 100644 --- a/app/routes/app.php +++ b/app/routes/app.php @@ -1,7 +1,7 @@ 'has_setting:app_name'], function () { +Route::group(['before' => 'has_setting:app_name', 'namespace' => 'CachetHQ\Cachet\Controllers'], function () { Route::get('/', ['as' => 'status-page', 'uses' => 'HomeController@showIndex']); Route::get('/incident/{incident}', 'HomeController@showIncident'); }); @@ -11,4 +11,4 @@ Route::group(['before' => 'is_setup'], function () { Route::controller('/setup', 'SetupController'); }); -Route::get('/rss', 'RSSController@feedAction'); +Route::get('/rss', 'RssController@feedAction'); diff --git a/app/routes/auth.php b/app/routes/auth.php index 520a0d28..c4abf3c6 100644 --- a/app/routes/auth.php +++ b/app/routes/auth.php @@ -1,6 +1,6 @@ 'has_setting:app_name'], function () { +Route::group(['before' => 'has_setting:app_name', 'namespace' => 'CachetHQ\Cachet\Controllers'], function () { Route::get('/auth/login', ['before' => 'guest', 'as' => 'login', 'uses' => 'AuthController@showLogin']); Route::post('/auth/login', ['before' => 'guest|csrf|login_throttling', 'as' => 'logout', 'uses' => 'AuthController@postLogin']); }); diff --git a/app/routes/dashboard.php b/app/routes/dashboard.php index ce1061a1..96c8dc46 100644 --- a/app/routes/dashboard.php +++ b/app/routes/dashboard.php @@ -1,6 +1,6 @@ 'auth', 'prefix' => 'dashboard'], function () { +Route::group(['before' => 'auth', 'prefix' => 'dashboard', 'namespace' => 'CachetHQ\Cachet\Controllers'], function () { // Dashboard Route::get('/', ['as' => 'dashboard', 'uses' => 'DashboardController@showDashboard']); diff --git a/app/controllers/AuthController.php b/src/Controllers/AuthController.php similarity index 60% rename from app/controllers/AuthController.php rename to src/Controllers/AuthController.php index 688b4ccb..f6850893 100644 --- a/app/controllers/AuthController.php +++ b/src/Controllers/AuthController.php @@ -1,5 +1,15 @@ withInput(Input::except('password')) - ->with('error', 'Invalid email or password'); } + + Throttle::hit(Request::instance(), 10, 10); + + return Redirect::back() + ->withInput(Input::except('password')) + ->with('error', 'Invalid email or password'); } /** diff --git a/app/controllers/DashAPIController.php b/src/Controllers/DashAPIController.php similarity index 58% rename from app/controllers/DashAPIController.php rename to src/Controllers/DashAPIController.php index 39d5b1cb..f72ad5b5 100644 --- a/app/controllers/DashAPIController.php +++ b/src/Controllers/DashAPIController.php @@ -1,23 +1,30 @@ update($componentData)) { - return $component; - } else { - App::abort(500); + if (!$component->update(Input::except(['_token']))) { + throw new Exception('Failed to update the component.'); } + + return $component; } /** @@ -32,9 +39,7 @@ class DashAPIController extends Controller foreach ($componentData['component'] as $componentId => $order) { $component = Component::find($componentId); - $component->update([ - 'order' => $order, - ]); + $component->update(['order' => $order]); } return $componentData; diff --git a/app/controllers/DashComponentController.php b/src/Controllers/DashComponentController.php similarity index 91% rename from app/controllers/DashComponentController.php rename to src/Controllers/DashComponentController.php index 4ff98b75..d47ca7e1 100644 --- a/app/controllers/DashComponentController.php +++ b/src/Controllers/DashComponentController.php @@ -1,5 +1,13 @@ delete(); } - unset($settings['remove-banner']); - if (Input::hasFile('app_banner')) { $file = Input::file('app_banner'); // Image Validation. // Image size in bytes. $maxSize = $file->getMaxFilesize(); + if ($file->getSize() > $maxSize) { return Redirect::back()->withErrorMessage('You need to upload an image that is less than '.$maxSize.'.'); - } elseif (!$file->isValid() || $file->getError()) { + } + + if (!$file->isValid() || $file->getError()) { return Redirect::back()->withErrorMessage($file->getErrorMessage()); - } elseif (strpos($file->getMimeType(), 'image/') !== 0) { + } + + if (strpos($file->getMimeType(), 'image/') !== 0) { return Redirect::back()->withErrorMessage('Only images may be uploaded.'); } @@ -144,10 +152,8 @@ class DashSettingsController extends Controller ]); } - unset($settings['app_banner']); - try { - foreach ($settings as $settingName => $settingValue) { + foreach (Input::except(['app_banner', 'remove-banner']) as $settingName => $settingValue) { $setting = Setting::firstOrCreate([ 'name' => $settingName, ])->update([ diff --git a/app/controllers/DashUserController.php b/src/Controllers/DashUserController.php similarity index 71% rename from app/controllers/DashUserController.php rename to src/Controllers/DashUserController.php index 0c09ca8a..ad4c30c8 100644 --- a/app/controllers/DashUserController.php +++ b/src/Controllers/DashUserController.php @@ -1,5 +1,13 @@ component = $component; - } - /** * Returns the rendered Blade templates. * diff --git a/app/controllers/RSSController.php b/src/Controllers/RssController.php similarity index 72% rename from app/controllers/RSSController.php rename to src/Controllers/RssController.php index 83188dc4..a6c99fe3 100644 --- a/app/controllers/RSSController.php +++ b/src/Controllers/RssController.php @@ -1,6 +1,14 @@ channel([ - 'title' => Setting::get('app_name'), + 'title' => Setting::get('app_name'), 'description' => 'Status Feed', - 'link' => Setting::get('app_domain'), + 'link' => Setting::get('app_domain'), ]); Incident::get()->map(function ($incident) use ($feed) { diff --git a/app/controllers/SetupController.php b/src/Controllers/SetupController.php similarity index 80% rename from app/controllers/SetupController.php rename to src/Controllers/SetupController.php index a1d8b0a7..bc355e76 100644 --- a/app/controllers/SetupController.php +++ b/src/Controllers/SetupController.php @@ -1,5 +1,16 @@ $userDetails['username'], 'email' => $userDetails['email'], @@ -59,8 +70,8 @@ class SetupController extends Controller $settings = array_get($postData, 'settings'); foreach ($settings as $settingName => $settingValue) { - $setting = new Setting(); - $setting->name = $settingName; + $setting = new Setting(); + $setting->name = $settingName; $setting->value = $settingValue; $setting->save(); }