Как я могу отключить возможность создавать новые команды для вновь зарегистрированных пользователей в Laravel Jetstream?

#php #laravel #jetstream

#php #laravel #jetstream

Вопрос:

По умолчанию пользователи объединяются в свою личную команду. Затем они могут с помощью панели инструментов создавать дополнительные команды.

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

 @can('create', LaravelJetstreamJetstream::newTeamModel())
@endcan
  

Глядя на создание пользователя, в app/Actions/Fortify/CreateNewUser.php нем нет конкретного упоминания об этом, и все пользователи могут создавать по умолчанию.

Заглядывая в базу данных, для этого также нет конкретного хранилища, и я не могу найти, как это @can('create') проверяется в PHP.

Внутри app/Actions/Jetstream/CreateTeam.php это упоминается снова:

 Gate::forUser($user)->authorize('create', Jetstream::newTeamModel());
  

Но опять же, нет ссылки на то, как выполняется проверка.

Как я могу отключить возможность создавать новые команды для новых зарегистрированных пользователей в Jetstream?

Ответ №1:

После использования IRC один из участников просветил меня об использовании create , которое можно найти в app/Policies/TeamPolicy::create .

Это всегда возвращается true , что дает всем пользователям возможность по умолчанию создавать новые команды.

Решение: верните false вместо этого или выполните свои конкретные проверки здесь.

 class TeamPolicy
{
    use HandlesAuthorization;

    // ...

    public function create(User $user)
    {
        return false;
    }

    // ...
}