3

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

导航菜单在允许显示链接和采取操作之前具有此功能。

@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 中为新注册用户创建新团队的功能?

4

1 回答 1

9

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

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

解决方案:false改为返回或在此处进行特定检查。

class TeamPolicy
{
    use HandlesAuthorization;

    // ...

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

    // ...
}
于 2020-10-28T11:36:59.297 回答