سلام دوستان.
کاربر پس از ثبت نام میاد اطلاعاتشو کامل میکنه که روت من به صورت زیر است:
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="{{route('users.index')}}">کاربران</a></li>
@endif
@delshad
@ali.esmaili954
@behzadi
@mehranmarandi90
@endworld
تشکر از همه ی دوستان ولی روش آقای @delshad بهتر بود.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