match_making/app/Providers/RouteServiceProvider.php
2025-01-02 09:09:28 +07:00

70 lines
2.0 KiB
PHP

<?php
namespace App\Providers;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider
{
/**
* The path to your application's "home" route.
*
* Typically, users are redirected here after authentication.
*
* @var string
*/
// public const HOME = '/dashboard';
public static function home()
{
// Check if the user is authenticated
$user = Auth::user();
// Determine the home route based on the user's role
if ($user) {
switch ($user->role) {
case 'pemerintah':
return route('pemerintah.dashboard');
case 'investor':
return route('investor.dashboard');
case 'akademisi':
return route('akademisi.dashboard');
case 'umkm':
return route('umkm.dashboard');
case 'komunitas':
return route('komunitas.dashboard');
default:
// Default fallback for unhandled roles
return '/login';
}
}
// Fallback for unauthenticated users
return '/login';
}
/**
* Define your route model bindings, pattern filters, and other route configuration.
*/
public function boot(): void
{
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip());
});
$this->routes(function () {
Route::middleware('api')
->prefix('api')
->group(base_path('routes/api.php'));
Route::middleware('web')
->group(base_path('routes/web.php'));
});
}
}