2016-11-10 10 views
8

laravelのパスワードブローカー内で使用されている機能を無効にする方法は誰にも分かりますか?景色といくつかの表面レベルのもののようなもののために何をすべきかについての情報を与えるLaravel 5.3パスワードブローカーのカスタマイズ

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

が、それは本当に全く明らかではないか、多分私はそれを十分な回数を読んでいないよ。私は、ドキュメントを知っています。

私はすでにResetsPasswords.php形質を上書きする方法を知っているが、私は親切にいくつかを提供することができます必要なより多くの情報がある場合Password::broker()の機能をオーバーライドすること。

で次の層のためです。

ありがとうございます。

答えて

9

私は同じ問題に直面していましたが、PasswordBrokerの一部の機能を無効にする必要がありました。ウェブ上の調査の多くの後、多くがそうしようとする試みが失敗した、私は次のような実装になってしまった:

  1. は私がCustomPasswordBrokerManagerインスタンスを登録のApp \プロバイダ内CustomPasswordResetServiceProviderを作成しました。 のconfig/app.phpコメントアウト行で

    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. //Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
    、コメントを追加しました:
    App\Providers\CustomPasswordResetServiceProvider::class,

  3. 内部のApp \ Services]フォルダがCustomPasswordBrokerManagerを作成し、コンテキストをコピーしますPasswordBrokerManagerの位置はです。 が点灯し、\認証\パスワード\ PasswordBrokerManager.phpは
    はその後、私のCustomPasswordProviderクラスのインスタンスを返すように機能決意を変更しました。 App \ Services]フォルダ内の最後に

    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. 私がであるデフォルトPasswordBroker拡張CustomPasswordBrokerクラス作成:
    を照らし\認証\パスワード\ PasswordBrokerを、私は必要な機能を上書きします。

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

これは最高の実装ですが、それは私のために働いたかどうかわかりません。

+0

これは非常に似通った実装で、やってしまった。非常によくディレクトリとすべての識別と説明されています。 +1し、正しいとマークしてください! –

+1

パスワードのリセットに必要なパスワードの長さを変更するだけでした。 6文字の最小長さは、ララベルコードのかなり深いところに埋め込まれていますので、ここであなたの答えを変更するだけです。どうもありがとうございます! – johnnydoe82

+1

ありがとうございます。私はこのパスワードブローカーとパスワードブローカーマネージャの混乱に立ち往生していた。真剣に、私は彼らがどうやってそのような悪い方法で単純なものを複雑にしたのかを理解できません。 また、Laravel 5.4でこれを行っている人には、ここに示したものよりもサービスプロバイダの 'register'メソッドに若干の違いがあります。基本的に 'registerPasswordBroker'メソッドは、独自のカスタム' CustomPasswordBrokerManager'インスタンスを使用する部分を除いて 'Illuminate \ Auth \ Passwords \ PasswordResetServiceProvider'のようにコピーする必要があります。 – racl101