#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;
}
// ...
}