-
-
Notifications
You must be signed in to change notification settings - Fork 82
Expand file tree
/
Copy pathPendingRouteRegistration.php
More file actions
92 lines (79 loc) 路 3.78 KB
/
Copy pathPendingRouteRegistration.php
File metadata and controls
92 lines (79 loc) 路 3.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
namespace Cachet;
use Cachet\Http\Controllers\Auth\VerifyEmailController;
use Cachet\Http\Controllers\HealthController;
use Cachet\Http\Controllers\RssController;
use Cachet\Http\Controllers\Setup\SetupController;
use Cachet\Http\Controllers\StatusPage\ComponentBadgeController;
use Cachet\Http\Controllers\StatusPage\StatusBadgeController;
use Cachet\Http\Controllers\StatusPage\StatusPageController;
use Cachet\Http\Controllers\Subscribers\SubscriberController;
use Cachet\Http\Controllers\Subscribers\UnsubscribeSubscriberController;
use Cachet\Http\Controllers\Subscribers\VerifySubscriberEmailController;
use Illuminate\Routing\Router;
use Illuminate\Support\Facades\Route;
class PendingRouteRegistration
{
/**
* Indicates if the routes have been registered.
*/
protected bool $registered = false;
/**
* Register Cachet's routes.
*/
public function register(): void
{
$this->registered = true;
Route::namespace('Cachet\\Http\\Controllers')
->domain(config('cachet.domain', null))
->middleware(config('cachet.middleware', []))
->prefix(Cachet::path())
->as('cachet.')
->group(function (Router $router) {
$router->get('/', [StatusPageController::class, 'index'])->name('status-page');
$router->get('/incidents/{incident:guid}', [StatusPageController::class, 'show'])->name('status-page.incident');
$router->get('/schedules/{schedule}', [StatusPageController::class, 'schedule'])->name('status-page.schedule');
$router->get('/badge.svg', StatusBadgeController::class)->name('status-page.badge');
$router->get('/components/{component}/badge.svg', ComponentBadgeController::class)->name('status-page.component.badge');
$router->get('/setup', [SetupController::class, 'index'])->name('setup.index');
$router->post('/setup', [SetupController::class, 'store'])->name('setup.store');
$router->get('/subscribe', [SubscriberController::class, 'create'])->name('subscribers.create');
$router->post('/subscribe', [SubscriberController::class, 'store'])
->middleware('throttle:6,1')
->name('subscribers.store');
$router->get('/subscribers/verify/{subscriber}/{hash}', VerifySubscriberEmailController::class)
->middleware(['signed', 'throttle:6,1'])
->name('subscribers.verify');
$router->get('/subscribers/unsubscribe/{subscriber}/{hash}', [UnsubscribeSubscriberController::class, 'confirm'])
->middleware(['signed', 'throttle:6,1'])
->name('subscribers.unsubscribe');
$router->post('/subscribers/unsubscribe/{subscriber}/{hash}', [UnsubscribeSubscriberController::class, 'destroy'])
->middleware(['signed', 'throttle:6,1'])
->name('subscribers.unsubscribe.destroy');
$router->get('/health', HealthController::class)->name('health');
$router->get('/rss', RssController::class)
->middleware('throttle:60,1')
->name('rss');
});
$this->registerEmailVerificationRoutes();
}
private function registerEmailVerificationRoutes(): void
{
Route::middleware('auth')->group(function () {
Route::get('verify-email/{id}/{hash}', VerifyEmailController::class)
->middleware(['signed', 'throttle:6,1'])
->name('verification.verify');
});
}
/**
* Handle the object's destruction.
*
* @return void
*/
public function __destruct()
{
if (! $this->registered) {
$this->register();
}
}
}