💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ Mehrjoo
استفاده از متد‌های هم نام با عملکرد متفاوت
محمدرسول اصغری حل شده توسط محمدرسول اصغری

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

 

این دوتا متد یکار انجام میدن خروج کاربر ولی فقط ریدایرکتشون فرق میکنه . حالا چطور برای بهینه کردن کد تکرار انجام ندم ؟ بگم این همون متد هست فقط تفاوتش اینه .

از طریق متد خروج لاراول بریز فکر کنم نمیشه چون کاربر رو خارج میکنه و من دیگه نمی‌تونم بگم اگ کاربر ادمین بود ریدایرکتش کن به این و اگ کاربر عادی بود بفرستش به صفحه فلان ... اگ اشتباه میگم لطفا راهنمایی کنید که من کد‌ها مو بهینه‌تر کنم

 

در اینجا کلا یک اکشن logout وجود داره.

نقش کاربرچک میشه و براساس نقش کاربر ریدایرکت انجام میشه.

محسن موحد ۰۹ مهر ۱۴۰۳، ۱۳:۵۷

میتونید از این sample هم برای هندل کردن این مورد استفاده کنید :

<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
class LogoutController extends Controller
{
    public function logout(Request $request)
    {
        Auth::logout();
        $request->session()->invalidate();
        $request->session()->regenerateToken();
        $redirectRoutes = [
            'admin' => 'admin.login',
            'user' => 'user.login',
            // می‌تونی نقش‌های دیگه رو هم به آرایه اضافه کنی
        ];
        $role = $request->user()->role;
        // ریدایرکت کردن به مسیر مناسب بر اساس نقش کاربر
        return redirect()->route($redirectRoutes[$role] ?? 'default.login'); // پیش‌فرض در صورت نبود نقش
    }
}
بهترین پاسخ
محمدرسول اصغری ۱۱ مهر ۱۴۰۳، ۰۷:۲۶

اقای اصغری خوب اومدی . ایول

Mehrjoo ۲۱ مهر ۱۴۰۳، ۱۱:۵۲