درود دوستان ...
در لاراول سیستم ورود و عضویت auth ایجاد کردیم و میدلرها و رابطه ها و سیدر ها تعریف کردیم...
اما مشکلی که داره اطلاعاتی که به صورت دستی ایجاد شده را پیدا نمی کنه میگه ایمیل ورود در پایگاه داده موجود نمی باشد ...
نمونه کد سیدر :
public function run()
{
DB::table('users')->insert([
'role_id' => '1',
'name' => 'C.Admin',
'username' => 'admin',
'email' => 'admin@gmail.com',
'password' => bcrypt('rootadmin'),
]);
DB::table('users')->insert([
'role_id' => '2',
'name' => 'C.Author',
'username' => 'author',
'email' => 'author@gmail.com',
'password' => bcrypt('rootauthor'),
]);
}سلام
@endworld
سید رو اجرا کردید؟
یوزر ها در دیتابیس وارد شده؟
@Alimotreb
درود..
آری اجرا شده و اطلاعات کاربری به پایگاه داده وارد شده...
اما مشکل هنوز حل نشده...
شاید پاسخ شما همینجا باشد
سلام
@endworld
یه خروجی از یه کنترلر بگیرید
dd بگیرید از اطلاعات یه کاربر که تو جدل هست
ببینید چیزی بر میگردونه
اگر برگردوند که هیچی
اگر نگردوند احتمالا ایراد از سیستم لاگین و میدلورش هست.
@Alimotreb
با تینکر (tinker) خروجی گرفتم مشکلی نداره :
>>> AppUser::find(1);
=> AppUser {#2951
id: 1,
role_id: 1,
name: "C.Admin",
username: "admin",
image: "default.png",
about: null,
email: "admin@gmail.com",
email_verified_at: null,
created_at: null,
updated_at: null,
}
>>> AppUser::find(2);
=> AppUser {#139
id: 2,
role_id: 2,
name: "C.Author",
username: "author",
image: "default.png",
about: null,
email: "author@gmail.com",
email_verified_at: null,
created_at: null,
updated_at: null,
}
>>> AppRole::find(1)->users
=> IlluminateDatabaseEloquentCollection {#2957
all: [
AppUser {#2953
id: 1,
role_id: 1,
name: "C.Admin",
username: "admin",
image: "default.png",
about: null,
email: "admin@gmail.com",
email_verified_at: null,
created_at: null,
updated_at: null,
},
],
}
>>> AppRole::find(2)->users
=> IlluminateDatabaseEloquentCollection {#2958
all: [
AppUser {#2946
id: 2,
role_id: 2,
name: "C.Author",
username: "author",
image: "default.png",
about: null,
email: "author@gmail.com",
email_verified_at: null,
created_at: null,
updated_at: null,
},
],
}سلام
@endworld
این موارد اوکی هست
خروجی دارید
میدل ور رو چطوری اعمال کردید؟
@Alimotreb
Author:
class AuthorMiddleware
{
/**
* Handle an incoming request.
*
* @param IlluminateHttpRequest $request
* @param Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (Auth::check() && Auth::user()->role->id == 2)
{
return $next($request);
} else{
return redirect()->route('login');
}
}
}
Admin :
class AdminMiddleware
{
/**
* Handle an incoming request.
*
* @param IlluminateHttpRequest $request
* @param Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (Auth::check() && Auth::user()->role->id == 1)
{
return $next($request);
} else{
return redirect()->route('login');
}
}
}
Route :
Route::group(['as'=>'admin.', 'prefix'=>'admin', 'namespace'=>'Admin', 'middleware' => ['auth', 'admin']], function(){
Route::get('/dashboard', 'DashboardController@index')->name('dashboard');
});
Route::group(['as'=>'author.', 'prefix'=>'author', 'namespace'=>'Author', 'middleware' => ['auth', 'author']], function(){
Route::get('/dashboard', 'DashboardController@index')->name('dashboard');
});سلام
@endworld
میدل ور هارو به این صورت به روت ها یا یکی از روت ها بدید و تست بگیرید
Route::group(['middleware' => 'auth:web'], function () {
ادامه ...
یا
$this->get('/dashboard','DashboardController@index')->middleware('author');
ببینید اعمال میشه.
@Alimotreb
درود..
متاسفانه این روش گفتی خطا دریافت کردم:
In RouteFileRegistrar.php line 35:
Illuminate\Routing\RouteFileRegistrar::register(): Failed opening require
d 'Array' (include_path='.:/usr/share/php') سلام
@endworld
خارج از گروپ روی یه روت دیگه به صورت مجزا قرار بدید میدل ور هاتون رو ببینید ج میده یا نه.
@Alimotreb
این روش امتحان کردم متاسفانه سوابق ایمیل ثبت نامی پیدا نمی کنه:
Route::namespace('admin')->name('admin.')->group(function() {
Route::group(['prefix' => 'admin', 'middleware' => ['auth']], function() {
Route::get('/dashboard', 'DashboardController@index')->name('dashboard');
});
});