Refactored controllers

This commit is contained in:
Graham Campbell
2015-01-01 15:45:04 +00:00
parent 1e85398a4b
commit 1bc73873ce
14 changed files with 118 additions and 63 deletions

View File

@@ -1,10 +1,6 @@
<?php
Route::api([
'version' => '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');

View File

@@ -1,7 +1,7 @@
<?php
// Prevent access until the app is setup.
Route::group(['before' => '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');

View File

@@ -1,6 +1,6 @@
<?php
Route::group(['before' => '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']);
});

View File

@@ -1,6 +1,6 @@
<?php
Route::group(['before' => 'auth', 'prefix' => 'dashboard'], function () {
Route::group(['before' => 'auth', 'prefix' => 'dashboard', 'namespace' => 'CachetHQ\Cachet\Controllers'], function () {
// Dashboard
Route::get('/', ['as' => 'dashboard', 'uses' => 'DashboardController@showDashboard']);

View File

@@ -1,5 +1,15 @@
<?php
namespace CachetHQ\Cachet\Controllers
use GrahamCampbell\Throttle\Facades\Throttle;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\View;
/**
* Logs users into their account.
*/
@@ -24,13 +34,13 @@ class AuthController extends Controller
{
if (Auth::attempt(Input::only(['email', 'password']))) {
return Redirect::intended('dashboard');
} else {
Throttle::hit(Request::instance(), 10, 10);
return Redirect::back()
->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');
}
/**

View File

@@ -1,23 +1,30 @@
<?php
namespace CachetHQ\Cachet\Controllers
use Exception;
use Component;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Input;
class DashAPIController extends Controller
{
/**
* Updates a component with the entered info.
*
* @param Component $component
* @param \Component $component
*
* @return array
* @throws \Exception
*
* @return \Component
*/
public function postUpdateComponent(Component $component)
{
$componentData = Input::all();
unset($componentData['_token']);
if ($component->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;

View File

@@ -1,5 +1,13 @@
<?php
namespace CachetHQ\Cachet\Controllers
use Component;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\View;
use Illuminate\Routing\Controller;
class DashComponentController extends Controller
{
/**

View File

@@ -1,5 +1,14 @@
<?php
namespace CachetHQ\Cachet\Controllers
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\View;
use Illuminate\Routing\Controller;
use Incident;
use IncidentTemplate;
class DashIncidentController extends Controller
{
/**

View File

@@ -1,5 +1,13 @@
<?php
namespace CachetHQ\Cachet\Controllers
use Exception;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\View;
use Illuminate\Routing\Controller;
use Setting;
class DashSettingsController extends Controller
{
protected $subMenu = [];
@@ -105,27 +113,27 @@ class DashSettingsController extends Controller
*/
public function postSettings()
{
// Fetch all of the settings we've been POSTed.
$settings = Input::all();
if ($settings['remove_banner'] == "1") {
if (Input::get('remove_banner') == "1") {
$setting = Setting::where('name', 'app_banner');
$setting->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([

View File

@@ -1,5 +1,13 @@
<?php
namespace CachetHQ\Cachet\Controllers
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\View;
use Illuminate\Routing\Controller;
class DashUserController extends Controller
{
/**

View File

@@ -1,5 +1,11 @@
<?php
namespace CachetHQ\Cachet\Controllers
use Component;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\View;
class DashboardController extends Controller
{
/**

View File

@@ -1,26 +1,14 @@
<?php
namespace CachetHQ\Cachet\Controllers
use Component;
use Illuminate\Support\Facades\View;
use Illuminate\Routing\Controller;
use Setting;
class HomeController extends Controller
{
/**
* The component instance.
*
* @var \Component
*/
protected $component;
/**
* Create a new home controller instance.
*
* @param \Component $component
*
* @return void
*/
public function __construct(Component $component)
{
$this->component = $component;
}
/**
* Returns the rendered Blade templates.
*

View File

@@ -1,6 +1,14 @@
<?php
class RSSController extends Controller
namespace CachetHQ\Cachet\Controllers
use Illuminate\Support\Facades\Response;
use Illuminate\Routing\Controller;
use Incident;
use Setting;
use Thujohn\Rss\RssFacade;
class RssController extends Controller
{
/**
* Generates an RSS feed of all incidents.
@@ -9,11 +17,11 @@ class RSSController extends Controller
*/
public function feedAction()
{
$feed = RSS::feed('2.0', 'UTF-8');
$feed = RssFacade::feed('2.0', 'UTF-8');
$feed->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) {

View File

@@ -1,5 +1,16 @@
<?php
namespace CachetHQ\Cachet\Controllers
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\View;
use Illuminate\Routing\Controller;
use Setting;
use User;
class SetupController extends Controller
{
/**
@@ -46,7 +57,7 @@ class SetupController extends Controller
// Pull the user details out.
$userDetails = array_pull($postData, 'user');
// TODO: Do we want to just use Eloquent::unguard() here?
// TODO: Do we want to just use Model::unguard() here?
$user = User::create([
'username' => $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();
}