Commit 8195fc24005c73b97f21ea1eaa89d50a6ab865d8

Authored by Yarik
1 parent 61f6789b

Models

common/models/User.php
1 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 1 <?php
2 2 namespace frontend\controllers;
3 3  
  4 + use common\models\User;
  5 + use frontend\models\UserData;
  6 + use frontend\models\UserPassport;
4 7 use yii\web\Controller;
5 8  
6 9 /**
... ... @@ -24,7 +27,21 @@
24 27 */
25 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 +}
... ...