如何禁用 Laravel Jetstream 中新注册用户创建新团队的功能?

How can I disable the ability to create new teams to newly registered users in Laravel Jetstream?

默认情况下,用户会加入他们的个人团队。然后,他们可以通过仪表板创建其他团队。

在允许显示 link 和执行操作之前,导航菜单有这个。

@can('create', Laravel\Jetstream\Jetstream::newTeamModel())
@endcan

查看app/Actions/Fortify/CreateNewUser.php中的用户创建,没有具体提到这个,默认所有用户都可以创建。

查看数据库,也没有具体存储这个,我无法找到这个 @can('create') 在 PHP 中是如何验证的。

app/Actions/Jetstream/CreateTeam.php里面又提到了这个:

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

但同样,没有提及验证是如何完成的。

如何禁用在 Jetstream 中为新注册用户创建新团队的功能?

使用 IRC 后,一位参与者启发了我 create 的用法,可以在 app/Policies/TeamPolicy::create.

中找到

这总是 returns true 因此默认情况下,所有 用户都可以创建新团队。

解决方案:return false 或者在此处进行具体检查。

class TeamPolicy
{
    use HandlesAuthorization;

    // ...

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

    // ...
}