<?php
use App\Http\Controllers\BannerController;
use App\Http\Controllers\HomeController;
use App\Http\Controllers\UsersController;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::group(['middleware' => 'get.menu'], function () {
Route::get('/', function () {
return view('dashboard.homepage');
});
Auth::routes();
Route::get('/home', [HomeController::class, 'index'])->name('home');
Route::group(['middleware' => ['role:admin']], function () {
Route::get('/test-role-admin', function () {
echo "Hello Admin";
});
Route::resource('users',UsersController::class)->except(['create', 'store']);
});
});
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class UsersController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
$you = auth()->user();
$users = User::all();
return view('users.index', compact('users', 'you'));
}
public function show($id)
{
$user = User::find($id);
return view('users.show', compact('user'));
}
public function edit($id)
{
$user = User::find($id);
return view('users.edit', compact('user'));
}
public function update(Request $request, $id)
{
$validatedData = $request->validate([
'name' => 'required|min:1|max:256',
'email' => 'required|email|max:256'
]);
$user = User::find($id);
$user->name = $request->input('name');
$user->email = $request->input('email');
$user->save();
$request->session()->flash('message', 'Successfully updated user');
return redirect()->route('users.index');
}
public function destroy($id)
{
$user = User::find($id);
if ($user) {
$user->delete();
}
return redirect()->route('users.index');
}
}