我正在使用Laravel5.4与团队协作模块:
https://github.com/mpociot/teamwork
该模块被设置为向用户发送邀请。已经有账户的人)加入邀请者。我想邀请那些还没有帐号的潜在用户,允许他们创建一个帐户,并在一步之内加入团队。
这是团队合作中当前的acceptInvite函数,AuthController:
public function acceptInvite($token)
{
$invite = Teamwork::getInviteFromAcceptToken($token);
if (!$invite) {
abort(404);
}
if (auth()->check()) {
Teamwork::acceptInvite($invite);
return redirect()->route('teams.index');
} else {
session(['invite_token' => $token]);
return redirect()->to('login');
}
}所以我把它改为重定向到注册页面,而不是登录页面。然后是RegisterController中的create函数:
protected function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
$id= $user->id; // Get current user id
$token = session('invite_token');
$invite = Teamwork::getInviteFromAcceptToken($token);
Debugbar::info($invite);
if ($invite) {
return $user;
Teamwork::acceptInvite($invite);
} else {
//create a team
...
}
}在上面的代码中,Debugbar::info($invite)在调试器中产生这样的结果:
#original: array:9 [
"id" => 4
"user_id" => 13
"team_id" => 11
"type" => "invite"
"email" => "testuser4@test.com"
"accept_token" => "ddde37c58aa6376533fa289c89bee32e"
"deny_token" => "450b433bd51b2520a78c24563e8c81c9"
"created_at" => "2017-10-08 20:58:45"
"updated_at" => "2017-10-08 20:58:45"
]但邀请不被接受。我知道if($invite)正在工作,因为没有创建一个新的团队。我在这里做错什么了?
发布于 2017-10-08 22:04:36
在调用return $user之前,您正在做一个Teamwork::acceptInvite($invite)。交换这一行,它应该能工作:
if ($invite) {
Teamwork::acceptInvite($invite);
return $user;
} else {
//create a team
...
}在函数中调用return将结束其执行。请参阅PHP手册上的更多内容。
如果在交换了这一行之后,您将得到下一个错误:
FatalThrowableError Call to a member function attachTeam() on null可能是因为在用户通过身份验证之前,您正在尝试接受一个邀请。
您可以在调用Teamwork::acceptInvite($invite)之前尝试对其进行身份验证,如下所示:
if ($invite) {
Auth::attempt([
'email' => $data['email'],
'password' => $data['password']
]);
Teamwork::acceptInvite($invite);
return $user;
} else {
//create a team
...
}发布于 2020-01-05 12:12:17
if ($invite) {
Teamwork::acceptInvite($invite);
return $user;
}https://stackoverflow.com/questions/46636221
复制相似问题