Zastępuje metodę klasy core Laravel 4

Przepraszam, jeśli to głupie pytanie, ponieważ wiele Laravel 4 jest dla mnie nowością. Próbuję przesłonić kilka metod w podstawowej funkcjonalności hasła, ponieważ chcę zdefiniować własne reguły sprawdzania poprawności haseł (zakodowane w rdzeniu w momencie księgowania) i zmienić metodę raportowania błędów (tablica błędów $ użyta w inne formy niż oparte na sesji).

Więc moim podejściem było stworzenie nowej klasy w / app / lib / MyProject / User o nazwie Password.php, która wygląda tak:

<?php namespace MyProject\User;

use Closure;
use Illuminate\Mail\Mailer;
use Illuminate\Routing\Redirector;
use Illuminate\Auth\UserProviderInterface;

    class Password extends \Illuminate\Support\Facades\Password
    {
        /**
     * Reset the password for the given token.
     *
     * @param  array    $credentials
     * @param  Closure  $callback
 * @return mixed
 */
public function reset(array $credentials, Closure $callback)
{
    // If the responses from the validate method is not a user instance, we will
    // assume that it is a redirect and simply return it from this method and
    // the user is properly redirected having an error message on the post.
    $user = $this->validateReset($credentials);

    if ( ! $user instanceof RemindableInterface)
    {
        return $user;
    }

    $pass = $this->getPassword();

    // Once we have called this callback, we will remove this token row from the
    // table and return the response from this callback so the user gets sent
    // to the destination given by the developers from the callback return.
    $response = call_user_func($callback, $user, $pass);

    $this->reminders->delete($this->getToken());

    return $response;
}

}

Skopiowałem metodę resetowania z /vendor/laravel/framework/src/Illuminate/Auth/Reminders/PasswordBroker.php, która wydaje się być tam, gdzie postanawia podstawowa fasada hasła.

Następnie w moim pliku composer.json dodałem następujące elementy do tablicy autoload: classmap:

"app/lib/MyProject/User"

Wreszcie w moim pliku /app/config/app.php zmieniłam hasło aliasu:

'Password' => 'MyProject\User\Password',

DOBRZE. W moim pliku routes.php mam następujące informacje, które pochodzą prosto z dokumentów:

Route::post('password/reset/{token}', function()
{
    $credentials = array('email' => Input::get('email'));

    return Password::reset($credentials, function($user, $password)
    {
        $user->password = Hash::make($password);

        $user->save();

        return 'saved - login';
    });
});

Po uruchomieniu tej metody reset () pojawia się następujący błąd:

Niestatyczna metoda MyProject Użytkownik Password :: reset () nie powinien być wywoływany statycznie

Metoda reset () w klasie, którą rozszerzam, nie jest statyczna, więc mnie to zaskoczyło, jednak ustawienie mojej metody resetowania na statyczną usuwa ten błąd. Następnie pojawia się następujący błąd:

Używanie $ this, gdy nie jest w kontekście obiektu

Który przychodzi podczas próby uruchomienia $ this-> validateReset ($ credentials).

Jestem teraz całkowicie poza moją głębią. Czy chodzę o tym we właściwy sposób czy całkowicie poza właściwą ścieżkę?

Dzięki za każdą radę

questionAnswers(2)

yourAnswerToTheQuestion