Кто-нибудь знает, как переопределить функции, используемые в брокере паролей Laravel? Я знаю документы:
https://laravel.com/docs/5.3/passwords#resetting-views
Дайте информацию о том, что делать с такими вещами, как представления и несколько вещей на поверхностном уровне, но на самом деле это не совсем понятно, или, может быть, я не читаю это достаточно много раз.
Я уже знаю, как переопределить ResetsPasswords.php
Черта, но преобладающая функциональность Password::broker()
для следующего слоя в.
Если потребуется дополнительная информация, я могу предоставить ее.
Заранее спасибо.
Мне пришлось столкнуться с той же проблемой, необходимо переопределить некоторые функции PasswordBroker. После большого количества исследований в Интернете и множества неудачных попыток сделать это я пришел к следующей реализации:
Создано CustomPasswordResetServiceProvider внутри приложения \ провайдеров, где я зарегистрировал CustomPasswordBrokerManager пример.
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App\Services\CustomPasswordBrokerManager;
class CustomPasswordResetServiceProvider extends ServiceProvider{
protected $defer = true;
public function register()
{
$this->registerPasswordBrokerManager();
}
protected function registerPasswordBrokerManager()
{
$this->app->singleton('auth.password', function ($app) {
return new CustomPasswordBrokerManager($app);
});
}
public function provides()
{
return ['auth.password'];
}
}
В конфиг / app.php закомментированная строка:
//Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
и добавил:
App\Providers\CustomPasswordResetServiceProvider::class,
Внутри папки App \ Services создан CustomPasswordBrokerManager и скопировал контекст по умолчанию PasswordBrokerManager расположен в:
Осветить \ Auth \ Пароли \ PasswordBrokerManager.php
Потом модифицировал функцию разрешить вернуть экземпляр моего CustomPasswordProvider учебный класс.
protected function resolve($name)
{
$config = $this->getConfig($name);
if (is_null($config)) {
throw new InvalidArgumentException("Password resetter [{$name}] is not defined.");
}
return new CustomPasswordBroker(
$this->createTokenRepository($config),
$this->app['auth']->createUserProvider($config['provider'])
);
}
Наконец, внутри папки App \ Services я создал CustomPasswordBroker класс, который расширяет значение по умолчанию PasswordBroker расположен в:
Подсветите \ Auth \ Passwords \ PasswordBroker и переопределите нужные мне функции.
use Illuminate\Auth\Passwords\PasswordBroker as BasePasswordBroker;
class CustomPasswordBroker extends BasePasswordBroker
{
// override the functions that you need here
}
Не уверен, что это лучшая реализация, но она сработала для меня.
На шаге 1 отсутствуют некоторые вещи & 3 в ответе https://stackoverflow.com/a/42855948/2311074
Шаг 1
Вероятно, самый безопасный способ — просто скопировать класс из Illuminate\Auth\Passwords\PassswordResetServiceProvider.php
в App\Provider\CustomPasswordResetServiceProvider
и изменить:
namespace App\Providers;
CustomPasswordResetServiceProvider
use App\Services\CustomPasswordBrokerManager;
к вершинеregisterPasswordBroker
переименовать PasswordBrokerManager
в CustomPasswordBrokerManager
Шаг 2.
Помимо изменения метода разрешения также сделайте следующее:
namespace App\Services;
use Illuminate\Auth\Passwords\DatabaseTokenRepository;
к вершинеCustomPasswordBrokerManager