Commit 8195fc24005c73b97f21ea1eaa89d50a6ab865d8

Authored by Yarik
1 parent 61f6789b

Models

common/models/User.php
1 <?php 1 <?php
2 -namespace common\models;  
3 -  
4 -use Yii;  
5 -use yii\base\NotSupportedException;  
6 -use yii\behaviors\TimestampBehavior;  
7 -use yii\db\ActiveRecord;  
8 -use yii\web\IdentityInterface;  
9 -  
10 -/**  
11 - * User model  
12 - *  
13 - * @property integer $id  
14 - * @property string $username  
15 - * @property string $password_hash  
16 - * @property string $password_reset_token  
17 - * @property string $email  
18 - * @property string $auth_key  
19 - * @property integer $status  
20 - * @property integer $created_at  
21 - * @property integer $updated_at  
22 - * @property string $password write-only password  
23 - */  
24 -class User extends ActiveRecord implements IdentityInterface  
25 -{  
26 - const STATUS_DELETED = 0;  
27 - const STATUS_ACTIVE = 10;  
28 -  
29 -  
30 - /**  
31 - * @inheritdoc  
32 - */  
33 - public static function tableName()  
34 - {  
35 - return '{{%user}}';  
36 - }  
37 -  
38 - /**  
39 - * @inheritdoc  
40 - */  
41 - public function behaviors()  
42 - {  
43 - return [  
44 - TimestampBehavior::className(),  
45 - ];  
46 - }  
47 -  
48 - /**  
49 - * @inheritdoc  
50 - */  
51 - public function rules()  
52 - {  
53 - return [  
54 - ['status', 'default', 'value' => self::STATUS_ACTIVE],  
55 - ['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]],  
56 - ];  
57 - }  
58 -  
59 - /**  
60 - * @inheritdoc  
61 - */  
62 - public static function findIdentity($id)  
63 - {  
64 - return static::findOne(['id' => $id, 'status' => self::STATUS_ACTIVE]);  
65 - }  
66 -  
67 - /**  
68 - * @inheritdoc  
69 - */  
70 - public static function findIdentityByAccessToken($token, $type = null)  
71 - {  
72 - throw new NotSupportedException('"findIdentityByAccessToken" is not implemented.');  
73 - }  
74 -  
75 - /**  
76 - * Finds user by username 2 + namespace common\models;
  3 +
  4 + use frontend\models\UserData;
  5 + use frontend\models\UserPassport;
  6 + use Yii;
  7 + use yii\base\NotSupportedException;
  8 + use yii\behaviors\TimestampBehavior;
  9 + use yii\db\ActiveRecord;
  10 + use yii\web\IdentityInterface;
  11 +
  12 + /**
  13 + * User model
77 * 14 *
78 - * @param string $username  
79 - * @return static|null  
80 - */  
81 - public static function findByUsername($username)  
82 - {  
83 - return static::findOne(['username' => $username, 'status' => self::STATUS_ACTIVE]);  
84 - }  
85 -  
86 - /**  
87 - * Finds user by password reset token  
88 - *  
89 - * @param string $token password reset token  
90 - * @return static|null  
91 - */  
92 - public static function findByPasswordResetToken($token)  
93 - {  
94 - if (!static::isPasswordResetTokenValid($token)) {  
95 - return null;  
96 - }  
97 -  
98 - return static::findOne([  
99 - 'password_reset_token' => $token,  
100 - 'status' => self::STATUS_ACTIVE,  
101 - ]);  
102 - }  
103 -  
104 - /**  
105 - * Finds out if password reset token is valid  
106 - *  
107 - * @param string $token password reset token  
108 - * @return bool  
109 - */  
110 - public static function isPasswordResetTokenValid($token)  
111 - {  
112 - if (empty($token)) {  
113 - return false; 15 + * @property integer $id
  16 + * @property string $username
  17 + * @property string $password_hash
  18 + * @property string $password_reset_token
  19 + * @property string $email
  20 + * @property string $auth_key
  21 + * @property integer $status
  22 + * @property integer $created_at
  23 + * @property integer $updated_at
  24 + * @property string $password write-only password
  25 + * @property UserData $userData
  26 + * @property UserPassport $userPassport
  27 + */
  28 + class User extends ActiveRecord implements IdentityInterface
  29 + {
  30 + const STATUS_DELETED = 0;
  31 + const STATUS_ACTIVE = 10;
  32 +
  33 + /**
  34 + * @inheritdoc
  35 + */
  36 + public static function tableName()
  37 + {
  38 + return '{{%user}}';
  39 + }
  40 +
  41 + /**
  42 + * @inheritdoc
  43 + */
  44 + public function behaviors()
  45 + {
  46 + return [
  47 + TimestampBehavior::className(),
  48 + ];
  49 + }
  50 +
  51 + /**
  52 + * @inheritdoc
  53 + */
  54 + public function rules()
  55 + {
  56 + return [
  57 + [
  58 + 'status',
  59 + 'default',
  60 + 'value' => self::STATUS_ACTIVE,
  61 + ],
  62 + [
  63 + 'status',
  64 + 'in',
  65 + 'range' => [
  66 + self::STATUS_ACTIVE,
  67 + self::STATUS_DELETED,
  68 + ],
  69 + ],
  70 + ];
  71 + }
  72 +
  73 + /**
  74 + * @inheritdoc
  75 + */
  76 + public static function findIdentity($id)
  77 + {
  78 + return static::findOne(
  79 + [
  80 + 'id' => $id,
  81 + 'status' => self::STATUS_ACTIVE,
  82 + ]
  83 + );
  84 + }
  85 +
  86 + /**
  87 + * @inheritdoc
  88 + */
  89 + public static function findIdentityByAccessToken($token, $type = null)
  90 + {
  91 + throw new NotSupportedException('"findIdentityByAccessToken" is not implemented.');
  92 + }
  93 +
  94 + /**
  95 + * Finds user by username
  96 + *
  97 + * @param string $username
  98 + *
  99 + * @return static|null
  100 + */
  101 + public static function findByUsername($username)
  102 + {
  103 + return static::findOne(
  104 + [
  105 + 'username' => $username,
  106 + 'status' => self::STATUS_ACTIVE,
  107 + ]
  108 + );
  109 + }
  110 +
  111 + /**
  112 + * Finds user by password reset token
  113 + *
  114 + * @param string $token password reset token
  115 + *
  116 + * @return static|null
  117 + */
  118 + public static function findByPasswordResetToken($token)
  119 + {
  120 + if (!static::isPasswordResetTokenValid($token)) {
  121 + return null;
  122 + }
  123 +
  124 + return static::findOne(
  125 + [
  126 + 'password_reset_token' => $token,
  127 + 'status' => self::STATUS_ACTIVE,
  128 + ]
  129 + );
  130 + }
  131 +
  132 + /**
  133 + * Finds out if password reset token is valid
  134 + *
  135 + * @param string $token password reset token
  136 + *
  137 + * @return bool
  138 + */
  139 + public static function isPasswordResetTokenValid($token)
  140 + {
  141 + if (empty( $token )) {
  142 + return false;
  143 + }
  144 +
  145 + $timestamp = (int) substr($token, strrpos($token, '_') + 1);
  146 + $expire = Yii::$app->params[ 'user.passwordResetTokenExpire' ];
  147 + return $timestamp + $expire >= time();
  148 + }
  149 +
  150 + /**
  151 + * @inheritdoc
  152 + */
  153 + public function getId()
  154 + {
  155 + return $this->getPrimaryKey();
  156 + }
  157 +
  158 + /**
  159 + * @inheritdoc
  160 + */
  161 + public function getAuthKey()
  162 + {
  163 + return $this->auth_key;
  164 + }
  165 +
  166 + /**
  167 + * @inheritdoc
  168 + */
  169 + public function validateAuthKey($authKey)
  170 + {
  171 + return $this->getAuthKey() === $authKey;
  172 + }
  173 +
  174 + /**
  175 + * Validates password
  176 + *
  177 + * @param string $password password to validate
  178 + *
  179 + * @return bool if password provided is valid for current user
  180 + */
  181 + public function validatePassword($password)
  182 + {
  183 + return Yii::$app->security->validatePassword($password, $this->password_hash);
  184 + }
  185 +
  186 + /**
  187 + * Generates password hash from password and sets it to the model
  188 + *
  189 + * @param string $password
  190 + */
  191 + public function setPassword($password)
  192 + {
  193 + $this->password_hash = Yii::$app->security->generatePasswordHash($password);
  194 + }
  195 +
  196 + /**
  197 + * Generates "remember me" authentication key
  198 + */
  199 + public function generateAuthKey()
  200 + {
  201 + $this->auth_key = Yii::$app->security->generateRandomString();
  202 + }
  203 +
  204 + /**
  205 + * Generates new password reset token
  206 + */
  207 + public function generatePasswordResetToken()
  208 + {
  209 + $this->password_reset_token = Yii::$app->security->generateRandomString() . '_' . time();
  210 + }
  211 +
  212 + /**
  213 + * Removes password reset token
  214 + */
  215 + public function removePasswordResetToken()
  216 + {
  217 + $this->password_reset_token = null;
  218 + }
  219 +
  220 + public function getUserData()
  221 + {
  222 + return $this->hasOne(UserData::className(), [ 'user_id' => 'id' ]);
  223 + }
  224 +
  225 + public function getUserPassport()
  226 + {
  227 + return $this->hasOne(UserPassport::className(), [ 'user_id' => 'id' ]);
114 } 228 }
115 -  
116 - $timestamp = (int) substr($token, strrpos($token, '_') + 1);  
117 - $expire = Yii::$app->params['user.passwordResetTokenExpire'];  
118 - return $timestamp + $expire >= time();  
119 - }  
120 -  
121 - /**  
122 - * @inheritdoc  
123 - */  
124 - public function getId()  
125 - {  
126 - return $this->getPrimaryKey();  
127 - }  
128 -  
129 - /**  
130 - * @inheritdoc  
131 - */  
132 - public function getAuthKey()  
133 - {  
134 - return $this->auth_key;  
135 - }  
136 -  
137 - /**  
138 - * @inheritdoc  
139 - */  
140 - public function validateAuthKey($authKey)  
141 - {  
142 - return $this->getAuthKey() === $authKey;  
143 - }  
144 -  
145 - /**  
146 - * Validates password  
147 - *  
148 - * @param string $password password to validate  
149 - * @return bool if password provided is valid for current user  
150 - */  
151 - public function validatePassword($password)  
152 - {  
153 - return Yii::$app->security->validatePassword($password, $this->password_hash);  
154 - }  
155 -  
156 - /**  
157 - * Generates password hash from password and sets it to the model  
158 - *  
159 - * @param string $password  
160 - */  
161 - public function setPassword($password)  
162 - {  
163 - $this->password_hash = Yii::$app->security->generatePasswordHash($password);  
164 - }  
165 -  
166 - /**  
167 - * Generates "remember me" authentication key  
168 - */  
169 - public function generateAuthKey()  
170 - {  
171 - $this->auth_key = Yii::$app->security->generateRandomString();  
172 - }  
173 -  
174 - /**  
175 - * Generates new password reset token  
176 - */  
177 - public function generatePasswordResetToken()  
178 - {  
179 - $this->password_reset_token = Yii::$app->security->generateRandomString() . '_' . time();  
180 - }  
181 -  
182 - /**  
183 - * Removes password reset token  
184 - */  
185 - public function removePasswordResetToken()  
186 - {  
187 - $this->password_reset_token = null;  
188 } 229 }
189 -}  
frontend/controllers/CabinetController.php
1 <?php 1 <?php
2 namespace frontend\controllers; 2 namespace frontend\controllers;
3 3
  4 + use common\models\User;
  5 + use frontend\models\UserData;
  6 + use frontend\models\UserPassport;
4 use yii\web\Controller; 7 use yii\web\Controller;
5 8
6 /** 9 /**
@@ -24,7 +27,21 @@ @@ -24,7 +27,21 @@
24 */ 27 */
25 public function actionIndex() 28 public function actionIndex()
26 { 29 {
27 - return $this->render('index'); 30 + \Yii::$app->user->login(User::findOne(1));
  31 + /**
  32 + * @var User $user
  33 + */
  34 + $user = \Yii::$app->user->identity;
  35 + if(!$userData = $user->userData) {
  36 + $userData = new UserData();
  37 + }
  38 + if(!$userPassport = $user->userPassport) {
  39 + $userPassport = new UserPassport();
  40 + }
  41 + return $this->render('index', [
  42 + 'userData' => $userData,
  43 + 'userPassport' => $userPassport,
  44 + ]);
28 } 45 }
29 46
30 } 47 }
frontend/models/CreativeRole.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace frontend\models;
  4 +
  5 +/**
  6 + * This is the model class for table "creative_role".
  7 + *
  8 + * @property integer $id
  9 + * @property integer $intellectual_property_id
  10 + * @property string $title
  11 + * @property string $name
  12 + * @property double $part
  13 + * @property string $code
  14 + * @property string $iri
  15 + * @property string $society
  16 + *
  17 + * @property IntellectualProperty $intellectualProperty
  18 + */
  19 +class CreativeRole extends \yii\db\ActiveRecord
  20 +{
  21 + /**
  22 + * @inheritdoc
  23 + */
  24 + public static function tableName()
  25 + {
  26 + return 'creative_role';
  27 + }
  28 +
  29 + /**
  30 + * @inheritdoc
  31 + */
  32 + public function rules()
  33 + {
  34 + return [
  35 + [['intellectual_property_id'], 'integer'],
  36 + [['part'], 'number'],
  37 + [['title', 'name', 'code', 'iri', 'society'], 'string', 'max' => 255],
  38 + [['intellectual_property_id'], 'exist', 'skipOnError' => true, 'targetClass' => IntellectualProperty::className(), 'targetAttribute' => ['intellectual_property_id' => 'id']],
  39 + ];
  40 + }
  41 +
  42 + /**
  43 + * @inheritdoc
  44 + */
  45 + public function attributeLabels()
  46 + {
  47 + return [
  48 + 'id' => 'ID',
  49 + 'intellectual_property_id' => 'Intellectual Property ID',
  50 + 'title' => 'Title',
  51 + 'name' => 'Name',
  52 + 'part' => 'Part',
  53 + 'code' => 'Code',
  54 + 'iri' => 'Iri',
  55 + 'society' => 'Society',
  56 + ];
  57 + }
  58 +
  59 + /**
  60 + * @return \yii\db\ActiveQuery
  61 + */
  62 + public function getIntellectualProperty()
  63 + {
  64 + return $this->hasOne(IntellectualProperty::className(), ['id' => 'intellectual_property_id']);
  65 + }
  66 +}
