У меня есть приложение, в котором пользователь может принадлежать нескольким организациям. Я хочу настроить его таким образом, чтобы у пользователя могли быть разные роли / разрешения для каждой организации. Я использую Laravel и планирую реализовать Spatie / Laravel-разрешение. Каков наилучший способ реализовать это?
Я попытался настроить двух охранников, один для основной учетной записи пользователя, а другой для сводной модели между пользователем и организацией, в которую он входит. Таким образом, в основном, когда они входят в приложение, используя основную пользовательскую модель, я спрашиваю их, в какую организацию они хотели бы войти, когда они выбирают организацию, я также настраиваю сеанс авторизации в сводной модели, которая связывает пользователя с организация и доступ к ролям из этой модели. Это работает, но необходимость управлять сеансами аутентификации - это боль.
// User Model
class User extends Authenticatable
{
public function organizationUsers()
{
return $this->hasMany(OrganizationUser::class);
}
}
// OrganizationUser Model
class Organziationuser extends Authenticatable
{
use HasRoles;
public $guard_name = 'organization_user';
public function organization()
{
return $this->belongsTo(Organization::class);
}
public function user()
{
return $this->belongsTo(User::class);
}
}
Я ожидаю, что пользователь сможет войти в приложение с помощью одного входа, но также иметь разные разрешения для разных организаций.