سلام دوستان.
کاربر پس از ثبت نام میاد اطلاعاتشو کامل میکنه که روت من به صورت زیر است:
Route::get('panel/profile/create', [ProfileController::class, 'create'])->name('profile.create');
حالا میخوام بعد از اینکه اطلاعاتشو ثبت کرد دیگه نتونه به روت بالا دسترسی داشته باشه و اگه روت بالا رو وارد کرد، مثلا به جاش به روت زیر هدایت بشه:
Route::get('panel/profile/edit', [ProfileController::class, 'edit'])->name('profile.edit');
اینو چجور باید داخل middlware بنویسیم؟
اصلا باید از middleware استفاده کنم یا راهه دیگه ای داره؟
میتونی از همون middlewareاستفاده کنی توی middleware هم به user دسترسی داریم
چک کن ببین اون اطلاعاتی رو میخوای ذخیره کرده یا نه بعد redirect کن به هر route میخوای
یا یه فیلد اضافه کن مثلا complete پیش فرض false باشه وقتی true شد
دیگه از همون اول دیگه این route قبلی رو نشون نشده route جدیده رو نشون بده یا از همین middleware استفاده کن و توش این complete رو چک کن
به نظر من چون فقط یک روته توی کنترلر اینکارو بکن میدل ور نرو
شاید پاسخ شما همینجا باشد
@arminrahmati999
نیاز به ایجاد middleware جدید نیست
بصورت پیش فرض یک middleware برای این کار وجود داره
app/Http/Middleware/RedirectIfAuthenticated.phpدرود ...
به ترتیب:
۱.
php artisan make:middleware IsAdminMiddleware
۲.
Route::middleware(['auth', 'admin'])->resource('/userarea/users', UserController::class)->except(['show']);
۳. Middleware/IsAdminMiddleware
public function handle(Request $request, Closure $next)
{
if(auth()->user()->role !== 'admin'){
abort(403, 'شما دسترسی لازم برای ورود به این صفحه را ندارید!');
}
return $next($request);
}
'admin' => \App\Http\Middleware\IsAdminMiddleware::class,@if(auth()->user()->role === 'admin')
<li class="mb-3"><a href="https://roocket.ir/{{route('users.index')}}">کاربران</a></li>
@endif@delshad
@ali.esmaili954
@behzadi
@mehranmarandi90
@endworld
تشکر از همه ی دوستان ولی روش آقای @delshad بهتر بود.