ognyk / yii2-login-blocker
Block/ban login for few minutes after 3 wrong login times.
Installs: 653
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Type:yii2-extension
Requires
- yiisoft/yii2: ~2.0.0
- yiisoft/yii2-redis: ^2.0
This package is not auto-updated.
Last update: 2025-04-27 07:23:29 UTC
README
Block/ban login for few minutes after 3 wrong login times.
Installation
The preferred way to install this extension is through Composer.
Either run
php composer.phar require --prefer-dist ognyk/yii2-login-blocker
or add
"ognyk/yii2-login-blocker": "*"
to the require
section of your composer.json
file.
Usage
-
Add
loginBlocker
component to your Yii2 configuration like this:'components' => [ 'loginBlocker' => [ 'class' => '\ognyk\loginblocker\LoginBlocker' ] ]
-
Methods
loginBlocker
:/* Check if user can login */ \Yii::$app->loginBlocker->check(); /* Increment counter when wrong login or password */ \Yii::$app->loginBlocker->block();
-
Use
loginBlocker
:if (!\Yii::$app->loginBlocker->check()) { return ['error' => 'time_block']; } if ($model->login()) { // ... good action here } else { \Yii::$app->loginBlocker->block(); return ['error' => 'wrong_credentials']; }
Advanced config
-
More parameters:
'components' => [ 'loginBlocker' => [ 'class' => '\ognyk\loginblocker\LoginBlocker', 'time' => 300, // Time to block/ban user in seconds (default 300 sec) 'wrong_login_number' => 3, // Number of wrong attempts (default 3 times) ] ]
-
Notification of block/ban by e-mail:
To use notification by e-mail configure
\Yii::$app->mailer
.All parameters without
mails
are optional.'components' => [ 'loginBlocker' => [ 'class' => '\ognyk\loginblocker\LoginBlocker', 'mail' => [ 'subject' => 'New subject with user IP {ip}', 'content' => 'User IP {ip}<br>Date: {date}<b>{params}', 'sender' => [ 'name' => 'Cezar II', 'mail' => 'mail@mail.com', ], 'mails' => [ 'admin1@mail.com', 'admin2@mail.com', 'admin3@mail.com', ], ] ] ]
-
More information from login action:
You can pass custom params to your alert e-mail.
$params = [ 'Username' => 'Cezar V', 'Server' => 'torr-2378-45' ]; \Yii::$app->loginBlocker->check($params)
-
Insert result to database:
To use database configure
\Yii::$app->db
.You can easily add custom parameters f.e. {params.Username} or {params.Server}.
Example of database table you can find in migrations folder.
'components' => [ 'loginBlocker' => [ 'class' => '\ognyk\loginblocker\LoginBlocker', 'database' => [ 'name' => 'Login_blocker', 'columns' => [ 'ip' => '{ip}', 'created_datetime' => '{date}', 'username' => '{params.Username}', // More parameters from point 3 ] ] ] ]