diff --git a/app/config/app.php b/app/config/app.php
index 3e08dfab..08a47e6f 100644
--- a/app/config/app.php
+++ b/app/config/app.php
@@ -157,17 +157,16 @@ return [
'aliases' => [
- 'API' => 'Dingo\Api\Facade\API',
'App' => 'Illuminate\Support\Facades\App',
'Auth' => 'Illuminate\Support\Facades\Auth',
'Form' => 'Illuminate\Support\Facades\Form',
- 'HTML' => 'Illuminate\Support\Facades\HTML',
'Input' => 'Illuminate\Support\Facades\Input',
'Redirect' => 'Illuminate\Support\Facades\Redirect',
'Request' => 'Illuminate\Support\Facades\Request',
'Response' => 'Illuminate\Support\Facades\Response',
'Route' => 'Illuminate\Support\Facades\Route',
'Session' => 'Illuminate\Support\Facades\Session',
+ 'Setting' => 'CachetHQ\Cachet\Models\Setting',
'Str' => 'Illuminate\Support\Str',
],
diff --git a/app/database/seeds/ComponentTableSeeder.php b/app/database/seeds/ComponentTableSeeder.php
index d65eb63b..3bddf05e 100644
--- a/app/database/seeds/ComponentTableSeeder.php
+++ b/app/database/seeds/ComponentTableSeeder.php
@@ -1,5 +1,6 @@
headers->set('Access-Control-Allow-Origin', '*');
-
- return $response;
- }
-}
diff --git a/app/routes.php b/app/routes.php
deleted file mode 100644
index 7b941a91..00000000
--- a/app/routes.php
+++ /dev/null
@@ -1,8 +0,0 @@
- 'allowed_domains', 'namespace' => 'CachetHQ\Cachet\Controllers\Api', 'version' => 'v1'], function () {
+Route::api(['after' => 'allowed_domains', 'namespace' => 'CachetHQ\Cachet\Http\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 0705560c..496cab35 100644
--- a/app/routes/app.php
+++ b/app/routes/app.php
@@ -1,16 +1,16 @@
'has_setting:app_name', 'namespace' => 'CachetHQ\Cachet\Controllers'], function () {
+Route::group(['before' => 'has_setting:app_name', 'namespace' => 'CachetHQ\Cachet\Http\Controllers'], function () {
Route::get('/', ['as' => 'status-page', 'uses' => 'HomeController@showIndex']);
Route::get('/incident/{incident}', 'HomeController@showIncident');
});
// Setup route.
-Route::group(['before' => 'is_setup', 'namespace' => 'CachetHQ\Cachet\Controllers'], function () {
+Route::group(['before' => 'is_setup', 'namespace' => 'CachetHQ\Cachet\Http\Controllers'], function () {
Route::controller('/setup', 'SetupController');
});
-Route::group(['namespace' => 'CachetHQ\Cachet\Controllers'], function () {
+Route::group(['namespace' => 'CachetHQ\Cachet\Http\Controllers'], function () {
Route::get('/rss', 'RssController@feedAction');
});
diff --git a/app/routes/auth.php b/app/routes/auth.php
index bc5eb71e..768af167 100644
--- a/app/routes/auth.php
+++ b/app/routes/auth.php
@@ -1,10 +1,10 @@
'has_setting:app_name', 'namespace' => 'CachetHQ\Cachet\Controllers'], function () {
+Route::group(['before' => 'has_setting:app_name', 'namespace' => 'CachetHQ\Cachet\Http\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']);
});
-Route::group(['before' => 'auth', 'namespace' => 'CachetHQ\Cachet\Controllers'], function () {
+Route::group(['before' => 'auth', 'namespace' => 'CachetHQ\Cachet\Http\Controllers'], function () {
Route::get('/auth/logout', ['as' => 'logout', 'uses' => 'AuthController@logoutAction']);
});
diff --git a/app/routes/dashboard.php b/app/routes/dashboard.php
index 96c8dc46..449730fe 100644
--- a/app/routes/dashboard.php
+++ b/app/routes/dashboard.php
@@ -1,6 +1,6 @@
'auth', 'prefix' => 'dashboard', 'namespace' => 'CachetHQ\Cachet\Controllers'], function () {
+Route::group(['before' => 'auth', 'prefix' => 'dashboard', 'namespace' => 'CachetHQ\Cachet\Http\Controllers'], function () {
// Dashboard
Route::get('/', ['as' => 'dashboard', 'uses' => 'DashboardController@showDashboard']);
diff --git a/app/start/global.php b/app/start/global.php
index 42b3e59e..2d046af7 100644
--- a/app/start/global.php
+++ b/app/start/global.php
@@ -1,5 +1,6 @@
bindInstallPaths(require __DIR__.'/paths.php');
|
*/
-$framework = $app['path.base'].
- '/vendor/laravel/framework/src';
+$framework = $app['path.base'].'/vendor/laravel/framework/src';
require $framework.'/Illuminate/Foundation/start.php';
diff --git a/composer.json b/composer.json
index b2a16a1a..cc0c4316 100644
--- a/composer.json
+++ b/composer.json
@@ -28,9 +28,10 @@
"autoload": {
"classmap": [
"app/database/migrations",
- "app/database/seeds",
- "app/filters",
- "app/models"
+ "app/database/seeds"
+ ],
+ "files": [
+ "src/helpers.php"
],
"psr-4": {
"CachetHQ\\Cachet\\": "src/"
@@ -38,7 +39,7 @@
},
"autoload-dev": {
"classmap": [
- "app/tests/TestCase.php"
+ "tests/TestCase.php"
]
},
"extra": {
diff --git a/composer.lock b/composer.lock
index 435b5478..11dc9fd5 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "af0ee6e5bc07e350732bc7c907e3b2ae",
+ "hash": "bb692ec0057ca30fa36edd005963b3cb",
"packages": [
{
"name": "classpreloader/classpreloader",
diff --git a/phpunit.xml b/phpunit.xml
index b60b43d4..0065cf7e 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -15,14 +15,12 @@
>
- ./app/tests/
+ ./tests
./src
- ./app/filters
- ./app/models
diff --git a/src/Commands/OneClickDeployCommand.php b/src/Console/Commands/OneClickDeployCommand.php
similarity index 97%
rename from src/Commands/OneClickDeployCommand.php
rename to src/Console/Commands/OneClickDeployCommand.php
index 1621eb60..78a1dfc5 100644
--- a/src/Commands/OneClickDeployCommand.php
+++ b/src/Console/Commands/OneClickDeployCommand.php
@@ -1,6 +1,6 @@
headers->set('Access-Control-Allow-Origin', '*');
+
+ return $response;
+ }
+}
diff --git a/src/Http/Before/AuthBasicFilter.php b/src/Http/Before/AuthBasicFilter.php
new file mode 100644
index 00000000..599f6223
--- /dev/null
+++ b/src/Http/Before/AuthBasicFilter.php
@@ -0,0 +1,13 @@
+ajax()) {
+ return Response::make('Unauthorized', 401);
+ } else {
+ return Redirect::guest('auth/login');
+ }
+ }
+ }
+}
diff --git a/src/Http/Before/CsrfFilter.php b/src/Http/Before/CsrfFilter.php
new file mode 100644
index 00000000..50bfa83f
--- /dev/null
+++ b/src/Http/Before/CsrfFilter.php
@@ -0,0 +1,17 @@
+first();
diff --git a/app/filters/IsSetupFilter.php b/src/Http/Before/IsSetupFilter.php
similarity index 53%
rename from app/filters/IsSetupFilter.php
rename to src/Http/Before/IsSetupFilter.php
index 3eb44886..b8f1a2a9 100644
--- a/app/filters/IsSetupFilter.php
+++ b/src/Http/Before/IsSetupFilter.php
@@ -1,8 +1,16 @@
first();
diff --git a/app/filters/LoginThrottlingFilter.php b/src/Http/Before/LoginThrottlingFilter.php
similarity index 67%
rename from app/filters/LoginThrottlingFilter.php
rename to src/Http/Before/LoginThrottlingFilter.php
index 80b3dc86..5b3a6e48 100644
--- a/app/filters/LoginThrottlingFilter.php
+++ b/src/Http/Before/LoginThrottlingFilter.php
@@ -1,10 +1,15 @@
hasMany('Incident', 'component_id', 'id');
+ return $this->hasMany('CachetHQ\Cachet\Models\Incident', 'component_id', 'id');
}
/**
diff --git a/app/models/Incident.php b/src/Models/Incident.php
similarity index 95%
rename from app/models/Incident.php
rename to src/Models/Incident.php
index 8753f723..0c1996bc 100644
--- a/app/models/Incident.php
+++ b/src/Models/Incident.php
@@ -1,5 +1,7 @@
belongsTo('Component', 'component_id', 'id');
+ return $this->belongsTo('CachetHQ\Cachet\Models\Component', 'component_id', 'id');
}
/**
diff --git a/app/models/IncidentTemplate.php b/src/Models/IncidentTemplate.php
similarity index 95%
rename from app/models/IncidentTemplate.php
rename to src/Models/IncidentTemplate.php
index 137b2f25..8aad1502 100644
--- a/app/models/IncidentTemplate.php
+++ b/src/Models/IncidentTemplate.php
@@ -1,5 +1,7 @@
hasMany('MetricPoint', 'metric_id', 'id');
+ return $this->hasMany('CachetHQ\Cachet\Models\MetricPoint', 'metric_id', 'id');
}
/**
diff --git a/app/models/MetricPoint.php b/src/Models/MetricPoint.php
similarity index 68%
rename from app/models/MetricPoint.php
rename to src/Models/MetricPoint.php
index 463f10e5..863ac57e 100644
--- a/app/models/MetricPoint.php
+++ b/src/Models/MetricPoint.php
@@ -1,5 +1,7 @@
belongsTo('Metric', 'id', 'metric_id');
+ return $this->belongsTo('CachetHQ\Cachet\Models\Metric', 'id', 'metric_id');
}
}
diff --git a/app/models/Service.php b/src/Models/Service.php
similarity index 96%
rename from app/models/Service.php
rename to src/Models/Service.php
index dc58ba70..d3e233af 100644
--- a/app/models/Service.php
+++ b/src/Models/Service.php
@@ -1,5 +1,7 @@
commands('CachetHQ\Cachet\Commands\OneClickDeployCommand');
+ $this->commands('CachetHQ\Cachet\Console\Commands\OneClickDeployCommand');
}
/**
@@ -24,7 +24,7 @@ class ConsoleServiceProvider extends ServiceProvider
*/
public function register()
{
- $this->app->singleton('CachetHQ\Cachet\Commands\OneClickDeployCommand', function ($app) {
+ $this->app->singleton('CachetHQ\Cachet\Console\Commands\OneClickDeployCommand', function ($app) {
return new OneClickDeployCommand($app->environment('heroku'));
});
}
diff --git a/src/Providers/RoutingServiceProvider.php b/src/Providers/RoutingServiceProvider.php
index 97011fd3..32219fb7 100644
--- a/src/Providers/RoutingServiceProvider.php
+++ b/src/Providers/RoutingServiceProvider.php
@@ -12,6 +12,40 @@ class RoutingServiceProvider extends ServiceProvider
* @return void
*/
public function boot()
+ {
+ $this->registerFilters();
+ $this->registerBindings();
+ $this->registerRoutes();
+ }
+
+ protected function registerFilters()
+ {
+ // Laravel's before filters
+ $this->app->router->filter('auth', 'CachetHQ\Cachet\Http\Before\AuthFilter');
+ $this->app->router->filter('auth.basic', 'CachetHQ\Cachet\Http\Before\AuthBasicFilter');
+ $this->app->router->filter('guest', 'CachetHQ\Cachet\Http\Before\GuestFilter');
+ $this->app->router->filter('csrf', 'CachetHQ\Cachet\Http\Before\CsrfFilter');
+
+ // Cachet's before filters
+ $this->app->router->filter('is_setup', 'CachetHQ\Cachet\Http\Before\IsSetupFilter');
+ $this->app->router->filter('has_setting', 'CachetHQ\Cachet\Http\Before\HasSettingFilter');
+ $this->app->router->filter('login_throttling', 'CachetHQ\Cachet\Http\Before\LoginThrottlingFilter');
+
+ // Cachet's after filters
+ $this->app->router->filter('allowed_domains', 'CachetHQ\Cachet\Http\After\AllowedDomainsFilter');
+ $this->app->router->filter('cors', 'CachetHQ\Cachet\Http\After\CorsFilter');
+ }
+
+ protected function registerBindings()
+ {
+ $this->app->router->model('component', 'CachetHQ\Cachet\Models\Component');
+ $this->app->router->model('incident', 'CachetHQ\Cachet\Models\Incident');
+ $this->app->router->model('incident_template', 'CachetHQ\Cachet\Models\IncidentTemplate');
+ $this->app->router->model('setting', 'CachetHQ\Cachet\Models\Setting');
+ $this->app->router->model('user', 'CachetHQ\Cachet\Models\User');
+ }
+
+ protected function registerRoutes()
{
$files = glob(app_path('routes').'/*.php');
diff --git a/src/Repositories/Component/EloquentComponentRepository.php b/src/Repositories/Component/EloquentComponentRepository.php
index e443f0e1..7420fff6 100644
--- a/src/Repositories/Component/EloquentComponentRepository.php
+++ b/src/Repositories/Component/EloquentComponentRepository.php
@@ -2,22 +2,22 @@
namespace CachetHQ\Cachet\Repositories\Component;
+use CachetHQ\Cachet\Models\Component;
use CachetHQ\Cachet\Repositories\EloquentRepository;
-use Component;
class EloquentComponentRepository extends EloquentRepository implements ComponentRepository
{
/**
* The eloquent model instance.
*
- * @var \Component
+ * @var \CachetHQ\Cachet\Models\Component
*/
protected $model;
/**
* Create a new eloquent component repository instance.
*
- * @param \Component $model
+ * @param \CachetHQ\Cachet\Models\Component $model
*
* @return void
*/
diff --git a/src/Repositories/Incident/EloquentIncidentRepository.php b/src/Repositories/Incident/EloquentIncidentRepository.php
index 38b77120..f5bcf30a 100644
--- a/src/Repositories/Incident/EloquentIncidentRepository.php
+++ b/src/Repositories/Incident/EloquentIncidentRepository.php
@@ -2,22 +2,22 @@
namespace CachetHQ\Cachet\Repositories\Incident;
+use CachetHQ\Cachet\Models\Incident;
use CachetHQ\Cachet\Repositories\EloquentRepository;
-use Incident;
class EloquentIncidentRepository extends EloquentRepository implements IncidentRepository
{
/**
* The eloquent model instance.
*
- * @var \Incident
+ * @var \CachetHQ\Cachet\Models\Incident
*/
protected $model;
/**
* Create a new eloquent incident repository instance.
*
- * @param \Incident $model
+ * @param \CachetHQ\Cachet\Models\Incident $model
*
* @return void
*/
diff --git a/src/Repositories/Metric/EloquentMetricRepository.php b/src/Repositories/Metric/EloquentMetricRepository.php
index 961d5da2..c72ab0f5 100644
--- a/src/Repositories/Metric/EloquentMetricRepository.php
+++ b/src/Repositories/Metric/EloquentMetricRepository.php
@@ -2,22 +2,22 @@
namespace CachetHQ\Cachet\Repositories\Metric;
+use CachetHQ\Cachet\Models\Metric;
use CachetHQ\Cachet\Repositories\EloquentRepository;
-use Metric;
class EloquentMetricRepository extends EloquentRepository implements MetricRepository
{
/**
* The eloquent model instance.
*
- * @var \Metric
+ * @var \CachetHQ\Cachet\Models\Metric
*/
protected $model;
/**
* Create a new eloquent metric repository instance.
*
- * @param \Metric $model
+ * @param \CachetHQ\Cachet\Models\Metric $model
*
* @return void
*/
diff --git a/src/Repositories/MetricPoint/EloquentMetricPointRepository.php b/src/Repositories/MetricPoint/EloquentMetricPointRepository.php
index 17d54779..3118f9b6 100644
--- a/src/Repositories/MetricPoint/EloquentMetricPointRepository.php
+++ b/src/Repositories/MetricPoint/EloquentMetricPointRepository.php
@@ -2,22 +2,22 @@
namespace CachetHQ\Cachet\Repositories\MetricPoint;
+use CachetHQ\Cachet\Models\MetricPoint;
use CachetHQ\Cachet\Repositories\EloquentRepository;
-use MetricPoint;
class EloquentMetricPointRepository extends EloquentRepository implements MetricPointRepository
{
/**
* The eloquent model instance.
*
- * @var \MetricPoint
+ * @var \CachetHQ\Cachet\Models\MetricPoint
*/
protected $model;
/**
* Create a new eloquent metric point repository instance.
*
- * @param \MetricPoint $model
+ * @param \CachetHQ\Cachet\Models\MetricPoint $model
*
* @return void
*/
diff --git a/src/Transformers/ComponentTransformer.php b/src/Transformers/ComponentTransformer.php
index b67984a6..4f18f93f 100644
--- a/src/Transformers/ComponentTransformer.php
+++ b/src/Transformers/ComponentTransformer.php
@@ -2,11 +2,18 @@
namespace CachetHQ\Cachet\Transformers;
-use Component;
+use CachetHQ\Cachet\Models\Component;
use League\Fractal\TransformerAbstract;
class ComponentTransformer extends TransformerAbstract
{
+ /**
+ * Transform a component model into an array.
+ *
+ * @param \CachetHQ\Cachet\Models\Component $component
+ *
+ * @return array
+ */
public function transform(Component $component)
{
return [
diff --git a/src/Transformers/IncidentTransformer.php b/src/Transformers/IncidentTransformer.php
index 50bf7c82..1c89da5a 100644
--- a/src/Transformers/IncidentTransformer.php
+++ b/src/Transformers/IncidentTransformer.php
@@ -2,11 +2,18 @@
namespace CachetHQ\Cachet\Transformers;
-use Incident;
+use CachetHQ\Cachet\Models\Incident;
use League\Fractal\TransformerAbstract;
class IncidentTransformer extends TransformerAbstract
{
+ /**
+ * Transform an incident model into an array.
+ *
+ * @param \CachetHQ\Cachet\Models\Incident $incident
+ *
+ * @return array
+ */
public function transform(Incident $incident)
{
$component = $incident->component;
diff --git a/src/Transformers/MetricPointTransformer.php b/src/Transformers/MetricPointTransformer.php
index def60b3b..b7b6ab1a 100644
--- a/src/Transformers/MetricPointTransformer.php
+++ b/src/Transformers/MetricPointTransformer.php
@@ -2,11 +2,18 @@
namespace CachetHQ\Cachet\Transformers;
+use CachetHQ\Cachet\Models\MetricPoint;
use League\Fractal\TransformerAbstract;
-use MetricPoint;
class MetricPointTransformer extends TransformerAbstract
{
+ /**
+ * Transform a metric point model into an array.
+ *
+ * @param \CachetHQ\Cachet\Models\MetricPoint $metricPoint
+ *
+ * @return array
+ */
public function transform(MetricPoint $metricPoint)
{
return [
diff --git a/src/Transformers/MetricTransformer.php b/src/Transformers/MetricTransformer.php
index caef7f60..a9fc879a 100644
--- a/src/Transformers/MetricTransformer.php
+++ b/src/Transformers/MetricTransformer.php
@@ -2,11 +2,18 @@
namespace CachetHQ\Cachet\Transformers;
+use CachetHQ\Cachet\Models\Metric;
use League\Fractal\TransformerAbstract;
-use Metric;
class MetricTransformer extends TransformerAbstract
{
+ /**
+ * Transform a metric model into an array.
+ *
+ * @param \CachetHQ\Cachet\Models\Metric $metric
+ *
+ * @return array
+ */
public function transform(Metric $metric)
{
return [
diff --git a/app/helpers.php b/src/helpers.php
similarity index 83%
rename from app/helpers.php
rename to src/helpers.php
index a7a5e9e4..689ef843 100644
--- a/app/helpers.php
+++ b/src/helpers.php
@@ -1,6 +1,8 @@
repo->shouldReceive('all')->once()->andReturn('foo');
- $controller = new CachetHQ\Cachet\Controllers\Api\ComponentController($this->repo);
+ $controller = new CachetHQ\Cachet\Http\Controllers\Api\ComponentController($this->repo);
$response = $controller->getComponents();
$this->assertEquals('foo', $response);
@@ -27,7 +27,7 @@ class ComponentControllerTest extends TestCase
{
$this->repo->shouldReceive('findOrFail')->with(1)->once()->andReturn('foo');
- $controller = new CachetHQ\Cachet\Controllers\Api\ComponentController($this->repo);
+ $controller = new CachetHQ\Cachet\Http\Controllers\Api\ComponentController($this->repo);
$response = $controller->getComponent(1);
$this->assertEquals('foo', $response);
diff --git a/app/tests/TestCase.php b/tests/TestCase.php
similarity index 83%
rename from app/tests/TestCase.php
rename to tests/TestCase.php
index 76f47391..3e9f0ac6 100644
--- a/app/tests/TestCase.php
+++ b/tests/TestCase.php
@@ -13,6 +13,6 @@ class TestCase extends Illuminate\Foundation\Testing\TestCase
$testEnvironment = 'testing';
- return require __DIR__.'/../../bootstrap/start.php';
+ return require __DIR__.'/../bootstrap/start.php';
}
}