Laravel + Jetstream, как создавать и распределять роли пользователей?

Развернут проект на Laravel 8 с пакетом для аутентификации пользователей Jetstream. Но возникли вопросы по распределению ролей пользователей. Требуется всего две роли, Администратора – с полными правами и просто зарегистрированных пользователей.

На первый взгляд Jetstream – функционален и удобен, предоставляет возможности регистрации, авторизации и т.д. Но логика работы установленного по дефолту Jetstream отличается от необходимой.

Согласно документации Jetstream, при установке пакета с опцией --teams , по умолчанию для каждого зарегистрированного пользователя создается новая учетная запись и команда в которую он добавляет пользователей и распределяет для них роли.

Но как создать на Laravel + Jetstream всего два типа пользователей: Администратора для работы с содержимым сайта через админку и обычного Юзера, и что бы все зарегистрированные по умолчанию относились к группе пользователей User?

В документации к Jetstream – решения не нашел, туториалов в сети тоже.

Может быть целесообразней использовать не Jetstream а какое –либо другое решение? Прошу совета.
  • Вопрос задан
  • 991 просмотр
Пригласить эксперта
Ответы на вопрос 2
Вы без api строите проект? на чистом laravel? я проще решил вопрос. Breeze для базовой аутентификации.
Дальше просто manyToMany User-Role и через сидер -
public function run()
    {
        $role_admin_user = new Role;
        $role_admin_user->name = 'admin';
        $role_admin_user->description = 'An admin user';
        $role_admin_user->save();

        $role_regular_user = new Role;
        $role_regular_user->name = 'user';
        $role_regular_user->description = 'A regular user';
        $role_regular_user->save();

    }

user..
$admin = new User;
        $admin->name = 'Admin Name';
        $admin->email = 'dmk.forsocial@gmail.com';
        $admin->password = bcrypt('secret');
        $admin->save();
        $admin->roles()->attach(Role::where('name', 'admin')->first());

        $user = new User;
        $user->name = 'User';
        $user->email = 'dmk.forweb@gmail.com';
        $user->password = bcrypt('secret');
        $user->save();
        $user->roles()->attach(Role::where('name', 'user')->first());


и CheckRole middleware.
Безусловно подсмотрел в сети, но работает как надо для такой простой задачи
Если нужно, отпишитесь - скину подробнее
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы