I am wrecking my brain over this. So I have non unique emails because we have different events that registers guests and one guest can register to more than one event with same email. Registeration isnt hard the problem is with forget password. I have added a new column in password_reset
table with name event_id. I overrided the default sendResetLinkEmail
with the following code. So that lets me update the event id with the token that is stored. what it looks like
/**
* Send a reset link to the given user.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
*/
public function sendResetLinkEmail(Request $request)
{
$this->validateEmail($request);
$event_id = Event::where('event_url',session('slug'))->first()->id;
$userData = $this->credentials($request);
$userData['event_id'] = $event_id;
// We will send the password reset link to this user. Once we have attempted
// to send the link, we will examine the response then see the message we
// need to show to the user. Finally, we'll send out a proper response.
$response = $this->broker()->sendResetLink(
$userData
);
DB::table('guest_password_resets')->where('email', $request->email)->update(['event_id' => $event_id]);
return $response == Password::RESET_LINK_SENT
? $this->sendResetLinkResponse($request, $response)
: $this->sendResetLinkFailedResponse($request, $response);
}
The problem is, if I want to reset password of event A and not the event B whose token is also present in password_reset
, it will replace the token and update the event_id of the event B rather than create a new token for the event A for the same email.
All I want it to do is create new entries based on event_id and not email. Is there any custom way for this?
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire