ورود

View Full Version : ثبت کاربر و مدیر در پروژه ی اموزشی



pary_daryayi
یک شنبه 18 اسفند 1398, 11:37 صبح
با سلام .

در یک پروژه ی فروشگاهی ، فرم ثبت نام و لاگین کاربران و مدیران سایت باید تفکیک شده باشه ، درسته ؟
من برای همه ی اینها یک جدول users در DB درنظر گرفتم فقط با فیلد level اونها رو تفکیک میکنم .

برای پیاده سازی جداگانه ی فرم لاگین و رجیستر هر یک ، باید از دو فولدر auth استفاده کرد ؟
ایا شما هم این ها رو با همین منطق جدا میکنید ؟

plague
یک شنبه 18 اسفند 1398, 17:23 عصر
نیاز نیست جدا کنی میتونی تو همون تیبل یوزر یک فیلد بزاری که مشخص کنه مدیره یا اینکه یک تیبل دیگه بسازی مثل user_role که اونجا تعریف کنی نقش هر کاربر رو

مدیر سایت که نباید البته ثبت نام کنه !
باید تو پنل مدیریت یجایی برای ثبت مدیر ها بزاری که یک مدیر مدیر های دیگه رو ثبت کنه

لاگین برا همه یکیه فرمش

pary_daryayi
یک شنبه 18 اسفند 1398, 18:55 عصر
ممنون متوجه شدم .
منطق پیاده سازی شما بنظرم بهتره .
چون در پروژه های آموزشی دیدم که مدیران ( مدیران فرعی ) یک فرم ثبت نام مشترک با کاربران سایت دارن که این طور دوست نداشتم پیاده سازی کنم .

البته نیاز نیست فرم لاگین مدیر و کاربر جدا باشه ؟
همیشه دیدم که پیج لاگین مدیر با بقیه فرق میکنه . درسته که اهراز هویت میشه ولی تاثیری در امنیت نداره ؟

تشکر .

پ . ن : چرا گزینه ی لایک برداشته شده ؟

plague
یک شنبه 18 اسفند 1398, 23:03 عصر
نه نیازی نیست فرم لاگین رو جدا کنی
اگه تیبل دیتبایس فرق کنه بله باید عوض کنی ولی وقتی یکی باشه نیاز نیست
کار بیخودیه اول اینکه مدیر لاگین شده نمیتونه تجربه کاربری رو داشته باشه
دوم اینکه باید کلی کار اضافه بکنی برای مدیریت تیبل جداگانه

از نظر امنیت هم فرق خاصی نمیکنه و تاثیر خاصی نداره جدا کردنشون
اگه کاربری بخاد یوزرش رو ادمین کنه باید دسترسی به دیتبایس داشته باشه و اگه کسی دسترسی دیتبایس داشته باشه میتونه تو تیبل مجزا ادمین ثبت کنه و فرقی نمیکنه
شما فقط روی route های ادمین باید یه middleware بزاری که چک کنه طرف مدیر باشه

ولی اگه میخای یکم محکم ترش کنی که اشتباها ینفر ادمین نشه با ویرایش یک جدول ... بجای اینکه فیلد اضافه کنی یه تیبل جدا بزار به اسم user_role و اونجا نقش هر کاربر رو تعریف کن

pary_daryayi
سه شنبه 20 اسفند 1398, 20:05 عصر
من طبق گفته شما یک صفحه ی لاگین مشترک برای ادمین و یوزر ساختم .
میخوام اگر ادمین بود ، بعد از لاگین به صفحه ی admin panel ریدایرکت بشه و اگه کاربر بود به صفحه ی home از سایت ریدایرکت بشه .
چون یک logincontroller داریم این کد اجرا میشه .



protected $redirectTo = '/home';


در middleware هم این کد منطقی نیست و جواب نمیده .


public function handle($request, Closure $next)
{
if(auth()->check() && auth()->user()->level == 'admin'){
return redirect('panel');
}

if(auth()->check() && auth()->user()->level == 'user'){
return redirect('home');
}
}

pary_daryayi
چهارشنبه 21 اسفند 1398, 09:03 صبح
با این کد به نتیجه رسیدم .


public function handle($request, Closure $next)
{
if(auth()->check() && auth()->user()->level != 'admin'){
return redirect('home');
}

return $next($request);
}

در logincontroller


protected $redirectTo = 'admin/panel';

behzadamin12
یک شنبه 25 اسفند 1398, 09:20 صبح
بهتره از پکیج spatie برای این کار استفاده کنید