0
votes

Modifier le paramètre de demande (e-mail), puis authentifier l'utilisateur dans Laravel

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.


0 commentaires

3 Réponses :


0
votes

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.


7 commentaires

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?



0
votes

Vous pouvez essayer quelque chose comme ceci:

$request->merge(['email' => $acc->email]);


0 commentaires

0
votes

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;


0 commentaires