Merge pull request #888 from cachethq/route-cleanup

Cleaned up routes
This commit is contained in:
Graham Campbell 2015-08-11 11:29:13 +01:00
commit bee4055228
14 changed files with 183 additions and 110 deletions

View File

@ -29,7 +29,7 @@ class ComponentController extends Controller
$this->subMenu = [
'components' => [
'title' => trans('dashboard.components.components'),
'url' => route('dashboard.components'),
'url' => route('dashboard.components.index'),
'icon' => 'ion-outlet',
'active' => false,
],

View File

@ -44,13 +44,13 @@ class IncidentController extends Controller
$this->subMenu = [
'incidents' => [
'title' => trans('dashboard.incidents.incidents'),
'url' => route('dashboard.incidents'),
'url' => route('dashboard.incidents.index'),
'icon' => 'ion-android-checkmark-circle',
'active' => true,
],
'schedule' => [
'title' => trans('dashboard.schedule.schedule'),
'url' => route('dashboard.schedule'),
'url' => route('dashboard.schedule.index'),
'icon' => 'ion-android-calendar',
'active' => false,
],

View File

@ -50,7 +50,7 @@ class AuthController extends Controller
// Temporarily store the user.
Session::put('2fa_id', Auth::user()->id);
return Redirect::route('two-factor');
return Redirect::route('auth.two-factor');
}
// We probably want to add support for "Remember me" here.
@ -98,11 +98,11 @@ class AuthController extends Controller
// Failed login, log back out.
Auth::logout();
return Redirect::route('login')->withError(trans('forms.login.invalid-token'));
return Redirect::route('auth.login')->withError(trans('forms.login.invalid-token'));
}
}
return Redirect::route('login')->withError(trans('forms.login.invalid-token'));
return Redirect::route('auth.login')->withError(trans('forms.login.invalid-token'));
}
/**

View File

@ -13,6 +13,11 @@ namespace CachetHQ\Cachet\Http\Routes;
use Illuminate\Contracts\Routing\Registrar;
/**
* This is the api routes class.
*
* @author James Brooks <james@alt-three.com>
*/
class ApiRoutes
{
/**

View File

@ -13,6 +13,11 @@ namespace CachetHQ\Cachet\Http\Routes;
use Illuminate\Contracts\Routing\Registrar;
/**
* This is the auth routes class.
*
* @author James Brooks <james@alt-three.com>
*/
class AuthRoutes
{
/**
@ -22,36 +27,39 @@ class AuthRoutes
*/
public function map(Registrar $router)
{
$router->group(['prefix' => 'auth'], function ($router) {
$router->group(['middleware' => 'app.hasSetting', 'setting' => 'app_name'], function ($router) {
// Login routes
$router->get('login', [
'middleware' => 'guest',
'as' => 'login',
'uses' => 'AuthController@showLogin',
]);
$router->group([
'as' => 'auth.',
'middleware' => 'app.hasSetting',
'prefix' => 'auth',
'setting' => 'app_name',
], function ($router) {
$router->get('login', [
'middleware' => 'guest',
'as' => 'login',
'uses' => 'AuthController@showLogin',
]);
$router->post('login', [
'middleware' => ['guest', 'csrf', 'throttling:10,10'],
'as' => 'login',
'uses' => 'AuthController@postLogin',
]);
$router->post('login', [
'middleware' => ['guest', 'csrf', 'throttling:10,10'],
'uses' => 'AuthController@postLogin',
]);
// Two factor authorization
$router->get('2fa', [
'as' => 'two-factor',
'uses' => 'AuthController@showTwoFactorAuth',
]);
// Two factor authorization
$router->get('2fa', [
'as' => 'two-factor',
'uses' => 'AuthController@showTwoFactorAuth',
]);
$router->post('2fa', 'AuthController@postTwoFactor');
});
$router->post('2fa', [
'middleware' => ['csrf', 'throttling:10,10'],
'uses' => 'AuthController@postTwoFactor',
]);
$router->group(['middleware' => 'auth'], function ($router) {
$router->get('logout', [
'as' => 'logout',
'uses' => 'AuthController@logoutAction',
]);
});
$router->get('logout', [
'as' => 'logout',
'uses' => 'AuthController@logoutAction',
'middleware' => 'auth',
]);
});
}
}

View File

@ -13,6 +13,11 @@ namespace CachetHQ\Cachet\Http\Routes;
use Illuminate\Contracts\Routing\Registrar;
/**
* This is the dashboard routes class.
*
* @author James Brooks <james@alt-three.com>
*/
class DashboardRoutes
{
/**
@ -26,152 +31,172 @@ class DashboardRoutes
'middleware' => 'auth',
'prefix' => 'dashboard',
'namespace' => 'Admin',
'as' => 'dashboard.',
], function ($router) {
// Dashboard
$router->get('/', [
'as' => 'dashboard',
'as' => 'index',
'uses' => 'DashboardController@showDashboard',
]);
// Components
$router->group(['prefix' => 'components'], function ($router) {
$router->group([
'as' => 'components.',
'prefix' => 'components',
], function ($router) {
$router->get('/', [
'as' => 'dashboard.components',
'as' => 'index',
'uses' => 'ComponentController@showComponents',
]);
$router->get('add', [
'as' => 'dashboard.components.add',
'as' => 'add',
'uses' => 'ComponentController@showAddComponent',
]);
$router->post('add', 'ComponentController@createComponentAction');
$router->get('groups', [
'as' => 'dashboard.components.groups',
'as' => 'groups',
'uses' => 'ComponentController@showComponentGroups',
]);
$router->get('groups/add', [
'as' => 'dashboard.components.groups.add',
'as' => 'groups.add',
'uses' => 'ComponentController@showAddComponentGroup',
]);
$router->get('groups/edit/{component_group}', [
'as' => 'dashboard.components.groups.edit',
'as' => 'groups.edit',
'uses' => 'ComponentController@showEditComponentGroup',
]);
$router->post('groups/edit/{component_group}', 'ComponentController@updateComponentGroupAction');
$router->delete('groups/{component_group}/delete', 'ComponentController@deleteComponentGroupAction');
$router->post('groups/add', 'ComponentController@postAddComponentGroup');
$router->get('{component}/edit', [
'as' => 'edit',
'uses' => 'ComponentController@showEditComponent',
]);
$router->delete('{component}/delete', 'ComponentController@deleteComponentAction');
$router->get('{component}/edit', 'ComponentController@showEditComponent');
$router->post('{component}/edit', 'ComponentController@updateComponentAction');
});
// Incidents
$router->group(['prefix' => 'incidents'], function ($router) {
$router->group([
'as' => 'incidents.',
'prefix' => 'incidents',
], function ($router) {
$router->get('/', [
'as' => 'dashboard.incidents',
'as' => 'index',
'uses' => 'IncidentController@showIncidents',
]);
$router->get('add', [
'as' => 'dashboard.incidents.add',
'as' => 'add',
'uses' => 'IncidentController@showAddIncident',
]);
$router->post('add', 'IncidentController@createIncidentAction');
$router->delete('{incident}/delete', 'IncidentController@deleteIncidentAction');
$router->get('{incident}/edit', 'IncidentController@showEditIncidentAction');
$router->get('{incident}/edit', [
'as' => 'edit',
'uses' => 'IncidentController@showEditIncidentAction',
]);
$router->post('{incident}/edit', 'IncidentController@editIncidentAction');
});
// Scheduled Maintenance
$router->group(['prefix' => 'schedule'], function ($router) {
$router->get('/', ['as' => 'dashboard.schedule', 'uses' => 'ScheduleController@showIndex']);
$router->group([
'as' => 'schedule.',
'prefix' => 'schedule',
], function ($router) {
$router->get('/', [
'as' => 'index',
'uses' => 'ScheduleController@showIndex',
]);
$router->get('add', [
'as' => 'dashboard.schedule.add',
'as' => 'add',
'uses' => 'ScheduleController@showAddSchedule',
]);
$router->post('add', 'ScheduleController@addScheduleAction');
$router->get('{incident}/edit', [
'as' => 'dashboard.schedule.edit',
'as' => 'edit',
'uses' => 'ScheduleController@showEditSchedule',
]);
$router->post('{incident}/edit', 'ScheduleController@editScheduleAction');
$router->delete('{incident}/delete', [
'as' => 'dashboard.schedule.delete',
'as' => 'delete',
'uses' => 'ScheduleController@deleteScheduleAction',
]);
});
// Incident Templates
$router->group(['prefix' => 'templates'], function ($router) {
$router->group([
'as' => 'templates.',
'prefix' => 'templates',
], function ($router) {
$router->get('/', [
'as' => 'dashboard.templates',
'as' => 'index',
'uses' => 'IncidentController@showTemplates',
]);
$router->get('add', [
'as' => 'dashboard.templates.add',
'as' => 'add',
'uses' => 'IncidentController@showAddIncidentTemplate',
]);
$router->post('add', 'IncidentController@createIncidentTemplateAction');
$router->get('{incident_template}/edit', 'IncidentController@showEditTemplateAction');
$router->get('{incident_template}/edit', [
'as' => 'edit',
'uses' => 'IncidentController@showEditTemplateAction',
]);
$router->post('{incident_template}/edit', 'IncidentController@editTemplateAction');
$router->delete('{incident_template}/delete', 'IncidentController@deleteTemplateAction');
});
// Subscribers
$router->group(['prefix' => 'subscribers'], function ($router) {
$router->group([
'as' => 'subscribers.',
'prefix' => 'subscribers',
], function ($router) {
$router->get('/', [
'as' => 'dashboard.subscribers',
'as' => 'index',
'uses' => 'SubscriberController@showSubscribers',
]);
$router->get('add', [
'as' => 'dashboard.subscribers.add',
'as' => 'add',
'uses' => 'SubscriberController@showAddSubscriber',
]);
$router->post('add', 'SubscriberController@createSubscriberAction');
$router->delete('{subscriber}/delete', 'SubscriberController@deleteSubscriberAction');
});
// Metrics
$router->group(['prefix' => 'metrics'], function ($router) {
$router->group([
'as' => 'metrics.',
'prefix' => 'metrics',
], function ($router) {
$router->get('/', [
'as' => 'dashboard.metrics',
'as' => 'index',
'uses' => 'MetricController@showMetrics',
]);
$router->get('add', [
'as' => 'dashboard.metrics.add',
'as' => 'add',
'uses' => 'MetricController@showAddMetric',
]);
$router->post('add', 'MetricController@createMetricAction');
$router->delete('{metric}/delete', 'MetricController@deleteMetricAction');
$router->get('{metric}/edit', 'MetricController@showEditMetricAction');
$router->get('{metric}/edit', [
'as' => 'edit',
'uses' => 'MetricController@showEditMetricAction',
]);
$router->post('{metric}/edit', 'MetricController@editMetricAction');
});
// Notifications
$router->group(['prefix' => 'notifications'], function ($router) {
$router->get('/', [
'as' => 'dashboard.notifications',
'uses' => 'DashboardController@showNotifications',
]);
});
// Team Members
$router->group(['prefix' => 'team'], function ($router) {
$router->group([
'as' => 'team.',
'prefix' => 'team',
], function ($router) {
$router->get('/', [
'as' => 'dashboard.team',
'as' => 'index',
'uses' => 'TeamController@showTeamView',
]);
$router->group(['middleware' => 'admin'], function ($router) {
$router->get('add', [
'as' => 'dashboard.team.add',
'as' => 'add',
'uses' => 'TeamController@showAddTeamMemberView',
]);
$router->get('{user}', 'TeamController@showTeamMemberView');
@ -182,21 +207,24 @@ class DashboardRoutes
});
// Settings
$router->group(['prefix' => 'settings'], function ($router) {
$router->group([
'as' => 'settings.',
'prefix' => 'settings',
], function ($router) {
$router->get('setup', [
'as' => 'dashboard.settings.setup',
'as' => 'setup',
'uses' => 'SettingsController@showSetupView',
]);
$router->get('security', [
'as' => 'dashboard.settings.security',
'as' => 'security',
'uses' => 'SettingsController@showSecurityView',
]);
$router->get('theme', [
'as' => 'dashboard.settings.theme',
'as' => 'theme',
'uses' => 'SettingsController@showThemeView',
]);
$router->get('stylesheet', [
'as' => 'dashboard.settings.stylesheet',
'as' => 'stylesheet',
'uses' => 'SettingsController@showStylesheetView',
]);
$router->post('/', 'SettingsController@postSettings');
@ -205,15 +233,17 @@ class DashboardRoutes
// User Settings
$router->group(['prefix' => 'user'], function ($router) {
$router->get('/', [
'as' => 'dashboard.user',
'as' => 'user',
'uses' => 'UserController@showUser',
]);
$router->post('/', 'UserController@postUser');
$router->get('{user}/api/regen', 'UserController@regenerateApiKey');
});
// Internal API.
// This should only be used for making requests within the dashboard.
/*
* 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');

View File

@ -13,6 +13,11 @@ namespace CachetHQ\Cachet\Http\Routes;
use Illuminate\Contracts\Routing\Registrar;
/**
* This is the feed routes class.
*
* @author James Brooks <james@alt-three.com>
*/
class FeedRoutes
{
/**
@ -24,8 +29,14 @@ class FeedRoutes
{
// Prevent access until the app is setup.
$router->group(['middleware' => 'app.hasSetting', 'setting' => 'app_name'], function ($router) {
$router->get('/atom/{component_group?}', 'AtomController@feedAction');
$router->get('/rss/{component_group?}', 'RssController@feedAction');
$router->get('/atom/{component_group?}', [
'as' => 'feed.atom',
'uses' => 'AtomController@feedAction',
]);
$router->get('/rss/{component_group?}', [
'as' => 'feed.rss',
'uses' => 'RssController@feedAction',
]);
});
}
}

View File

@ -13,6 +13,11 @@ namespace CachetHQ\Cachet\Http\Routes;
use Illuminate\Contracts\Routing\Registrar;
/**
* This is the setup routes class.
*
* @author James Brooks <james@alt-three.com>
*/
class SetupRoutes
{
/**

View File

@ -13,6 +13,11 @@ namespace CachetHQ\Cachet\Http\Routes;
use Illuminate\Contracts\Routing\Registrar;
/**
* This is the status page routes class.
*
* @author James Brooks <james@alt-three.com>
*/
class StatusPageRoutes
{
/**
@ -22,12 +27,11 @@ class StatusPageRoutes
*/
public function map(Registrar $router)
{
// Prevent access until the app is setup.
$router->group(['middleware' => 'app.hasSetting', 'setting' => 'app_name'], function ($router) {
$router->get('/', [
'as' => 'status-page',
'uses' => 'HomeController@showIndex',
]);
});
$router->get('/', [
'middleware' => 'app.hasSetting',
'setting' => 'app_name',
'as' => 'status-page',
'uses' => 'HomeController@showIndex',
]);
}
}

View File

@ -13,6 +13,11 @@ namespace CachetHQ\Cachet\Http\Routes;
use Illuminate\Contracts\Routing\Registrar;
/**
* This is the subscriber routes class.
*
* @author James Brooks <james@alt-three.com>
*/
class SubscribeRoutes
{
/**
@ -22,7 +27,10 @@ class SubscribeRoutes
*/
public function map(Registrar $router)
{
$router->group(['middleware' => 'app.hasSetting', 'setting' => 'app_name'], function ($router) {
$router->group([
'middleware' => 'app.hasSetting',
'setting' => 'app_name',
], function ($router) {
$router->group(['middleware' => 'app.subscribers'], function ($router) {
$router->get('subscribe', [
'as' => 'subscribe-page',

View File

@ -22,7 +22,7 @@
<br>
<form method="POST" action="{{ route('login', [], false) }}" accept-charset="UTF-8" autocomplete="off" name="{{ str_random(10) }}">
<form method="POST" action="{{ route('auth.login', [], false) }}" accept-charset="UTF-8" autocomplete="off" name="{{ str_random(10) }}">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
@if(Session::has('error'))

View File

@ -21,6 +21,8 @@
</div>
<form method="POST" action="/auth/2fa" accept-charset="UTF-8">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<fieldset>
<p>{{ trans('dashboard.login.two-factor') }}</p>

View File

@ -12,7 +12,7 @@
<a role="menuitem" tabindex="-1" href="{{ url('dashboard/user') }}">{{ trans('dashboard.team.profile') }}</a>
</li>
<li role="presentation">
<a role="menuitem" tabindex="-1" href="{{ route('logout') }}">{{ trans('dashboard.logout') }}</a>
<a role="menuitem" tabindex="-1" href="{{ route('auth.logout') }}">{{ trans('dashboard.logout') }}</a>
</li>
</ul>
</div>
@ -26,45 +26,45 @@
</div>
<ul>
<li {!! set_active('dashboard') !!}>
<a href="{{ route('dashboard') }}">
<a href="{{ route('dashboard.index') }}">
<i class="icon ion-speedometer"></i>
<span>{{ trans('dashboard.dashboard') }}</span>
</a>
</li>
<li {!! set_active('dashboard/incidents*') !!} {!! set_active('dashboard/schedule*') !!}>
<a href="{{ route('dashboard.incidents') }}">
<a href="{{ route('dashboard.incidents.index') }}">
<i class="icon ion-android-alert"></i>
<span>{{ trans('dashboard.incidents.incidents') }}</span>
<span class="label label-info">{{ $incident_count }}</span>
</a>
</li>
<li {!! set_active('dashboard/templates*') !!}>
<a href="{{ route('dashboard.templates') }}">
<a href="{{ route('dashboard.templates.index') }}">
<i class="icons ion-document-text"></i>
<span>{{ trans('dashboard.incidents.incident-templates') }}</span>
</a>
</li>
<li {!! set_active('dashboard/components*') !!}>
<a href="{{ route('dashboard.components') }}">
<a href="{{ route('dashboard.components.index') }}">
<i class="icons ion-outlet"></i>
<span>{{ trans('dashboard.components.components') }}</span>
<span class="label label-info">{{ $component_count }}</span>
</a>
</li>
<li {!! set_active('dashboard/team*') !!}>
<a href="{{ route('dashboard.team') }}">
<a href="{{ route('dashboard.team.index') }}">
<i class="icons ion-ios-people"></i>
<span>{{ trans('dashboard.team.team') }}</span>
</a>
</li>
<li {!! set_active('dashboard/metrics*') !!}>
<a href="{{ route('dashboard.metrics') }}">
<a href="{{ route('dashboard.metrics.index') }}">
<i class="icon ion-stats-bars"></i>
<span>{{ trans('dashboard.metrics.metrics') }}</span>
</a>
</li>
<li {!! set_active('dashboard/subscribers*') !!}>
<a href="{{ route('dashboard.subscribers') }}">
<a href="{{ route('dashboard.subscribers.index') }}">
<i class="icons ion-email"></i>
<span>{{ trans('dashboard.subscribers.subscribers') }}</span>
</a>
@ -87,7 +87,7 @@
<a href="{{ route('status-page') }}"><i class="icon ion-monitor"></i></a>
</li>
<li data-toggle="tooltip" data-placement="top" title="{{ trans('dashboard.logout') }}">
<a href="{{ route('logout') }}"><i class="icon ion-log-out"></i></a>
<a href="{{ route('auth.logout') }}"><i class="icon ion-log-out"></i></a>
</li>
</ul>
</div>

View File

@ -14,8 +14,8 @@
@if($current_user)
<a href="/auth/logout" class="icon-link"><i class="ion-android-exit"></i> {{ trans('dashboard.logout') }}</a>
@endif
<a href="/rss" class="icon-link rss"><i class="ion-social-rss"></i> {{ trans('cachet.rss-feed') }}</a>
<a href="/atom" class="icon-link rss"><i class="ion-social-rss"></i> {{ trans('cachet.atom-feed') }}</a>
<a href="{{ route('feed.rss') }}" class="icon-link rss"><i class="ion-social-rss"></i> {{ trans('cachet.rss-feed') }}</a>
<a href="{{ route('feed.atom') }}" class="icon-link rss"><i class="ion-social-rss"></i> {{ trans('cachet.atom-feed') }}</a>
</div>
</div>
</div>