我正在尝试通过 Jetstream 身份验证控制器本身附加一个角色并更新表中的registered_at
字段,该invitations
控制器位于App\Actions\Fortify\CreateNewUser
. 我想在用户创建帐户时执行上述功能。
下面的代码正在执行我想要的功能,它成功地更新了registered_at
字段,并附加了角色,但没有成功地重定向到仪表板。
错误
传递给 Illuminate\Auth\SessionGuard::login() 的参数 1 必须实现接口 Illuminate\Contracts\Auth\Authenticatable,给定 null,在 C:\xampp\htdocs\2020\vendor\laravel\fortify\src\Http\Controllers 中调用\RegisteredUserController.php 第 56 行
App\Actions\Fortify\CreateNewUser.php -更新代码
public function create(array $input) {
Validator::make($input, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => $this - > passwordRules(),
]) - > validate();
$user = User::create([
'name' => $input['name'],
'email' => $input['email'],
'password' => Hash::make($input['password']),
]);
$user - > roles() - > sync('3');
$invitation = Invitation::where('email', $user - > email) - > firstOrFail();
$invitation - > registered_at = $user - > created_at;
$invitation - > save();
}
App\Actions\Fortify\CreateNewUser.php -原始代码
public function create(array $input) {
Validator::make($input, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => $this - > passwordRules(),
]) - > validate();
return User::create([
'name' => $input['name'],
'email' => $input['email'],
'password' => Hash::make($input['password']),
]);
}