2017-10-08 14 views
0

せずに誰かを招待:(。すなわち、既にアカウントを持っている人を)Laravelチームワークは、私はチームワークモジュールでLaravel 5.4を使用しているアカウント

https://github.com/mpociot/teamwork

モジュールがユーザーに招待状を送信するように設定されています招待者に参加する。私はまだアカウントを持っていない潜在的なユーザーを招待して、1つのステップでチームを作成してチームに参加できるようにしたいと思います。

これはチームワーク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

return $userは、Teamwork::acceptInvite($invite)に電話する前に作成しています。このラインを交換し、それが動作するはずです:

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'なので 上メンバ関数attachTeamに 'FatalThrowableError コールを()これは 'Teamwork :: acceptInvite($ invite)'行によって引き起こされ、googleの検索によると、読み込まれているユーザがないためです。 – matt9292

+1

これはおそらく、ユーザーがまだ認証されていないためです。私はこの問題を解決するためのいくつかの提案で私の答えを更新しています。 – Camilo

関連する問題