سلام
من با استفاده از پکیج auth لاراول یک فرم ورود دارم
من میخوام ادمین با یک روت وارد سیستم بشه و کاربر عادی با یک روت دیگه به عبارت دیگه میخوام ۲ تا سیستمauth داشته باشم
به این کار Multiauth گفته میشه و در اجرای پروژه های متوسط و بزرگ خیلی رایجه، بطور مثال شما سرویسی ارائه میدید که کارمندان خودتون هم از اون سرویس استفاده میکنن، و علاوه بر اینکه در نقش کاربر ادمین دسترسی هایی دارند، در نقش کاربر عادی هم از سرویس استفاده میکنن، مثل اسنپ، دیجیکالا و...
در این حالت یه راهکار استفاده از دو جدول Authenticate هست مثلا دو جدول admins و users، پکیج های آماده ای برای این کار وجود داره ولی پیاده کردن این ویژگی در خود لاراول هم پیش بینی شده و کار سختی نیست
ابتدا جدول دوم با نام Admins رو با فیلد های اولیه جدول user ایجاد کنید.
مدل admin رو از Authenticatable بسازید
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Admin extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
حالا در فایل config/auth.php گارد جدید ادمین ها رو اضافه کنید
<?php
return [
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
]
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
]
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
],
'admins' => [
'provider' => 'admins',
'table' => 'password_resets',
'expire' => 60,
],
],
];
برای کنترل دسترسی های کاربران ادمین متونی همه اون ها رو در یک گروه، با namespace ادمین قرار بدی
Route::prefix('/admin')->name('admin.')->namespace('Admin')->group(function(){
//CODES...
});
حالا هر جا هم خواستی کاربری رو احراز هویت کنی باید گارد مربوط به اون کاربر رو مشخص کنی
مثال
Auth::guard(‘admin’)شاید پاسخ شما همینجا باشد
تخصص: برنامهنویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native
سلام شما باید از guard ها استفاده کنید نحوه استفاده در این اموزش گفته شده.
لینک
@rezajahangir
ادرس لاگین پنل ادمین با پنل کاربر متفاوت باشه
@gomnam
میخوام ادرس لاگین پنل ادمین با پنل کاربر متفاوت باشه
@websaz
من از پکیج spatie permission استفاده کردم
تخصص: برنامهنویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native
خوب مشکل کجاست دوتا route ایجاد می کنید مثلا به نام های:
/login
/admin/login
برای هرکدوم یک view درست می کنید و لاگین می کنید اما با این تفاوت که در هنگام چک کردن برای روت ادمین باید ادمین بودن کاربر ( براساس permission) چک بشه