Отдельные роли / разрешения, если пользователь принадлежит ко многим организациям - PullRequest
0 голосов
/ 24 июня 2019

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

Я ожидаю, что пользователь сможет войти в приложение с помощью одного входа, но также иметь разные разрешения для разных организаций.

...