Каждый новичок Laravel борется с множественной аутентификацией, я не исключение
Я пытаюсь создать систему управления студентами.Будет два разных маршрута для администратора admin/login
и для студента student/login
.
Студент не может зарегистрироваться, но он будет зарегистрирован администратором.
Таким образом, у студента есть толькодоступ к student/dashboard
, регистрация студентов будет осуществляться администратором по admin/dashboard
.
Ниже подробно описано, что я уже сделал:
созданная миграциякак для администратора, так и для студента.
создан сторож для администратора и студента.
изменен контроллер входа в систему и добавлены методы adminLogin и studentLogin.
изменено RedirectIfAuthenticated
промежуточное ПО
Config / auth.php
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'students' => [
'driver' => 'session',
'provider' => 'students',
],
'web-admin'=>[
'driver'=>'session',
'provider'=>'admin',
],
'api' => [
'driver' => 'token',
'provider' => 'students',
'hash' => false,
],
],
'providers' => [
'students' => [
'driver' => 'eloquent',
'model' => App\Student::class,
],
'admin' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
'passwords' => [
'students' => [
'provider' => 'students',
'table' => 'password_resets',
'expire' => 60,
],
'admin' => [
'provider' => 'admin',
'table' => 'password_resets',
'expire' => 60,
],
],
LoginController.php
lass LoginController extends Controller
{
use AuthenticatesUsers;
public function __construct()
{
$this->middleware('guest')->except('logout');
$this->middleware('guest:web-admin')->except('logout');
$this->middleware('guest:students')->except('logout');
}
public function showAdminLoginForm()
{
return view('admin.login', ['url' => 'admin']);
}
public function adminLogin(Request $request)
{
$this->validate($request, [
'admin_id' => 'required',
'password' => 'required|min:8'
]);
if (Auth::guard('admin')->attempt(['admin_id' => $request->adminid, 'password' => $request->password], $request->get('remember'))) {
return redirect()->intended('/admin/dashboard');
}
return back()->withInput($request->only('admin_id', 'remember'));
}
public function showStudentLoginForm()
{
return view('student.login', ['url' => 'student']);
}
public function studentLogin(Request $request)
{
$this->validate($request, [
'roll_no' => 'required',
'password' => 'required|min:8'
]);
if (Auth::guard('writer')->attempt(['roll_no' => $request->roll_no, 'password' => $request->password], $request->get('remember'))) {
return redirect()->intended('/student/dashboard');
}
return back()->withInput($request->only('roll_no', 'remember'));
}
}
RedirectAuthenticated.php
class RedirectIfAuthenticated
{
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
if('web_admin'==='$guard'){
return redirect('/admin/dashboard');
}
return redirect('/admin/login');
}
if (Auth::guard($guard)->check()) {
if('students'==='$guard'){
return redirect('/student/dashboard');
}
return redirect('/student/login');
}
return $next($request);
}
}
Я создал две папки в представлении: ученик иадмин.У них обоих есть два файла.login.blade.php и dashboard.blade.php
Что делает Laravel, он показывает логин и регистрируется в папке auth.
Я хочу дать два маршрута один для /admin/login
, которые возвращаютсяadmin.login
view.
То же самое для студента /student/login
, который возвращает student.login
view.
Я хочу удалить /register
route и сделать ссылку доступной на admin dashboard
, тамне будет ссылки для регистрации администратора.
Также ограничьте доступ пользователя к административной области.
** Мне не нужен весь код, просто помогите мне сделать шаги и узнать, как мне следует следовать илиизменения, которые я должен сделать **