2016-11-10 3 views
8

Кто-нибудь знает, как переопределить функции, используемые в брокере паролей laravel? Я знаю, что документы:Laravel 5.3 Настройка брокера паролей

https://laravel.com/docs/5.3/passwords#resetting-views

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

Я уже знаю, как переопределить ResetsPasswords.php Черты но переопределение функциональности Password::broker() для следующего слоя.

Если нужно больше информации я могу любезно предоставить некоторые.

Заранее спасибо.

ответ

9

Мне приходилось сталкиваться с той же проблемой, которая необходима для переопределения некоторых функций PasswordBroker. После того, как много исследования в Интернете и многих неудачных попыток сделать это, я в конечном итоге к следующему реализации:

  1. Создано CustomPasswordResetServiceProvider внутри App \ провайдеров, где я зарегистрировал экземпляр 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']; 
        } 
    } 
    
  2. В конфигурации/app.php закомментирована строку:
    //Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
    и добавил:
    App\Providers\CustomPasswordResetServiceProvider::class,

  3. папку

    Внутри 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']) 
    ); 
    } 
    
  4. Наконец в папке App \ Services Я создал CustomPasswordBroker класс, который расширяет по умолчанию PasswordBroker, расположенный по адресу:
    Illuminate \ Auth \ Пароли \ PasswordBroker и переопределить функции, которые мне нужны.

    use Illuminate\Auth\Passwords\PasswordBroker as BasePasswordBroker;  
    
    class CustomPasswordBroker extends BasePasswordBroker  
    {  
    // override the functions that you need here  
    }  
    

Не уверен, если это лучшая реализация, но он работал на меня.

+0

Это очень похожее осуществление, которое я закончил делать. Очень хорошо объясняется идентификацией каталогов и всего. +1 и отмечен Правильно! –

+1

Просто нужно было изменить требуемую длину пароля для сброса пароля. Минимальная длина 6 символов заполнена довольно глубоко в коде laravel, так что я могу изменить ее только с помощью вашего ответа. Спасибо огромное! – johnnydoe82

+1

Спасибо за это.Я застрял в этом беспорядке Password Broker и Password Broker Manager. Серьезно, я не могу понять, как они усложнили то, что было простым в таком плохом смысле. Кроме того, для людей, делающих это на Laravel 5.4, существует небольшая разница для метода «register» поставщика услуг, чем то, что показано здесь. По сути, метод 'registerPasswordBroker' должен быть скопирован как на' Illuminate \ Auth \ Passwords \ PasswordResetServiceProvider', за исключением той части, где вы используете свой собственный пользовательский экземпляр CustomPasswordBrokerManager. – racl101

Смежные вопросы