frontend/models/IntellectualProperty.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace frontend\models;
  4 +
  5 +use common\models\User;
  6 +
  7 +/**
  8 + * This is the model class for table "intellectual_property".
  9 + *
  10 + * @property integer $id
  11 + * @property integer $user_id
  12 + * @property string $title
  13 + * @property integer $creation_date
  14 + * @property string $code
  15 + * @property string $genre
  16 + * @property integer $registration_date
  17 + * @property string $contract
  18 + * @property string $type
  19 + *
  20 + * @property CreativeRole[] $creativeRoles
  21 + * @property User $user
  22 + * @property Report[] $reports
  23 + */
  24 +class IntellectualProperty extends \yii\db\ActiveRecord
  25 +{
  26 + /**
  27 + * @inheritdoc
  28 + */
  29 + public static function tableName()
  30 + {
  31 + return 'intellectual_property';
  32 + }
  33 +
  34 + /**
  35 + * @inheritdoc
  36 + */
  37 + public function rules()
  38 + {
  39 + return [
  40 + [['user_id', 'creation_date', 'registration_date'], 'integer'],
  41 + [['title', 'code', 'genre', 'contract', 'type'], 'string', 'max' => 255],
  42 + [['user_id'], 'exist', 'skipOnError' => true, 'targetClass' => User::className(), 'targetAttribute' => ['user_id' => 'id']],
  43 + ];
  44 + }
  45 +
  46 + /**
  47 + * @inheritdoc
  48 + */
  49 + public function attributeLabels()
  50 + {
  51 + return [
  52 + 'id' => 'ID',
  53 + 'user_id' => 'User ID',
  54 + 'title' => 'Title',
  55 + 'creation_date' => 'Creation Date',
  56 + 'code' => 'Code',
  57 + 'genre' => 'Genre',
  58 + 'registration_date' => 'Registration Date',
  59 + 'contract' => 'Contract',
  60 + 'type' => 'Type',
  61 + ];
  62 + }
  63 +
  64 + /**
  65 + * @return \yii\db\ActiveQuery
  66 + */
  67 + public function getCreativeRoles()
  68 + {
  69 + return $this->hasMany(CreativeRole::className(), ['intellectual_property_id' => 'id']);
  70 + }
  71 +
  72 + /**
  73 + * @return \yii\db\ActiveQuery
  74 + */
  75 + public function getUser()
  76 + {
  77 + return $this->hasOne(User::className(), ['id' => 'user_id']);
  78 + }
  79 +
  80 + /**
  81 + * @return \yii\db\ActiveQuery
  82 + */
  83 + public function getReports()
  84 + {
  85 + return $this->hasMany(Report::className(), ['intellectual_property_id' => 'id']);
  86 + }
  87 +}
