راکت
حل شده

ایجاد middleware برای URL

6 پاسخ

سلام دوستان.
کاربر پس از ثبت نام میاد اطلاعاتشو کامل میکنه که روت من به صورت زیر است:

Route::get('panel/profile/create', [ProfileController::class, 'create'])->name('profile.create');

حالا میخوام بعد از اینکه اطلاعاتشو ثبت کرد دیگه نتونه به روت بالا دسترسی داشته باشه و اگه روت بالا رو وارد کرد، مثلا به جاش به روت زیر هدایت بشه:

Route::get('panel/profile/edit', [ProfileController::class, 'edit'])->name('profile.edit');

اینو چجور باید داخل middlware بنویسیم؟
اصلا باید از middleware استفاده کنم یا راهه دیگه ای داره؟

ثبت پرسش جدید

پاسخ‌ها

6
مجتبی دلشاد
مجتبی دلشاد
@delshad

تخصص: توسعه دهنده بک اند

بهترین پاسخ

شما میتونی داخل کنترلر اول چک کنی ایا اطلاعات کاربر تکمیل شده یا نه
اگه شده بود که خب میتونید کاربر رو به یک روت دیگه هدایت کنید
اما اگه اطلاعات تکمیل نشده بود ویو مورد نظرتون رو نمایش بده یا هر عمل دیگه ای که قصد دارید انجام بشه

علی اسماعیلی
علی اسماعیلی
@aliesmaili.code

تخصص: php Laravel

میتونی از همون middlewareاستفاده کنی توی middleware هم به user دسترسی داریم
چک کن ببین اون اطلاعاتی رو میخوای ذخیره کرده یا نه بعد redirect کن به هر route میخوای
یا یه فیلد اضافه کن مثلا complete پیش فرض false باشه وقتی true شد
دیگه از همون اول دیگه این route قبلی رو نشون نشده route جدیده رو نشون بده یا از همین middleware استفاده کن و توش این complete رو چک کن

amir
amir
@behzadi

تخصص: بک اند و فرانت اند

به نظر من چون فقط یک روته توی کنترلر اینکارو بکن میدل ور نرو

شاید پاسخ شما همین‌جا باشد

مهران مرندی
مهران مرندی
@mehranmarandi

تخصص: برنامه نویس

@arminrahmati999
نیاز به ایجاد middleware جدید نیست
بصورت پیش فرض یک middleware برای این کار وجود داره

app/Http/Middleware/RedirectIfAuthenticated.php
رایموند
رایموند
@Raymond

تخصص: مختصص وردپرس - برنامه نویس لاراول

درود ...
به ترتیب:
۱.

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);
    }
  1. kernel.php / $routeMiddleware
    'admin' => \App\Http\Middleware\IsAdminMiddleware::class,
  2. ایجاد دسترسی به بخش:
    @if(auth()->user()->role === 'admin')
      <li class="mb-3"><a href="https://roocket.ir/{{route('users.index')}}">کاربران</a></li>
    @endif
Armin Rahmati
Armin Rahmati
@arminrahmati999

@delshad
@ali.esmaili954
@behzadi
@mehranmarandi90
@endworld
تشکر از همه ی دوستان ولی روش آقای @delshad بهتر بود.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام