I have an mews captcha package and i need to override the function. This is the related package provider: https://github.com/mewebstudio/captcha
How can i now override this function to remove the session removed statement in check() without touching the package directly ? for example:
$this->session->remove('captcha');
to
// $this->session->remove('captcha');
To implement it, I put this code to the register() function in the file App/Providers/AppServiceProvider
$this->app->bind(
'captcha',
'App\Vendors\Mews\Captcha\Captcha'
);
In App\Vendors\Mews\Captcha\Captcha i created the file Captcha.php with this code:
<?php
namespace App\Vendors\Mews\Captcha\Captcha;
use Mews\Captcha\Captcha as mews;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
class Captcha extends mews{
/**
* Captcha check
*
* @param $value
* @return bool
*/
public function check($value)
{
if ( ! $this->session->has('captcha'))
{
return false;
}
$key = $this->session->get('captcha.key');
$sensitive = $this->session->get('captcha.sensitive');
if ( ! $sensitive)
{
$value = $this->str->lower($value);
}
//$this->session->remove('captcha');
dump($this->hasher->check($value, $key));
return $this->hasher->check($value, $key);
}
}
But it was not working, so to test it I have renamed the package check() and run the code and get the following error
Call to undefined method Mews\Captcha\Captcha::check()
in helpers.php line 45
at captcha_check('zg3br') in CaptchaServiceProvider.php line 42
at CaptchaServiceProvider->Mews\Captcha\{closure}('captcha', 'zg3br', array(), object(Validator))
at call_user_func_array(object(Closure), array('captcha', 'zg3br', array(), object(Validator))) in Validator.php line 3226
at Validator->callExtension('captcha', array('captcha', 'zg3br', array(), object(Validator))) in Validator.php line 3318
at Validator->__call('validateCaptcha', array('captcha', 'zg3br', array(), object(Validator))) in Validator.php line 485
at Validator->validate('captcha', 'Captcha') in Validator.php line 425
at Validator->passes() in Validator.php line 3177
at Validator->messages() in Validator.php line 3190
at Validator->errors() in AuthController.php line 71
at AuthController->getValidate(object(Request))
at call_user_func_array(array(object(AuthController), 'getValidate'), array(object(Request))) in Controller.php line 80
at Controller->callAction('getValidate', array(object(Request))) in ControllerDispatcher.php line 146
at ControllerDispatcher->call(object(AuthController), object(Route), 'getValidate') in ControllerDispatcher.php line 94
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in RedirectIfAuthenticated.php line 41
at RedirectIfAuthenticated->handle(object(Request), object(Closure))
at call_user_func_array(array(object(RedirectIfAuthenticated), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 96
at ControllerDispatcher->callWithinStack(object(AuthController), object(Route), object(Request), 'getValidate') in ControllerDispatcher.php line 54
at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\Auth\AuthController', 'getValidate') in Route.php line 174
at Route->runController(object(Request)) in Route.php line 140
at Route->run(object(Request)) in Router.php line 724
at Router->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in Router.php line 726
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 699
at Router->dispatchToRoute(object(Request)) in Router.php line 675
at Router->dispatch(object(Request)) in Kernel.php line 246
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in HttpsProtocol.php line 21
at HttpsProtocol->handle(object(Request), object(Closure))
at call_user_func_array(array(object(HttpsProtocol), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in VerifyCsrfToken.php line 64
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StartSession.php line 64
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in Kernel.php line 132
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
at Kernel->handle(object(Request)) in index.php line 53
at require_once('/var/www/html/amzpro/public/index.php') in server.php line 21
To test the bind of AppserviceProvider, I have print the dd(\App::getBindings());
array:34 [▼
"events" => array:2 [▶]
"router" => array:2 [▶]
"url" => array:2 [▶]
"redirect" => array:2 [▶]
"Psr\Http\Message\ServerRequestInterface" => array:2 [▶]
"Psr\Http\Message\ResponseInterface" => array:2 [▶]
"Illuminate\Contracts\Routing\ResponseFactory" => array:2 [▶]
"Illuminate\Contracts\Http\Kernel" => array:2 [▶]
"Illuminate\Contracts\Console\Kernel" => array:2 [▶]
"Illuminate\Contracts\Debug\ExceptionHandler" => array:2 [▶]
"env" => array:2 [▶]
"auth" => array:2 [▶]
"auth.driver" => array:2 [▶]
"Illuminate\Contracts\Auth\Authenticatable" => array:2 [▶]
"Illuminate\Contracts\Auth\Access\Gate" => array:2 [▶]
"cookie" => array:2 [▶]
"Faker\Generator" => array:2 [▶]
"Illuminate\Database\Eloquent\Factory" => array:2 [▶]
"Illuminate\Contracts\Queue\EntityResolver" => array:2 [▶]
"db.factory" => array:2 [▶]
"db" => array:2 [▶]
"db.connection" => array:2 [▶]
"encrypter" => array:2 [▶]
"files" => array:2 [▶]
"filesystem" => array:2 [▶]
"filesystem.disk" => array:2 [▶]
"filesystem.cloud" => array:2 [▶]
"session" => array:2 [▶]
"session.store" => array:2 [▶]
"Illuminate\Session\Middleware\StartSession" => array:2 [▶]
"view.engine.resolver" => array:2 [▶]
"view.finder" => array:2 [▶]
"view" => array:2 [▶]
"captcha" => array:2 [▼
"concrete" => Closure {#77 ▼
class: "Illuminate\Container\Container"
this: Application {#3 …}
parameters: {▶}
use: {▼
$abstract: "captcha"
$concrete: "App\Vendors\Mews\Captcha\Captcha"
}
file: "/var/www/html/amzpro/vendor/laravel/framework/src/Illuminate/Container/Container.php"
line: "227 to 231"
}
"shared" => false
]
]
Please provide me the way to run custom check function for the captcha.
from Newest questions tagged laravel-5 - Stack Overflow https://ift.tt/2IqRKay
via IFTTT
Aucun commentaire:
Enregistrer un commentaire