mirror of
https://github.com/CachetHQ/Cachet.git
synced 2025-02-11 19:14:30 +01:00
Cleanup middleware and routes
This commit is contained in:
parent
9957e2ec15
commit
a1b7bb8cce
@ -51,15 +51,14 @@ class Kernel extends HttpKernel
|
||||
* @var array
|
||||
*/
|
||||
protected $routeMiddleware = [
|
||||
'admin' => 'CachetHQ\Cachet\Http\Middleware\Admin',
|
||||
'app.hasSetting' => 'CachetHQ\Cachet\Http\Middleware\HasSetting',
|
||||
'app.isSetup' => 'CachetHQ\Cachet\Http\Middleware\AppIsSetup',
|
||||
'app.subscribers' => 'CachetHQ\Cachet\Http\Middleware\SubscribersConfigured',
|
||||
'auth' => 'CachetHQ\Cachet\Http\Middleware\Authenticate',
|
||||
'auth.api.optional' => 'CachetHQ\Cachet\Http\Middleware\ApiOptionalAuthenticate',
|
||||
'auth.api.required' => 'CachetHQ\Cachet\Http\Middleware\ApiAuthenticate',
|
||||
'guest' => 'CachetHQ\Cachet\Http\Middleware\RedirectIfAuthenticated',
|
||||
'localize' => 'CachetHQ\Cachet\Http\Middleware\Localize',
|
||||
'throttling' => 'GrahamCampbell\Throttle\Http\Middleware\ThrottleMiddleware',
|
||||
'admin' => 'CachetHQ\Cachet\Http\Middleware\Admin',
|
||||
'auth' => 'CachetHQ\Cachet\Http\Middleware\Authenticate',
|
||||
'auth.api' => 'CachetHQ\Cachet\Http\Middleware\ApiAuthentication',
|
||||
'guest' => 'CachetHQ\Cachet\Http\Middleware\RedirectIfAuthenticated',
|
||||
'localize' => 'CachetHQ\Cachet\Http\Middleware\Localize',
|
||||
'ready' => 'CachetHQ\Cachet\Http\Middleware\ReadyForUse',
|
||||
'setup' => 'CachetHQ\Cachet\Http\Middleware\SetupAlreadyCompleted',
|
||||
'subscribers' => 'CachetHQ\Cachet\Http\Middleware\SubscribersConfigured',
|
||||
'throttling' => 'GrahamCampbell\Throttle\Http\Middleware\ThrottleMiddleware',
|
||||
];
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ class Admin
|
||||
}
|
||||
|
||||
/**
|
||||
* We're verifying that the current user is logged in to Cachet and is an admin level.
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
|
@ -17,7 +17,7 @@ use Illuminate\Contracts\Auth\Guard;
|
||||
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||
use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||
|
||||
class ApiAuthenticate
|
||||
class ApiAuthentication
|
||||
{
|
||||
/**
|
||||
* The authentication guard instance.
|
||||
@ -27,7 +27,7 @@ class ApiAuthenticate
|
||||
protected $auth;
|
||||
|
||||
/**
|
||||
* Create a new api authenticate middleware instance.
|
||||
* Create a new api authentication middleware instance.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Auth\Guard $auth
|
||||
*
|
||||
@ -43,19 +43,22 @@ class ApiAuthenticate
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @param bool $required
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
public function handle($request, Closure $next, $required = false)
|
||||
{
|
||||
if ($this->auth->guest()) {
|
||||
if ($apiToken = $request->header('X-Cachet-Token')) {
|
||||
try {
|
||||
$this->auth->onceUsingId(User::findByApiToken($apiToken)->id);
|
||||
} catch (ModelNotFoundException $e) {
|
||||
throw new HttpException(401);
|
||||
if ($required) {
|
||||
throw new HttpException(401);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
} elseif ($required) {
|
||||
throw new HttpException(401);
|
||||
}
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Cachet.
|
||||
*
|
||||
* (c) Alt Three Services Limited
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace CachetHQ\Cachet\Http\Middleware;
|
||||
|
||||
use CachetHQ\Cachet\Models\User;
|
||||
use Closure;
|
||||
use Illuminate\Contracts\Auth\Guard;
|
||||
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||
|
||||
class ApiOptionalAuthenticate
|
||||
{
|
||||
/**
|
||||
* The authentication guard instance.
|
||||
*
|
||||
* @var \Illuminate\Contracts\Auth\Guard
|
||||
*/
|
||||
protected $auth;
|
||||
|
||||
/**
|
||||
* Create a new api authenticate middleware instance.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Auth\Guard $auth
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(Guard $auth)
|
||||
{
|
||||
$this->auth = $auth;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
if ($this->auth->guest()) {
|
||||
if ($apiToken = $request->header('X-Cachet-Token')) {
|
||||
try {
|
||||
$this->auth->onceUsingId(User::findByApiToken($apiToken)->id);
|
||||
} catch (ModelNotFoundException $e) {
|
||||
//
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
@ -32,7 +32,7 @@ class Localize
|
||||
protected $config;
|
||||
|
||||
/**
|
||||
* Constructs a new localize instance.
|
||||
* Constructs a new localize middleware instance.
|
||||
*
|
||||
* @param \Illuminate\Config\Repository $config
|
||||
*
|
||||
|
@ -16,14 +16,10 @@ use Closure;
|
||||
use Exception;
|
||||
use Illuminate\Support\Facades\Redirect;
|
||||
|
||||
class HasSetting
|
||||
class ReadyForUse
|
||||
{
|
||||
/**
|
||||
* Run the has setting middleware.
|
||||
*
|
||||
* We're verifying that the given setting exists in our database. If it
|
||||
* doesn't, then we're sending the user to the setup page so that they can
|
||||
* complete the installation of Cachet on their server.
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
@ -32,10 +28,8 @@ class HasSetting
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
$settingName = $this->getSettingName($request);
|
||||
|
||||
try {
|
||||
if (!Setting::get($settingName)) {
|
||||
if (!Setting::get('app_name')) {
|
||||
return Redirect::to('setup');
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
@ -44,18 +38,4 @@ class HasSetting
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the setting from the request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private function getSettingName($request)
|
||||
{
|
||||
$actions = $request->route()->getAction();
|
||||
|
||||
return $actions['setting'];
|
||||
}
|
||||
}
|
@ -15,13 +15,10 @@ use CachetHQ\Cachet\Facades\Setting;
|
||||
use Closure;
|
||||
use Illuminate\Support\Facades\Redirect;
|
||||
|
||||
class AppIsSetup
|
||||
class SetupAlreadyCompleted
|
||||
{
|
||||
/**
|
||||
* Run the app is setup middleware.
|
||||
*
|
||||
* We're verifying that Cachet is correctly setup. If it is, then we're
|
||||
* redirecting the user to the dashboard so they can use Cachet.
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
@ -17,7 +17,7 @@ use Illuminate\Support\Facades\Redirect;
|
||||
class SubscribersConfigured
|
||||
{
|
||||
/**
|
||||
* We're verifying that subscribers is both enabled and configured.
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
|
@ -24,15 +24,13 @@ class ApiRoutes
|
||||
* Define the api routes.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Routing\Registrar $router
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function map(Registrar $router)
|
||||
{
|
||||
$router->group([
|
||||
'namespace' => 'Api',
|
||||
'prefix' => 'api/v1',
|
||||
'middleware' => ['api'],
|
||||
], function ($router) {
|
||||
$router->group(['middleware' => ['auth.api.optional']], function ($router) {
|
||||
$router->group(['namespace' => 'Api', 'prefix' => 'api/v1', 'middleware' => ['api']], function ($router) {
|
||||
$router->group(['middleware' => ['auth.api']], function ($router) {
|
||||
$router->get('ping', 'GeneralController@ping');
|
||||
|
||||
$router->get('components', 'ComponentController@getComponents');
|
||||
@ -48,7 +46,7 @@ class ApiRoutes
|
||||
$router->get('metrics/{metric}/points', 'MetricController@getMetricPoints');
|
||||
});
|
||||
|
||||
$router->group(['middleware' => ['auth.api.required']], function ($router) {
|
||||
$router->group(['middleware' => ['auth.api:true']], function ($router) {
|
||||
$router->get('subscribers', 'SubscriberController@getSubscribers');
|
||||
|
||||
$router->post('components', 'ComponentController@postComponents');
|
||||
|
@ -24,15 +24,12 @@ class AuthRoutes
|
||||
* Define the auth routes.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Routing\Registrar $router
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function map(Registrar $router)
|
||||
{
|
||||
$router->group([
|
||||
'as' => 'auth.',
|
||||
'middleware' => ['web', 'app.hasSetting'],
|
||||
'prefix' => 'auth',
|
||||
'setting' => 'app_name',
|
||||
], function ($router) {
|
||||
$router->group(['as' => 'auth.', 'middleware' => ['web', 'ready'], 'prefix' => 'auth'], function ($router) {
|
||||
$router->get('login', [
|
||||
'middleware' => 'guest',
|
||||
'as' => 'login',
|
||||
@ -44,7 +41,6 @@ class AuthRoutes
|
||||
'uses' => 'AuthController@postLogin',
|
||||
]);
|
||||
|
||||
// Two factor authorization
|
||||
$router->get('2fa', [
|
||||
'as' => 'two-factor',
|
||||
'uses' => 'AuthController@showTwoFactorAuth',
|
||||
|
@ -24,26 +24,18 @@ class DashboardRoutes
|
||||
* Define the dashboard routes.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Routing\Registrar $router
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function map(Registrar $router)
|
||||
{
|
||||
$router->group([
|
||||
'middleware' => ['web', 'auth'],
|
||||
'prefix' => 'dashboard',
|
||||
'namespace' => 'Dashboard',
|
||||
'as' => 'dashboard.',
|
||||
], function ($router) {
|
||||
// Dashboard
|
||||
$router->group(['middleware' => ['web', 'auth'], 'prefix' => 'dashboard', 'namespace' => 'Dashboard', 'as' => 'dashboard.'], function ($router) {
|
||||
$router->get('/', [
|
||||
'as' => 'index',
|
||||
'uses' => 'DashboardController@showDashboard',
|
||||
]);
|
||||
|
||||
// Components
|
||||
$router->group([
|
||||
'as' => 'components.',
|
||||
'prefix' => 'components',
|
||||
], function ($router) {
|
||||
$router->group(['as' => 'components.', 'prefix' => 'components'], function ($router) {
|
||||
$router->get('/', [
|
||||
'as' => 'index',
|
||||
'uses' => 'ComponentController@showComponents',
|
||||
@ -76,11 +68,7 @@ class DashboardRoutes
|
||||
$router->post('{component}/edit', 'ComponentController@updateComponentAction');
|
||||
});
|
||||
|
||||
// Incidents
|
||||
$router->group([
|
||||
'as' => 'incidents.',
|
||||
'prefix' => 'incidents',
|
||||
], function ($router) {
|
||||
$router->group(['as' => 'incidents.', 'prefix' => 'incidents'], function ($router) {
|
||||
$router->get('/', [
|
||||
'as' => 'index',
|
||||
'uses' => 'IncidentController@showIncidents',
|
||||
@ -101,11 +89,7 @@ class DashboardRoutes
|
||||
$router->post('{incident}/edit', 'IncidentController@editIncidentAction');
|
||||
});
|
||||
|
||||
// Scheduled Maintenance
|
||||
$router->group([
|
||||
'as' => 'schedule.',
|
||||
'prefix' => 'schedule',
|
||||
], function ($router) {
|
||||
$router->group(['as' => 'schedule.', 'prefix' => 'schedule'], function ($router) {
|
||||
$router->get('/', [
|
||||
'as' => 'index',
|
||||
'uses' => 'ScheduleController@showIndex',
|
||||
@ -126,11 +110,7 @@ class DashboardRoutes
|
||||
]);
|
||||
});
|
||||
|
||||
// Incident Templates
|
||||
$router->group([
|
||||
'as' => 'templates.',
|
||||
'prefix' => 'templates',
|
||||
], function ($router) {
|
||||
$router->group(['as' => 'templates.', 'prefix' => 'templates'], function ($router) {
|
||||
$router->get('/', [
|
||||
'as' => 'index',
|
||||
'uses' => 'IncidentController@showTemplates',
|
||||
@ -148,11 +128,7 @@ class DashboardRoutes
|
||||
$router->delete('{incident_template}/delete', 'IncidentController@deleteTemplateAction');
|
||||
});
|
||||
|
||||
// Subscribers
|
||||
$router->group([
|
||||
'as' => 'subscribers.',
|
||||
'prefix' => 'subscribers',
|
||||
], function ($router) {
|
||||
$router->group(['as' => 'subscribers.', 'prefix' => 'subscribers'], function ($router) {
|
||||
$router->get('/', [
|
||||
'as' => 'index',
|
||||
'uses' => 'SubscriberController@showSubscribers',
|
||||
@ -165,11 +141,7 @@ class DashboardRoutes
|
||||
$router->delete('{subscriber}/delete', 'SubscriberController@deleteSubscriberAction');
|
||||
});
|
||||
|
||||
// Metrics
|
||||
$router->group([
|
||||
'as' => 'metrics.',
|
||||
'prefix' => 'metrics',
|
||||
], function ($router) {
|
||||
$router->group(['as' => 'metrics.', 'prefix' => 'metrics'], function ($router) {
|
||||
$router->get('/', [
|
||||
'as' => 'index',
|
||||
'uses' => 'MetricController@showMetrics',
|
||||
@ -187,11 +159,7 @@ class DashboardRoutes
|
||||
$router->post('{metric}/edit', 'MetricController@editMetricAction');
|
||||
});
|
||||
|
||||
// Team Members
|
||||
$router->group([
|
||||
'as' => 'team.',
|
||||
'prefix' => 'team',
|
||||
], function ($router) {
|
||||
$router->group(['as' => 'team.', 'prefix' => 'team'], function ($router) {
|
||||
$router->get('/', [
|
||||
'as' => 'index',
|
||||
'uses' => 'TeamController@showTeamView',
|
||||
@ -214,11 +182,7 @@ class DashboardRoutes
|
||||
});
|
||||
});
|
||||
|
||||
// Settings
|
||||
$router->group([
|
||||
'as' => 'settings.',
|
||||
'prefix' => 'settings',
|
||||
], function ($router) {
|
||||
$router->group(['as' => 'settings.', 'prefix' => 'settings'], function ($router) {
|
||||
$router->get('setup', [
|
||||
'as' => 'setup',
|
||||
'uses' => 'SettingsController@showSetupView',
|
||||
@ -246,7 +210,6 @@ class DashboardRoutes
|
||||
$router->post('/', 'SettingsController@postSettings');
|
||||
});
|
||||
|
||||
// User Settings
|
||||
$router->group(['prefix' => 'user'], function ($router) {
|
||||
$router->get('/', [
|
||||
'as' => 'user',
|
||||
@ -256,10 +219,6 @@ class DashboardRoutes
|
||||
$router->get('{user}/api/regen', 'UserController@regenerateApiKey');
|
||||
});
|
||||
|
||||
/*
|
||||
* Internal API.
|
||||
* This should only be used for making requests within the dashboard.
|
||||
*/
|
||||
$router->group(['prefix' => 'api'], function ($router) {
|
||||
$router->get('incidents/templates', 'ApiController@getIncidentTemplate');
|
||||
$router->post('components/groups/order', 'ApiController@postUpdateComponentGroupOrder');
|
||||
|
@ -24,13 +24,12 @@ class FeedRoutes
|
||||
* Define the status page routes.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Routing\Registrar $router
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function map(Registrar $router)
|
||||
{
|
||||
$router->group([
|
||||
'middleware' => ['web', 'app.hasSetting'],
|
||||
'setting' => 'app_name',
|
||||
], function ($router) {
|
||||
$router->group(['middleware' => ['web', 'ready']], function ($router) {
|
||||
$router->get('/atom/{component_group?}', [
|
||||
'as' => 'feed.atom',
|
||||
'uses' => 'FeedController@atomAction',
|
||||
|
@ -23,11 +23,13 @@ class SetupRoutes
|
||||
/**
|
||||
* Define the setup routes.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Routing\Registrar $router
|
||||
* @param \Illuminate\Contracts\Routing\Registrar $router#*
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function map(Registrar $router)
|
||||
{
|
||||
$router->group(['middleware' => ['web', 'app.isSetup']], function ($router) {
|
||||
$router->group(['middleware' => ['web', 'setup']], function ($router) {
|
||||
$router->controller('setup', 'SetupController');
|
||||
});
|
||||
}
|
||||
|
@ -24,14 +24,12 @@ class SignupRoutes
|
||||
* Define the signup routes.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Routing\Registrar $router
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function map(Registrar $router)
|
||||
{
|
||||
$router->group([
|
||||
'middleware' => ['web', 'app.hasSetting', 'guest'],
|
||||
'setting' => 'app_name',
|
||||
'as' => 'signup.',
|
||||
], function ($router) {
|
||||
$router->group(['middleware' => ['web', 'ready', 'guest'], 'as' => 'signup.'], function ($router) {
|
||||
$router->get('signup/invite/{code}', [
|
||||
'as' => 'invite',
|
||||
'uses' => 'SignupController@getSignup',
|
||||
|
@ -24,13 +24,12 @@ class StatusPageRoutes
|
||||
* Define the status page routes.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Routing\Registrar $router
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function map(Registrar $router)
|
||||
{
|
||||
$router->group([
|
||||
'middleware' => ['web', 'app.hasSetting', 'localize'],
|
||||
'setting' => 'app_name',
|
||||
], function ($router) {
|
||||
$router->group(['middleware' => ['web', 'ready', 'localize']], function ($router) {
|
||||
$router->get('/', [
|
||||
'as' => 'status-page',
|
||||
'uses' => 'StatusPageController@showIndex',
|
||||
|
@ -24,15 +24,13 @@ class SubscribeRoutes
|
||||
* Define the subscribe routes.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Routing\Registrar $router
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function map(Registrar $router)
|
||||
{
|
||||
$router->group([
|
||||
'middleware' => ['web', 'app.hasSetting', 'localize'],
|
||||
'setting' => 'app_name',
|
||||
'as' => 'subscribe.',
|
||||
], function ($router) {
|
||||
$router->group(['middleware' => 'app.subscribers'], function ($router) {
|
||||
$router->group(['middleware' => ['web', 'ready', 'localize'], 'as' => 'subscribe.'], function ($router) {
|
||||
$router->group(['middleware' => ['subscribers']], function ($router) {
|
||||
$router->get('subscribe', [
|
||||
'as' => 'subscribe',
|
||||
'uses' => 'SubscribeController@showSubscribe',
|
||||
|
Loading…
x
Reference in New Issue
Block a user