2017-10-08 30 views
0

我使用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)正在工作,因爲沒有創建新的團隊。我在這裏做錯了什麼?

回答

1

在致電Teamwork::acceptInvite($invite)之前,您正在製作return $user。這種互換行,它應該工作:

if ($invite) { 

    Teamwork::acceptInvite($invite); 
    return $user; 

} else { 

    //create a team 
    ... 
} 

調用return在函數內部將結束它的執行。詳情請見PHP manual

如果換這行後,你會得到一個錯誤:

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 
    ... 
} 
+0

我之所以這樣做,是,我發現了以下錯誤:在null' 'FatalThrowableError 調用一個成員函數attachTeam()這是由'Teamwork :: acceptInvite($ invite)'行引起的,根據谷歌搜索是由於沒有用戶被加載。 – matt9292

+1

這可能是因爲用戶尚未認證。我正在更新我的答案,並提出了一些解決此問題的建議。 – Camilo

相關問題