PHP code example of ggedde / spry-rate-limits
1. Go to this page and download the library: Download ggedde/spry-rate-limits library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
ggedde / spry-rate-limits example snippets
$config->rateLimits = [
'driver' => 'file',
'fileDirectory' => __DIR__.'/rate_limits',
];
Spry::addHook('initialized', 'Spry\\SpryProvider\\SpryRateLimits::initiate');
$config->rateLimits = [
'driver' => 'file',
'fileDirectory' => __DIR__.'/rate_limits',
'excludeTests' => false,
'default' => [
'by' => 'ip',
'limit' => 10,
'within' => 1,
'hook' => 'configure',
'excludeTests' => false
]
];
$config->routes = [
'/auth/login' => [
'label' => 'Auth Login',
'controller' => 'Auth::login',
'access' => 'public',
'methods' => 'POST',
'limits' => [
'by' => 'ip',
'limit' => 1,
'within' => 3,
'excludeTests' => false
],
'params' => [
'email' => [
'
Spry::addFilter('spryRateLimitKeys', function($keys){
$keys['my_key'] = 'some_unique_value';
return $keys;
});
Spry::addHook('setAuth', function($auth){
Spry::addFilter('spryRateLimitKeys', function($keys) use ($auth){
$keys['user_id'] = $auth->user_id;
$keys['account_id'] = $auth->account_id;
return $keys;
});
});
public static function setup()
{
Spry::addHook('setAuth', function($auth){
Spry::addFilter('spryRateLimitKeys', [__CLASS__, 'myMethod'], $auth);
});
}
public static myMethod($keys, $meta, $auth)
{
$keys['user_id'] = $auth->user_id;
$keys['account_id'] = $auth->account_id;
return $keys;
}
$config->routes = [
'/data/get' => [
'label' => 'Get Data',
'controller' => 'SomeComponent::get',
'access' => 'public',
'methods' => 'GET',
'limits' => [
'limit' => 15,
'within' => 15,
'by' => 'user_id'
],
'params' => [
'id' => [
'type' => 'string',
],
],
],
'/users/get' => [
'label' => 'Get User',
'controller' => 'SomeUserComponent::get',
'access' => 'public',
'methods' => 'GET',
'limits' => [
'limit' => 1,
'within' => 1,
'by' => 'account_id'
],
'params' => [
'id' => [
'type' => 'string',
],
],
],
];