Ссылка для сброса пароля в рюкзаке имеет неверный базовый URL - PullRequest
0 голосов
/ 18 марта 2020

Я относительно новичок в Laravel и рюкзаке, поэтому, пожалуйста, прости меня, если я задаю простой вопрос. Я унаследовал систему Laravel / Backpack, которую я должен поддерживать. Общий фронтальный веб-сайт не требует аутентификации для доступа, но есть область администрирования Backpack, которая требует аутентификации для доступа. Кажется, что все работает, маршрутизация как на общем веб-сайте, так и в административной области, за исключением одной вещи.

Если пользователь забывает свой пароль и он go через привязку «Сброс пароля» через логин странице, используя группу / admin / routing, отобразятся страницы «Сброс пароля» и электронное письмо будет успешно отправлено и получено. Это все хорошо и замечательно, и я понимаю, что происходит.

 POST     | admin/password/email         | backpack.auth.password.email       | Backpack\Base\app\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail   | web,guest:admin                                      |
 GET|HEAD | admin/password/reset         | backpack.auth.password.reset       | Backpack\Base\app\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm  | web,guest:admin                                      |
 POST     | admin/password/reset         |                                    | Backpack\Base\app\Http\Controllers\Auth\ResetPasswordController@reset                 | web,guest:admin                                      |
 GET|HEAD | admin/password/reset/{token} | backpack.auth.password.reset.token | Backpack\Base\app\Http\Controllers\Auth\ResetPasswordController@showResetForm         | web,guest:admin                                      |

Однако, когда приходит электронное письмо со ссылкой сброса, оно использует неправильный маршрут. По умолчанию используется стандартный (Laravel) маршрут к основному веб-сайту, а не маршрут / admin. Например, привязка сброса должна относиться к:

https://website.com/admin/password/reset/abc123?email=info@example.com

, но вместо этого привязка:

https://website.com/password/reset/abc123?email=info@example.com

и выбирает результирующий стандартный Laravel маршрут:

GET|HEAD | password/reset         | password.request | App\Http\Controllers Auth\ForgotPasswordController@showLinkRequestForm | web,guest                                            |
GET|HEAD | password/reset/{token} | password.reset   | App\Http\Controllers\Auth\ResetPasswordController@showResetForm        | web,guest                                            |

Я долго копался в коде и не вижу, как это происходит. Сначала я пытался выполнить отладку через сервер Artisan на моем локальном хосте, где я обнаружил, что якорь был установлен на:

http://127.0.0.1:8000/localhost/password/reset/abc123?email=info@example.com

Что было странным в этом, так это бит localhost. Я посмотрел в своем файле .env и

APP_URL=localhost

Если я изменил APP_URL на «admin», то он работал, якоря в сообщении сброса были правильными:

https://website.com/admin/password/reset/abc123?email=info@example.com

Мне было интересно была ли это проблема развертывания / разработки, поэтому я перешел на рабочий сервер и на действующий веб-сайт. APP_URL был правильно установлен на

APP_URL=https://thecorrectdomain.com

Если я изменил APP_URL на «admin», то якоря пароля для сброса пароля теперь записываются правильно. Это кажется странным, так как я думаю, что APP_URL должен ссылаться на весь домен веб-сайта, как показано выше.

Я также видел несколько интересных статей, в которых они выступают за переопределение классов уведомлений, но, конечно, это не должно быть необходимо для того, что должно Я думаю, все равно работать.

Кто-нибудь есть идеи о том, где я иду не так?

Спасибо

...