Je dois modifier le paramètre de demande, c'est-à-dire l'email, puis tenter de me connecter avec le nouvel e-mail. Ce que j'essaye:
$user_handle = $request->email; $gook = Gookarma::where('handle', '=', $user_handle)->firstOrFail(); $acc = Account::find($gook->karmable_id); $request->email = $acc->email; if ($this->attemptLogin($request)) { return $this->sendLoginResponse($request); }
Mais cela ne met pas à jour la demande et la tentative de connexion s'accompagne de l'entrée de champ de courrier électronique précédente. E-mail précédent que je tire de l'API.
J'ai essayé avec request->all()
mais lors de la tentative de connexion après la mise à jour de la demande, une erreur s'affiche.
3 Réponses :
vous pouvez utiliser la méthode de fusion :
$array=$request->all(); $array['email']=$acc->email; $req = new Request([$array]);
ou vous pouvez créer un tableau pour remplacer toute l'entrée de requête comme:
$request->replace($arrayToReplace);
puis utilisez la méthode replace :
$arrayToReplace=$request->all(); $arrayToReplace['email']=$acc->email;
si aucune des méthodes ci-dessus ne fonctionne, essayez de faire une demande vous-même:
$request->merge([ 'email' =>$acc->email, ]);
puis utilisez la nouvelle requête pour vos opérations.
Merci pour votre réponse, j'ai essayé de le faire mais cela ne met pas à jour l'e-mail, j'ai essayé cette $ request = $ request-> all (); $ request ['email'] = $ acc-> email; Cela a mis à jour l'e-mail, mais sur $ this-> tryLogin ($ request), il affiche une erreur: L'argument 1 passé à App \ Http \ Controllers \ Auth \ LoginController :: tryLogin () doit être une instance de Illuminate \ Http \ Request, array donné
essayez la deuxième façon
Cela ne marche pas non plus. L'objet de requête n'est pas mis à jour.
avez-vous: utilisez Illuminate \ Http \ Request; en haut de votre classe?
Oui j'ai importé
J'ai mis à jour la réponse, veuillez voir la nouvelle façon
Merci bro pour l'aide, cela a mis à jour la variable de demande avec l'email, mais toujours pas accepté par $ this-> tryLogin ($ req), Une idée?
Vous pouvez essayer quelque chose comme ceci:
$request->merge(['email' => $acc->email]);
Créer une nouvelle variable d'instance de demande et attribuer un e-mail et un mot de passe de la variable de demande précédente à la nouvelle variable a fonctionné pour moi.
$req = new Request([$request]); $req['email']=$acc->email; $req['password'] = $request->password;