Laravel - Как создавать роли пользователей на основе компаний, использующих Laravel Spatie

Я использую Laravel-Spatie Permission и Laravel-8 для уровня доступа на основе ролей пользователя:

У меня есть такие таблицы:

Модель пользователя:

<?php

namespace App;

use App\Model;
use Carbon\Carbon;
use Hash;
use Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable
{
    use Notifiable;
    use HasRoles;
    use SoftDeletes;

    protected $fillable = [
        'first_name',
        'other_name',
        'last_name',
        'company_id', 
        'updated_at',
        'created_at',
    ];

    public function company()
    {
        return $this->belongsTo('App\Models\Organization\Company');
    }
}

Модель компании:

<?php

namespace App\Models\Organization;

use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Company extends Model
{
    public $timestamps = false;
    protected $table = 'companies';

    protected $primaryKey = 'id';

    protected $fillable = [
                'id',
                'company_name',
                'address1',
                'address2',
                'org_head',
                'created_by',
                'created_at',
                'updated_by',
                'updated_at',
                'is_active'
            ];
    public function users()
    {
        return $this->hasMany('App\User');
    }
 }

Каждый пользователь привязан как минимум к компании. Помимо роли суперадмина, я хочу, чтобы роли принадлежали компаниям. То есть каждая компания должна создавать свои собственные роли.

Как мне этого добиться?


person user11352561    schedule 16.05.2021    source источник


Ответы (1)


это как раз мой вопрос. Надеюсь, друзья дадут интересные советы

person Behrooz Valikhani    schedule 29.05.2021