frontend/models/Report.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace frontend\models;
  4 +
  5 +/**
  6 + * This is the model class for table "report".
  7 + *
  8 + * @property integer $id
  9 + * @property integer $intellectual_property_id
  10 + * @property string $title
  11 + * @property string $artist
  12 + * @property string $music_author
  13 + * @property string $text_author
  14 + * @property integer $time
  15 + * @property integer $total_time
  16 + * @property double $royalty
  17 + * @property integer $count
  18 + *
  19 + * @property IntellectualProperty $intellectualProperty
  20 + */
  21 +class Report extends \yii\db\ActiveRecord
  22 +{
  23 + /**
  24 + * @inheritdoc
  25 + */
  26 + public static function tableName()
  27 + {
  28 + return 'report';
  29 + }
  30 +
  31 + /**
  32 + * @inheritdoc
  33 + */
  34 + public function rules()
  35 + {
  36 + return [
  37 + [['intellectual_property_id', 'time', 'total_time', 'count'], 'integer'],
  38 + [['royalty'], 'number'],
  39 + [['title', 'artist', 'music_author', 'text_author'], 'string', 'max' => 255],
  40 + [['intellectual_property_id'], 'exist', 'skipOnError' => true, 'targetClass' => IntellectualProperty::className(), 'targetAttribute' => ['intellectual_property_id' => 'id']],
  41 + ];
  42 + }
  43 +
  44 + /**
  45 + * @inheritdoc
  46 + */
  47 + public function attributeLabels()
  48 + {
  49 + return [
  50 + 'id' => 'ID',
  51 + 'intellectual_property_id' => 'Intellectual Property ID',
  52 + 'title' => 'Title',
  53 + 'artist' => 'Artist',
  54 + 'music_author' => 'Music Author',
  55 + 'text_author' => 'Text Author',
  56 + 'time' => 'Time',
  57 + 'total_time' => 'Total Time',
  58 + 'royalty' => 'Royalty',
  59 + 'count' => 'Count',
  60 + ];
  61 + }
  62 +
  63 + /**
  64 + * @return \yii\db\ActiveQuery
  65 + */
  66 + public function getIntellectualProperty()
  67 + {
  68 + return $this->hasOne(IntellectualProperty::className(), ['id' => 'intellectual_property_id']);
  69 + }
  70 +}
