Substituir um método de classe central do Laravel 4

Desculpas se essa é uma pergunta idiota, já que muito do Laravel 4 é novo para mim. Eu estou tentando substituir alguns dos métodos na funcionalidade de senha do núcleo como eu quero definir minhas próprias regras de validação de senha (codificado no núcleo no momento da postagem) e alterar o método de relatório de erros (matriz de $ errors usada em outras formas, em vez de baseadas na sessão).

Então minha abordagem foi criar uma nova classe em / app / lib / MyProject / User chamada Password.php que se parece com isso:

<?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;
}

}

Copiei o método de redefinição de /vendor/laravel/framework/src/Illuminate/Auth/Reminders/PasswordBroker.php, que parece estar onde a fachada principal do Password é resolvida.

Então, no meu arquivo composer.json, adicionei o seguinte ao autoload: classmap array:

"app/lib/MyProject/User"

Finalmente, no meu arquivo /app/config/app.php eu alterei o alias da senha:

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

ESTÁ BEM. No meu arquivo routes.php eu tenho o seguinte, que é muito bem tirado direto dos documentos:

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';
    });
});

Quando esse método reset () é executado, recebo o seguinte erro:

Método não estático MyProject \ User \ Password :: reset () não deve ser chamado estaticamente

O método reset () na classe que estou estendendo não é estático, o que me surpreendeu, no entanto, configurar meu método de redefinição como estático limpa esse erro. Em seguida, recebo o seguinte erro:

Usando $ this quando não está no contexto do objeto

O que ocorre quando se tenta executar $ this-> validateReset ($ credentials).

Estou completamente fora da minha profundidade agora. Eu estou indo sobre isso da maneira certa ou completamente fora do caminho certo?

Obrigado por qualquer conselho

questionAnswers(2)

yourAnswerToTheQuestion