Laravel Teamwork邀请没有帐户的人

时间:2017-10-08 21:22:43

标签: php laravel laravel-5

我正在使用Laravel 5.4和Teamwork模块:

https://github.com/mpociot/teamwork

该模块设置为向用户(即已经拥有帐户的人)发送邀请以加入邀请者。我想邀请尚未拥有帐户的潜在用户,允许他们创建一个帐户并一步加入团队。

这是Teamwork AuthController中的当前acceptInvite函数:

{{ MyStaticClass.getData() }}

所以我将其更改为重定向到注册页面而不是登录页面。然后这是RegisterController中的create函数:

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');
    }
}
上面代码中的

Debugbar :: info($ invite)在调试栏中产生了这个:

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

但不接受邀请。我知道如果($ invite)正在工作,因为没有创建新团队。我在这里做错了什么?

2 个答案:

答案 0 :(得分: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
    ...
}

答案 1 :(得分:0)

if ($invite) {
    Teamwork::acceptInvite($invite);
    return $user;
}