Laravel Akismet
Install this package with composer:
composer require nickurt/laravel-akismet
Copy the config files for the api
php artisan vendor:publish --provider="nickurt\Akismet\ServiceProvider" --tag="config"
The Akismet information can be set with environment values in the .env
file (or directly in the config/akismet.php
file)
AKISMET_APIKEY=MY_UNIQUE_APIKEY
AKISMET_BLOGURL=https://my-custom-blogurl.dev
You can use a hidden-field akismet
in your Form-Request to validate if the request is valid
// FormRequest ...
public function rules()
{
return [
'akismet' => [new \nickurt\Akismet\Rules\AkismetRule(
request()->input('email'), request()->input('name')
)]
];
}
// Manually ...
$validator = validator()->make(['akismet' => 'akismet'], ['akismet' => [new \nickurt\Akismet\Rules\AkismetRule(
request()->input('email'), request()->input('name')
)]]);
The AkismetRule
requires a email
and name
parameter to validate the request.
You can listen to the IsSpam
, ReportSpam
and ReportHam
events, e.g. if you want to log all the IsSpam
-requests in your application
This event will be fired when the request contains spam
nickurt\Akismet\Events\IsSpam
This event will be fired when you succesfully reported spam
nickurt\Akismet\Events\ReportSpam
This event will be fired when you succesfully reported ham
nickurt\Akismet\Events\ReportHam
if( \Akismet::validateKey() ) {
// valid
} else {
// invalid
}
\Akismet::setCommentAuthor("John Doe")
->setCommentAuthorUrl("https://www.google.com")
->setCommentContent("It's me, John!")
->setCommentType('registration');
// etc
// or
\Akismet::fill([
'comment_author' => 'John Doe',
'comment_author_url' => 'https://www.google.com',
'comment_content' => 'It's me, John!'
]);
// etc
if( \Akismet::isSpam() ) {
// yes, i'm spam!
}
if( \Akismet::reportSpam() ) {
// yes, thanks!
}
if( \Akismet::reportHam() ) {
// yes, thanks!
}
composer test