#laravel-5
#laravel-5
Вопрос:
Используя Laravel 5.3, я знаю, как изменить содержимое электронного письма для сброса пароля по умолчанию, но это не тот путь, по которому я хочу пойти. Наше приложение отправляет все электронные письма через шаблоны Mailjet, и у нас настроена специальная функция, поэтому достаточно легко отправлять электронные письма по этому маршруту. Поэтому, чтобы все было структурировано, я хочу, чтобы функция сброса пароля работала в том же духе.
Все, что мне нужно сделать, это получить токен, и только токен, из множества методов, которые, по-видимому, участвуют в сбросе пароля, и затем я могу сгенерировать электронное письмо и ссылку отдельно и отправить их через Mailjet.
Любые указания, которые кто-либо может дать, будут высоко оценены.
Ответ №1:
Токен, о котором вы говорите, генерируется, когда пользователь заполняет поле «Забыли пароль».
Токены находятся в таблице password_resets
базы данных. В этой таблице вы увидите email
и пользователя token
. Токен, который вы хотите получить, — это токен там.
Чтобы получить токен, вы могли бы выполнить этот запрос:
$pw_reset = DB::table('password_resets')->where('email', $user->email)->first();
Теперь вы можете просто сделать $pw_reset->token
, чтобы получить токен пользователя. Убедитесь, что в вашей таблице есть запись, иначе вы получите исключение. Вы можете сделать это, заменив приведенное ->first()
выше на ->firstOrFail()
Именно так вы получите токен сброса пароля.
Генерация токена без запроса пользователем электронной почты для сброса пароля
Если вы не хотите, чтобы пользователь заполнял поле «Забыли пароль» и запрашивал электронное письмо, а затем извлекал токен, вы можете вручную создать токен.
$user = User::find(1) // Get the user with an ID of 1. This can be any user ID
$pw_reset = DB::table('password_resets')->insert(
['email' => $user->email, 'token' => str_random(255)]
);
Вы вставите свой пользовательский токен в базу данных и сможете получить недавно сохраненный токен с помощью $pw_reset->token
.
Вот и все. Я дал вам 2 способа сохранить токены в базе данных и один способ извлечь токен из базы данных.
Комментарии:
1. Спасибо за ваш ответ — оба типа близки к тому, чего я надеюсь достичь, но ни один из них не попал в нос.
2. Извините — не понял, что он будет отправлен, когда я нажму return. Чтобы уточнить, я хочу, чтобы им нужно было заполнить форму, чтобы получить электронное письмо для сброса пароля, я хочу, чтобы они использовали встроенную функцию «забыли пароль», и я хочу, чтобы Laravel сгенерировал код и сохранил его в БД. Однако я не хочу, чтобы Laravel отправлял стандартное электронное письмо bog, и я хочу, Чтобы оно передавало соответствующие значения (user, token и т. Д.) В нашу функцию отправки Mailjet для всего сайта. Это немного проясняет ситуацию?
3. Чтобы продолжить работу над этим, я закончил тем, что пошел дальше по вашему второму маршруту и просто обошел функциональность сброса пароля Laravel, вместо этого просто используя функцию для заполнения таблицы сброса пароля генерируемым мной значением, вместо того, чтобы разбирать методологию Laravel — я принял ваш ответ, как и без негоЯ бы не подумал (!) просто установить токен сброса пароля самостоятельно.