fix login auto detect menu link, and partial update tchnician role dealer
This commit is contained in:
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Privilege;
|
||||
use App\Models\User;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Foundation\Auth\AuthenticatesUsers;
|
||||
@@ -50,11 +51,39 @@ class LoginController extends Controller
|
||||
*/
|
||||
protected function authenticated(Request $request, $user)
|
||||
{
|
||||
$user = Privilege::where('menu_id', 10)->where('role_id', Auth::user()->role_id)->where('view', 1)->first();
|
||||
// Get user's role_id
|
||||
$roleId = Auth::user()->role_id;
|
||||
|
||||
if (!$roleId) {
|
||||
// User has no role, redirect to default
|
||||
return redirect(RouteServiceProvider::HOME);
|
||||
}
|
||||
|
||||
if ($user != null) {
|
||||
return redirect()->route('dashboard');
|
||||
}else{
|
||||
// Check if user has access to adminarea menu
|
||||
if (!User::roleCanAccessMenu($roleId, 'adminarea')) {
|
||||
// User doesn't have admin area access, redirect to default home
|
||||
return redirect(RouteServiceProvider::HOME);
|
||||
}
|
||||
|
||||
// User has admin area access, get first accessible menu (excluding adminarea and mechanicarea)
|
||||
$firstMenu = Privilege::join('menus', 'privileges.menu_id', '=', 'menus.id')
|
||||
->where('privileges.role_id', $roleId)
|
||||
->where('privileges.view', 1)
|
||||
->whereNotIn('menus.link', ['adminarea', 'mechanicarea'])
|
||||
->select('menus.*', 'privileges.view', 'privileges.create', 'privileges.update', 'privileges.delete')
|
||||
->orderBy('menus.id')
|
||||
->first();
|
||||
|
||||
if (!$firstMenu) {
|
||||
// User has no accessible menus (excluding adminarea/mechanicarea), redirect to default
|
||||
return redirect(RouteServiceProvider::HOME);
|
||||
}
|
||||
|
||||
try {
|
||||
// Try to redirect to the first accessible menu
|
||||
return redirect()->route($firstMenu->link);
|
||||
} catch (\Exception $e) {
|
||||
// Route doesn't exist, fallback to default home
|
||||
return redirect(RouteServiceProvider::HOME);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user