Управление несколькими ролями в Laravel - PullRequest
0 голосов
/ 04 июля 2018

Я создал таблицу ролей и групп для следующих вещей:

Группа: Авто Роль: Владелец, Клиент, Агент.

У меня есть таблица, в которую я включаю вышеперечисленные вещи:

Групповой стол

Ролевая таблица

Таблица сопоставления групп ролей

У меня есть экран входа в систему по умолчанию на уровне laravel. Я просто изменяю схему входа в систему, используя show_login (), переопределяя метод. Я хочу реализовать ролевую базу входа в систему. Представления ограничены ролью (владелец, агент, клиент).

Контроллер входа в систему:

<?php
namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/dashboard';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }
    public function showLoginForm()
    {
        return view('customlogin');
    }


}

Модель таблицы пользователя:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->engine = 'InnoDB';
            $table->increments('id');
            $table->string('name');
            $table->string('email',150)->unique();
            $table->string('password');
            $table->integer('roleid')->unsigned();
            $table->rememberToken();
            /*Common Fields*/
            $table->integer('status');
            $table->integer('createdby');
            $table->integer('modifiedby');
            $table->string('publicguid');
            $table->string('privateguid');
            $table->timestamps();

           /*From other table */


        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */

    public function down()
    {
        Schema::dropIfExists('users');
    }
}

1 Ответ

0 голосов
/ 04 июля 2018

Вы должны создать промежуточное программное обеспечение для аутентификации владельца / агента / клиента. Сделайте это, набрав это:

php artisan make:middleware Owner

Это создает файл промежуточного программного обеспечения с именем Owner.php

Зарегистрируйте промежуточное ПО на Kernel.php

'owner' => \App\Http\Middleware\Owner::class

Добавить промежуточное ПО владельца к маршруту в файле route.php

get('protected', ['middleware' => ['auth', 'owner'], function() {
    return "this page requires that you be logged in and an Owner";
}]);

Добавьте метод isOwner () в модель User для проверки, является ли он администратором.

public function isOwner()
{
    return $this->owner; // this looks for an owner column in your users table
}

Вы можете сделать то же самое для других ролей, таких как агент / клиент.

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