frontend/models/UserData.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace frontend\models;
  4 +
  5 +use common\models\User;
  6 +
  7 +/**
  8 + * This is the model class for table "user_data".
  9 + *
  10 + * @property integer $id
  11 + * @property integer $user_id
  12 + * @property string $name
  13 + * @property string $surname
  14 + * @property string $patronymic
  15 + * @property string $phone
  16 + * @property string $email
  17 + * @property string $inn
  18 + *
  19 + * @property User $user
  20 + */
  21 +class UserData extends \yii\db\ActiveRecord
  22 +{
  23 + /**
  24 + * @inheritdoc
  25 + */
  26 + public static function tableName()
  27 + {
  28 + return 'user_data';
  29 + }
  30 +
  31 + /**
  32 + * @inheritdoc
  33 + */
  34 + public function rules()
  35 + {
  36 + return [
  37 + [['user_id'], 'integer'],
  38 + [['name', 'surname', 'patronymic', 'phone', 'email', 'inn'], 'string', 'max' => 255],
  39 + [['user_id'], 'exist', 'skipOnError' => true, 'targetClass' => User::className(), 'targetAttribute' => ['user_id' => 'id']],
  40 + ];
  41 + }
  42 +
  43 + /**
  44 + * @inheritdoc
  45 + */
  46 + public function attributeLabels()
  47 + {
  48 + return [
  49 + 'id' => 'ID',
  50 + 'user_id' => 'User ID',
  51 + 'name' => 'Name',
  52 + 'surname' => 'Surname',
  53 + 'patronymic' => 'Patronymic',
  54 + 'phone' => 'Phone',
  55 + 'email' => 'Email',
  56 + 'inn' => 'Inn',
  57 + ];
  58 + }
  59 +
  60 + /**
  61 + * @return \yii\db\ActiveQuery
  62 + */
  63 + public function getUser()
  64 + {
  65 + return $this->hasOne(User::className(), ['id' => 'user_id']);
  66 + }
  67 +}
