Я использую 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');
}
}
Каждый пользователь привязан как минимум к компании. Помимо роли суперадмина, я хочу, чтобы роли принадлежали компаниям. То есть каждая компания должна создавать свои собственные роли.
Как мне этого добиться?