Laravel Spatie:为首个用户设Admin角色,其余分配Manager角色
解决Spatie权限角色分配问题:首用户设Admin,其余设Manager
你的代码核心问题在于:每次创建用户后都重复给第一个用户分配Admin角色,完全没处理当前新创建用户的角色逻辑,也没有对非首用户分配Manager的判断。
修正后的代码如下:
$this->validate($request, [ 'name' => 'required', 'email' => 'required|email|unique:users,email', 'password' => 'required|confirmed|min:6', ]); $input = $request->all(); $input['password'] = Hash::make($input['password']); // 生成当前新用户实例 $user = User::create($input); // 根据用户总数分配对应角色 if (User::count() === 1) { $user->assignRole('Admin'); } else { $user->assignRole('Manager'); }
关键改动说明:
- 直接使用创建后的
$user对象操作,不再重复修改第一个用户的角色 - 通过
User::count()判断当前是第几个用户,首用户分配Admin,其余自动分配Manager - 确保每个新创建的用户都能获得对应的角色权限
内容的提问来源于stack exchange,提问作者yucefbro
相关产品推荐
相关产品推荐

