首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拉勒维尔团队邀请一个没有账户的人

拉勒维尔团队邀请一个没有账户的人
EN

Stack Overflow用户
提问于 2017-10-08 21:22:43
回答 2查看 1.5K关注 0票数 0

我正在使用Laravel5.4与团队协作模块:

https://github.com/mpociot/teamwork

该模块被设置为向用户发送邀请。已经有账户的人)加入邀请者。我想邀请那些还没有帐号的潜在用户,允许他们创建一个帐户,并在一步之内加入团队。

这是团队合作中当前的acceptInvite函数,AuthController:

代码语言:javascript
复制
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函数:

代码语言:javascript
复制
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)在调试器中产生这样的结果:

代码语言:javascript
复制
#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)正在工作,因为没有创建一个新的团队。我在这里做错什么了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-08 22:04:36

在调用return $user之前,您正在做一个Teamwork::acceptInvite($invite)。交换这一行,它应该能工作:

代码语言:javascript
复制
if ($invite) {

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

} else {

    //create a team
    ...
}

在函数中调用return将结束其执行。请参阅PHP手册上的更多内容。

如果在交换了这一行之后,您将得到下一个错误:

代码语言:javascript
复制
FatalThrowableError Call to a member function attachTeam() on null

可能是因为在用户通过身份验证之前,您正在尝试接受一个邀请。

您可以在调用Teamwork::acceptInvite($invite)之前尝试对其进行身份验证,如下所示:

代码语言:javascript
复制
if ($invite) {

    Auth::attempt([
        'email'    => $data['email'],
        'password' => $data['password']
    ]);

    Teamwork::acceptInvite($invite);

    return $user;

} else {

    //create a team
    ...
}
票数 1
EN

Stack Overflow用户

发布于 2020-01-05 12:12:17

代码语言:javascript
复制
if ($invite) {
    Teamwork::acceptInvite($invite);
    return $user;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46636221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档