mirror of
https://github.com/elyby/accounts.git
synced 2024-11-30 02:32:26 +05:30
Добавлено запоминание регистрационного IP адреса
This commit is contained in:
parent
433f560f48
commit
59f51451d0
@ -94,6 +94,7 @@ class RegistrationForm extends ApiForm {
|
|||||||
$account->lang = $this->lang;
|
$account->lang = $this->lang;
|
||||||
$account->status = Account::STATUS_REGISTERED;
|
$account->status = Account::STATUS_REGISTERED;
|
||||||
$account->rules_agreement_version = LATEST_RULES_VERSION;
|
$account->rules_agreement_version = LATEST_RULES_VERSION;
|
||||||
|
$account->setRegistrationIp(Yii::$app->request->getUserIP());
|
||||||
if (!$account->save()) {
|
if (!$account->save()) {
|
||||||
throw new ErrorException('Account not created.');
|
throw new ErrorException('Account not created.');
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@ use const common\LATEST_RULES_VERSION;
|
|||||||
* @property string $lang
|
* @property string $lang
|
||||||
* @property integer $status
|
* @property integer $status
|
||||||
* @property integer $rules_agreement_version
|
* @property integer $rules_agreement_version
|
||||||
|
* @property string $registration_ip
|
||||||
* @property integer $created_at
|
* @property integer $created_at
|
||||||
* @property integer $updated_at
|
* @property integer $updated_at
|
||||||
* @property integer $password_changed_at
|
* @property integer $password_changed_at
|
||||||
@ -198,4 +199,12 @@ class Account extends ActiveRecord {
|
|||||||
return $this->rules_agreement_version === LATEST_RULES_VERSION;
|
return $this->rules_agreement_version === LATEST_RULES_VERSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setRegistrationIp($ip) {
|
||||||
|
$this->registration_ip = $ip === null ? null : inet_pton($ip);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRegistrationIp() {
|
||||||
|
return $this->registration_ip === null ? null : inet_ntop($this->registration_ip);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
15
console/migrations/m160817_225019_registration_ip.php
Normal file
15
console/migrations/m160817_225019_registration_ip.php
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use console\db\Migration;
|
||||||
|
|
||||||
|
class m160817_225019_registration_ip extends Migration {
|
||||||
|
|
||||||
|
public function safeUp() {
|
||||||
|
$this->addColumn('{{%accounts}}', 'registration_ip', 'VARBINARY(16) AFTER rules_agreement_version');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function safeDown() {
|
||||||
|
$this->dropColumn('{{%accounts}}', 'registration_ip');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -9,6 +9,7 @@ use tests\codeception\api\unit\DbTestCase;
|
|||||||
use tests\codeception\common\fixtures\AccountFixture;
|
use tests\codeception\common\fixtures\AccountFixture;
|
||||||
use Yii;
|
use Yii;
|
||||||
use const common\LATEST_RULES_VERSION;
|
use const common\LATEST_RULES_VERSION;
|
||||||
|
use yii\web\Request;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @property array $accounts
|
* @property array $accounts
|
||||||
@ -23,6 +24,7 @@ class RegistrationFormTest extends DbTestCase {
|
|||||||
$mailer->fileTransportCallback = function () {
|
$mailer->fileTransportCallback = function () {
|
||||||
return 'testing_message.eml';
|
return 'testing_message.eml';
|
||||||
};
|
};
|
||||||
|
$this->mockRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown() {
|
protected function tearDown() {
|
||||||
@ -100,6 +102,7 @@ class RegistrationFormTest extends DbTestCase {
|
|||||||
expect('user should be valid', $account)->isInstanceOf(Account::class);
|
expect('user should be valid', $account)->isInstanceOf(Account::class);
|
||||||
expect('password should be correct', $account->validatePassword('some_password'))->true();
|
expect('password should be correct', $account->validatePassword('some_password'))->true();
|
||||||
expect('uuid is set', $account->uuid)->notEmpty();
|
expect('uuid is set', $account->uuid)->notEmpty();
|
||||||
|
expect('registration_ip is set', $account->registration_ip)->notNull();
|
||||||
expect('actual rules version is set', $account->rules_agreement_version)->equals(LATEST_RULES_VERSION);
|
expect('actual rules version is set', $account->rules_agreement_version)->equals(LATEST_RULES_VERSION);
|
||||||
expect('user model exists in database', Account::find()->andWhere([
|
expect('user model exists in database', Account::find()->andWhere([
|
||||||
'username' => 'some_username',
|
'username' => 'some_username',
|
||||||
@ -114,6 +117,21 @@ class RegistrationFormTest extends DbTestCase {
|
|||||||
|
|
||||||
// TODO: там в самой форме есть метод sendMail(), который рано или поздно должен переехать. К нему нужны будут тоже тесты
|
// TODO: там в самой форме есть метод sendMail(), который рано или поздно должен переехать. К нему нужны будут тоже тесты
|
||||||
|
|
||||||
|
private function mockRequest($ip = '88.225.20.236') {
|
||||||
|
$request = $this->getMockBuilder(Request::class)
|
||||||
|
->setMethods(['getUserIP'])
|
||||||
|
->getMock();
|
||||||
|
|
||||||
|
$request
|
||||||
|
->expects($this->any())
|
||||||
|
->method('getUserIP')
|
||||||
|
->will($this->returnValue($ip));
|
||||||
|
|
||||||
|
Yii::$app->set('request', $request);
|
||||||
|
|
||||||
|
return $request;
|
||||||
|
}
|
||||||
|
|
||||||
private function getMessageFile() {
|
private function getMessageFile() {
|
||||||
/** @var \yii\swiftmailer\Mailer $mailer */
|
/** @var \yii\swiftmailer\Mailer $mailer */
|
||||||
$mailer = Yii::$app->mailer;
|
$mailer = Yii::$app->mailer;
|
||||||
|
@ -202,4 +202,24 @@ class AccountTest extends DbTestCase {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testSetRegistrationIp() {
|
||||||
|
$account = new Account();
|
||||||
|
$account->setRegistrationIp('42.72.205.204');
|
||||||
|
$this->assertEquals('42.72.205.204', inet_ntop($account->registration_ip));
|
||||||
|
$account->setRegistrationIp('2001:1620:28:1:b6f:8bca:93:a116');
|
||||||
|
$this->assertEquals('2001:1620:28:1:b6f:8bca:93:a116', inet_ntop($account->registration_ip));
|
||||||
|
$account->setRegistrationIp(null);
|
||||||
|
$this->assertNull($account->registration_ip);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetRegistrationIp() {
|
||||||
|
$account = new Account();
|
||||||
|
$account->setRegistrationIp('42.72.205.204');
|
||||||
|
$this->assertEquals('42.72.205.204', $account->getRegistrationIp());
|
||||||
|
$account->setRegistrationIp('2001:1620:28:1:b6f:8bca:93:a116');
|
||||||
|
$this->assertEquals('2001:1620:28:1:b6f:8bca:93:a116', $account->getRegistrationIp());
|
||||||
|
$account->setRegistrationIp(null);
|
||||||
|
$this->assertNull($account->getRegistrationIp());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user