我使用Laravel 5.4与团队协作模块:Laravel团队邀请某人没有一个帐户
https://github.com/mpociot/teamwork
模块设置为发送邀请给用户(即谁已经有一个帐户的人)加入邀请者。我想邀请尚未拥有帐户的潜在用户,让他们创建一个并一步加入团队。
这是团队合作AuthController当前acceptInvite功能:
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的创建功能:在上面的代码
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 ::信息($邀请)在debugbar产生这样的:
#original: array:9 [
"id" => 4
"user_id" => 13
"team_id" => 11
"type" => "invite"
"email" => "[email protected]"
"accept_token" => "ddde37c58aa6376533fa289c89bee32e"
"deny_token" => "450b433bd51b2520a78c24563e8c81c9"
"created_at" => "2017-10-08 20:58:45"
"updated_at" => "2017-10-08 20:58:45"
]
但邀请是不能接受的。我知道如果($ invite)正在工作,因为没有创建新的团队。我在这里做错了什么?
我之所以这样做,是,我发现了以下错误:在null' 'FatalThrowableError 调用一个成员函数attachTeam()这是由'Teamwork :: acceptInvite($ invite)'行引起的,根据谷歌搜索是由于没有用户被加载。 – matt9292
这可能是因为用户尚未认证。我正在更新我的答案,并提出了一些解决此问题的建议。 – Camilo