frontend/models/UserPassport.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace frontend\models;
  4 +
  5 +use common\models\User;
  6 +
  7 +/**
  8 + * This is the model class for table "user_passport".
  9 + *
  10 + * @property integer $id
  11 + * @property integer $user_id
  12 + * @property string $series
  13 + * @property string $number
  14 + * @property string $birthday
  15 + * @property string $given_by
  16 + *
  17 + * @property User $user
  18 + */
  19 +class UserPassport extends \yii\db\ActiveRecord
  20 +{
  21 + /**
  22 + * @inheritdoc
  23 + */
  24 + public static function tableName()
  25 + {
  26 + return 'user_passport';
  27 + }
  28 +
  29 + /**
  30 + * @inheritdoc
  31 + */
  32 + public function rules()
  33 + {
  34 + return [
  35 + [['user_id'], 'integer'],
  36 + [['given_by'], 'string'],
  37 + [['series', 'number', 'birthday'], 'string', 'max' => 255],
  38 + [['user_id'], 'exist', 'skipOnError' => true, 'targetClass' => User::className(), 'targetAttribute' => ['user_id' => 'id']],
  39 + ];
  40 + }
  41 +
  42 + /**
  43 + * @inheritdoc
  44 + */
  45 + public function attributeLabels()
  46 + {
  47 + return [
  48 + 'id' => 'ID',
  49 + 'user_id' => 'User ID',
  50 + 'series' => 'Series',
  51 + 'number' => 'Number',
  52 + 'birthday' => 'Birthday',
  53 + 'given_by' => 'Given By',
  54 + ];
  55 + }
  56 +
  57 + /**
  58 + * @return \yii\db\ActiveQuery
  59 + */
  60 + public function getUser()
  61 + {
  62 + return $this->hasOne(User::className(), ['id' => 'user_id']);
  63 + }
  64 +}