Как реализовать панель администратора и клиента в Laravel - PullRequest
0 голосов
/ 14 мая 2019

** NewBee

** Laravel

Я хочу получить доступ к панели администратора с помощью URL http://127.0.0.1:8000/admin и панели клиентов с помощью URL http://127.0.0.1:8000/

Customer Login: http://127.0.0.1:8000/login

Admin Login: http://127.0.0.1:8000/admin/

Я установил переменную сеанса, чтобы определить, является ли пользователь admin or customer в моем AdminController.php и проверять каждую функцию, что этот пользователь должен быть администратором.для доступа.Ниже приведен скрипт

AdminController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Auth;
use Session;

class AdminController extends Controller
{
    public function index() {
        return view('admin.index');
    }

    public function login(Request $request) {

        Auth::attempt(['email' => $request->email, 'password' => $request->password, 'user_type' => 'admin']);

        //was any of those correct ?
        if ( Auth::check() ) {
            //send them where they are going 
            Session::put('userType', 'admin');
            return redirect()->route('admin.dashboard');
        }

        return redirect('/admin')->with('flash_message', 'Invalid Credentials');
    }

    public function dashboard() {
        if( Session::has('userType') and Session::get('userType') == 'admin' )
            return view('admin.dashboard');
        else
            return redirect('/admin')->with('flash_message', 'Please login to access');
    }

    public function posts() {
        if( Session::has('userType') and Session::get('userType') == 'admin' )
            return view('admin.posts');
        else
            return redirect('/admin')->with('flash_message', 'Please login to access');
    }

    public function logout() {
        Session::flush();
        return redirect()->route('admin');
    }
}

Я проверяю, является ли пользователь администратором в каждой функции, подобной этой if( Session::has('userType') and Session::get('userType') == 'admin' ).Так есть ли способ сделать это лучше ??????

Теперь, когда я вошел в административную панель, я могу получить доступ к http://127.0.0.1:8000/home для клиента, но это не должно бытьдоступ, потому что я вошел в систему как администратор, а не как клиент.

Теперь, как я могу включить переменную сеанса для 2 различных типов пользователей и обеспечить доступность пользователей ???

web.php

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Route::get('/home', 'HomeController@index')->name('home');

Auth::routes();

Route::get('/admin', 'AdminController@index')->name('admin');
Route::post('/admin/login', 'AdminController@login')->name('admin.login');
Route::get('/admin/dashboard', 'AdminController@dashboard')->name('admin.dashboard');
Route::get('/admin/posts', 'AdminController@posts')->name('admin.posts');
Route::get('/admin/logout', 'AdminController@logout')->name('admin.logout');

1 Ответ

0 голосов
/ 14 мая 2019

Вам понадобится либо связующее ПО , либо какой-либо пакет стороннего производителя, например laratrsut

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...