What I need:
My app has a public domain
All routes in my Admin controller should be opened only if the remote domain is domain1.com
and also in local environment.
Currently: if I put the admin panel route in the group, it is not visible in local environment any more, making it difficult to develop.
// My secret domain, accessible only for admins
Route::group(['domain'=>'domain1.com'],function(){
Route::get('admin-panel', [App\Http\Controllers\Control\AdminController::class, 'admin_panel']);
});
// To be accessible both in domain1.com and domain2.com:
Route::get('homepage', [App\Http\Controllers\Control\PagesController::class, 'homepage']);
Solutions
My current solution:
in route file web.php
I add extra line
if( \App::environment() == 'local') {
Route::get('admin-panel', [App\Http\Controllers\Control\AdminController::class, 'admin_panel']);
}
but it is a crude, temporary fix.
TODO:
- Either in route file or in the controller. A filter in a controller (for all or selected methods) would be best.
- An
if
clause checking if either the environment is local or the domain isdomain1.com
Thank you.
CodePudding user response:
I think laravel not support something like that. But you can declare the routes to a function variable and then use it in each domain.
$adminRoutes = function() {
Route::get('admin-panel', [App\Http\Controllers\Control\AdminController::class, 'admin_panel']);
};
Route::group(array('domain' => 'domain1.com'), $adminRoutes);
Route::group(array('domain' => 'localhost'), $adminRoutes)