Commit 181169e7bbf1f47b346fdf638426d4348e196b3e

Authored by Karnovsky A
2 parents bace91ee c440d9a3

Merge branch 'master' of gitlab.artweb.com.ua:root/new_rukzachok

backend/controllers/SiteController.php
@@ -43,7 +43,6 @@ class SiteController extends Controller @@ -43,7 +43,6 @@ class SiteController extends Controller
43 'verbs' => [ 43 'verbs' => [
44 'class' => VerbFilter::className(), 44 'class' => VerbFilter::className(),
45 'actions' => [ 45 'actions' => [
46 - 'logout' => ['post'],  
47 ], 46 ],
48 ], 47 ],
49 ]; 48 ];
backend/controllers/UserController.php
@@ -5,10 +5,13 @@ namespace backend\controllers; @@ -5,10 +5,13 @@ namespace backend\controllers;
5 use Yii; 5 use Yii;
6 use backend\models\User; 6 use backend\models\User;
7 use backend\models\UserSearch; 7 use backend\models\UserSearch;
  8 +use yii\filters\AccessControl;
8 use yii\web\Controller; 9 use yii\web\Controller;
9 use yii\web\NotFoundHttpException; 10 use yii\web\NotFoundHttpException;
10 use yii\filters\VerbFilter; 11 use yii\filters\VerbFilter;
11 -use developeruz\db_rbac\behaviors\AccessBehavior; 12 +use yii\web\Response;
  13 +use yii\widgets\ActiveForm;
  14 +
12 /** 15 /**
13 * UserController implements the CRUD actions for User model. 16 * UserController implements the CRUD actions for User model.
14 */ 17 */
@@ -19,32 +22,30 @@ class UserController extends Controller @@ -19,32 +22,30 @@ class UserController extends Controller
19 */ 22 */
20 public function behaviors() 23 public function behaviors()
21 { 24 {
  25 +
  26 +
22 return [ 27 return [
23 - 'access'=>[  
24 - 'class' => AccessBehavior::className(),  
25 - 'rules' =>  
26 - ['site' =>  
27 - [  
28 - [  
29 - 'actions' => ['login', 'error'],  
30 - 'allow' => true,  
31 - ]  
32 - ],  
33 - 'user' =>  
34 - [  
35 - [  
36 - 'actions' => ['index', 'create', 'update'],  
37 - 'allow' => true,  
38 - ]  
39 - ]  
40 - ],  
41 - ],  
42 'verbs' => [ 28 'verbs' => [
43 'class' => VerbFilter::className(), 29 'class' => VerbFilter::className(),
44 'actions' => [ 30 'actions' => [
45 'delete' => ['POST'], 31 'delete' => ['POST'],
46 ], 32 ],
47 ], 33 ],
  34 + 'access' => [
  35 + 'class' => AccessControl::className(),
  36 + 'rules' => [
  37 + [
  38 + 'allow' => true,
  39 +// 'actions' => ['login', 'signup'],
  40 + 'roles' => ['admin'],
  41 + ],
  42 + [
  43 +// 'allow' => true,
  44 +// 'actions' => ['logout'],
  45 +// 'roles' => ['@'],
  46 + ],
  47 + ],
  48 + ],
48 ]; 49 ];
49 } 50 }
50 51
@@ -83,8 +84,19 @@ class UserController extends Controller @@ -83,8 +84,19 @@ class UserController extends Controller
83 public function actionCreate() 84 public function actionCreate()
84 { 85 {
85 $model = new User(); 86 $model = new User();
  87 + if (Yii::$app->request->isAjax) {
  88 + Yii::$app->response->format = Response::FORMAT_JSON;
  89 + $model->load(Yii::$app->request->post());
  90 + return ActiveForm::validate($model);
  91 + }else if ($model->load(Yii::$app->request->post()) && $model->validate()) {
  92 + $model->save();
  93 +
  94 + foreach($model->role as $k => $role){
  95 + $auth = Yii::$app->authManager;
  96 + $authorRole = $auth->getRole($role);
  97 + $auth->assign($authorRole, $model->id);
  98 + }
86 99
87 - if ($model->load(Yii::$app->request->post()) && $model->save()) {  
88 return $this->redirect(['view', 'id' => $model->id]); 100 return $this->redirect(['view', 'id' => $model->id]);
89 } else { 101 } else {
90 return $this->render('create', [ 102 return $this->render('create', [
@@ -104,6 +116,11 @@ class UserController extends Controller @@ -104,6 +116,11 @@ class UserController extends Controller
104 $model = $this->findModel($id); 116 $model = $this->findModel($id);
105 117
106 if ($model->load(Yii::$app->request->post()) && $model->save()) { 118 if ($model->load(Yii::$app->request->post()) && $model->save()) {
  119 +
  120 + $auth = Yii::$app->authManager;
  121 + $authorRole = $auth->getRole('author');
  122 + $auth->assign($authorRole, $model->id);
  123 +
107 return $this->redirect(['view', 'id' => $model->id]); 124 return $this->redirect(['view', 'id' => $model->id]);
108 } else { 125 } else {
109 return $this->render('update', [ 126 return $this->render('update', [
backend/models/User.php
@@ -6,8 +6,11 @@ use developeruz\db_rbac\interfaces\UserRbacInterface; @@ -6,8 +6,11 @@ use developeruz\db_rbac\interfaces\UserRbacInterface;
6 use common\models\Share; 6 use common\models\Share;
7 use common\modules\comment\models\Comment; 7 use common\modules\comment\models\Comment;
8 use common\modules\comment\models\Rating; 8 use common\modules\comment\models\Rating;
  9 +use yii\base\NotSupportedException;
9 use Yii; 10 use Yii;
10 - 11 +use yii\behaviors\TimestampBehavior;
  12 +use yii\db\ActiveRecord;
  13 +use yii\web\IdentityInterface;
11 /** 14 /**
12 * This is the model class for table "user". 15 * This is the model class for table "user".
13 * 16 *
@@ -25,8 +28,13 @@ use Yii; @@ -25,8 +28,13 @@ use Yii;
25 * @property Rating[] $ratings 28 * @property Rating[] $ratings
26 * @property Share[] $shares 29 * @property Share[] $shares
27 */ 30 */
28 -class User extends \common\models\User implements UserRbacInterface 31 +class User extends ActiveRecord implements UserRbacInterface, IdentityInterface
29 { 32 {
  33 +
  34 + const STATUS_DELETED = 0;
  35 + const STATUS_ACTIVE = 10;
  36 + public $password;
  37 +
30 /** 38 /**
31 * @inheritdoc 39 * @inheritdoc
32 */ 40 */
@@ -41,16 +49,41 @@ class User extends \common\models\User implements UserRbacInterface @@ -41,16 +49,41 @@ class User extends \common\models\User implements UserRbacInterface
41 public function rules() 49 public function rules()
42 { 50 {
43 return [ 51 return [
44 - [['username', 'auth_key', 'password_hash', 'email'], 'required'], 52 + [['username', 'password', 'email'], 'required'],
45 [['status', 'created_at', 'updated_at'], 'integer'], 53 [['status', 'created_at', 'updated_at'], 'integer'],
46 [['username', 'password_hash', 'password_reset_token', 'email'], 'string', 'max' => 255], 54 [['username', 'password_hash', 'password_reset_token', 'email'], 'string', 'max' => 255],
47 [['auth_key'], 'string', 'max' => 32], 55 [['auth_key'], 'string', 'max' => 32],
48 - [['email'], 'unique'],  
49 [['password_reset_token'], 'unique'], 56 [['password_reset_token'], 'unique'],
50 - [['username'], 'unique'], 57 + ['email', 'unique', 'targetClass' => '\backend\models\User', 'message' => Yii::t('app','message',[
  58 + 'field' => 'Email'
  59 + ])],
  60 + ];
  61 + }
  62 +
  63 +
  64 + /**
  65 + * @inheritdoc
  66 + */
  67 + public function behaviors()
  68 + {
  69 + return [
  70 + TimestampBehavior::className(),
  71 + [
  72 + 'class' => 'common\behaviors\ShowImage',
  73 + ],
51 ]; 74 ];
52 } 75 }
53 76
  77 +
  78 + public function beforeSave($insert)
  79 + {
  80 + $this->setPassword($this->password);
  81 + $this->generateAuthKey();
  82 + return parent::beforeSave($insert);
  83 + }
  84 +
  85 +
  86 +
54 /** 87 /**
55 * @inheritdoc 88 * @inheritdoc
56 */ 89 */
@@ -69,6 +102,74 @@ class User extends \common\models\User implements UserRbacInterface @@ -69,6 +102,74 @@ class User extends \common\models\User implements UserRbacInterface
69 ]; 102 ];
70 } 103 }
71 104
  105 +
  106 + /**
  107 + * Generates "remember me" authentication key
  108 + */
  109 + public function generateAuthKey()
  110 + {
  111 + $this->auth_key = Yii::$app->security->generateRandomString();
  112 + }
  113 +
  114 + /**
  115 + * Generates password hash from password and sets it to the model
  116 + *
  117 + * @param string $password
  118 + */
  119 + public function setPassword($password)
  120 + {
  121 + $this->password_hash = Yii::$app->security->generatePasswordHash($password);
  122 + }
  123 +
  124 +
  125 +
  126 +
  127 +
  128 + public function getRole(){
  129 + return !empty($this->id) ? \Yii::$app->authManager->getRolesByUser($this->id) : "";
  130 + }
  131 +
  132 + /**
  133 + * @inheritdoc
  134 + */
  135 + public function getId()
  136 + {
  137 + return $this->getPrimaryKey();
  138 + }
  139 +
  140 + /**
  141 + * @inheritdoc
  142 + */
  143 + public function getAuthKey()
  144 + {
  145 + return $this->auth_key;
  146 + }
  147 +
  148 + /**
  149 + * @inheritdoc
  150 + */
  151 + public function validateAuthKey($authKey)
  152 + {
  153 + return $this->getAuthKey() === $authKey;
  154 + }
  155 +
  156 +
  157 + /**
  158 + * @inheritdoc
  159 + */
  160 + public static function findIdentityByAccessToken($token, $type = null)
  161 + {
  162 + throw new NotSupportedException('"findIdentityByAccessToken" is not implemented.');
  163 + }
  164 +
  165 + /**
  166 + * @inheritdoc
  167 + */
  168 + public static function findIdentity($id)
  169 + {
  170 + return static::findOne(['id' => $id, 'status' => self::STATUS_ACTIVE]);
  171 + }
  172 +
72 /** 173 /**
73 * @return \yii\db\ActiveQuery 174 * @return \yii\db\ActiveQuery
74 */ 175 */
@@ -93,19 +194,11 @@ class User extends \common\models\User implements UserRbacInterface @@ -93,19 +194,11 @@ class User extends \common\models\User implements UserRbacInterface
93 return $this->hasMany(Share::className(), ['user_id' => 'id']); 194 return $this->hasMany(Share::className(), ['user_id' => 'id']);
94 } 195 }
95 196
96 - public function getId()  
97 - {  
98 - return $this->getPrimaryKey();  
99 - }  
100 197
101 public function getUserName() 198 public function getUserName()
102 { 199 {
103 return $this->username; 200 return $this->username;
104 } 201 }
105 202
106 - public static function findIdentity($id)  
107 - {  
108 - return static::findOne(['id' => $id, 'status' => self::STATUS_ACTIVE]);  
109 - }  
110 203
111 } 204 }
backend/views/layouts/header.php
@@ -6,9 +6,11 @@ @@ -6,9 +6,11 @@
6 use yii\helpers\Html; 6 use yii\helpers\Html;
7 use yii\bootstrap\Nav; 7 use yii\bootstrap\Nav;
8 use yii\bootstrap\NavBar; 8 use yii\bootstrap\NavBar;
  9 +use yii\helpers\Url;
9 use yii\widgets\Breadcrumbs; 10 use yii\widgets\Breadcrumbs;
10 use frontend\assets\AppAsset; 11 use frontend\assets\AppAsset;
11 use common\widgets\Alert; 12 use common\widgets\Alert;
  13 +use yii\widgets\Menu;
12 14
13 AppAsset::register($this); 15 AppAsset::register($this);
14 ?> 16 ?>
@@ -28,31 +30,6 @@ AppAsset::register($this); @@ -28,31 +30,6 @@ AppAsset::register($this);
28 </a> 30 </a>
29 31
30 <div class="navbar-custom-menu"> 32 <div class="navbar-custom-menu">
31 - <?php  
32 - NavBar::begin([  
33 - 'options' => [  
34 - 'class' => 'navbar-inverse navbar-fixed-top',  
35 - ],  
36 - ]);  
37 - if (Yii::$app->user->isGuest) {  
38 - $menuItems[] = ['label' => 'Signup', 'url' => ['/site/signup']];  
39 - $menuItems[] = ['label' => 'Login', 'url' => ['/site/login']];  
40 - } else {  
41 - $menuItems[] = '<li>'  
42 - . Html::beginForm(['/site/logout'], 'post')  
43 - . Html::submitButton(  
44 - 'Logout (' . Yii::$app->user->identity->username . ')',  
45 - ['class' => 'btn btn-link']  
46 - )  
47 - . Html::endForm()  
48 - . '</li>';  
49 - }  
50 - echo Nav::widget([  
51 - 'options' => ['class' => 'navbar-nav navbar-right'],  
52 - 'items' => $menuItems,  
53 - ]);  
54 - NavBar::end();  
55 - ?>  
56 </div> 33 </div>
57 </nav> 34 </nav>
58 </header> 35 </header>
59 \ No newline at end of file 36 \ No newline at end of file
backend/views/layouts/main-sidebar.php
@@ -4,70 +4,84 @@ use yii\widgets\Menu; @@ -4,70 +4,84 @@ use yii\widgets\Menu;
4 <aside class="main-sidebar"> 4 <aside class="main-sidebar">
5 <!-- sidebar: style can be found in sidebar.less --> 5 <!-- sidebar: style can be found in sidebar.less -->
6 <section class="sidebar"> 6 <section class="sidebar">
7 - <?=  
8 - Menu::widget([  
9 - 'options' => ['class' => 'sidebar-menu'],  
10 - 'submenuTemplate' => "\n<ul class='treeview-menu'>\n{items}\n</ul>\n", 7 + <?php
  8 +
  9 + $items = [
  10 + ['label' => 'Заказы', 'url' => ['/orders/index'], 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-shopping-cart"></i> <span>{label}</span></a>'],
  11 + [
  12 + 'label' => 'eCommerce',
  13 + 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-barcode"></i> <span>{label}</span></a>',
  14 + 'url' => ['/product/manage'],
  15 + 'items' => [
  16 + ['label' => 'Товары', 'url' => ['/product/manage']],
  17 + ['label' => 'Категории', 'url' => ['/category']],
  18 + ['label' => 'Бренды', 'url' => ['/brand']],
  19 + ['label' => 'Характеристики', 'url' => ['/rubrication/tax-group']],
  20 + ['label' => 'Единицы измерения', 'url' => ['/product/product-unit']],
  21 + ['label' => 'Статистика импорта', 'url' => ['/product/manage/import-stat']],
  22 + ]
  23 + ],
  24 + [
  25 + 'label' => 'Слайдер/Банеры',
  26 + 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-barcode"></i> <span>{label}</span></a>',
  27 + 'items' => [
  28 + ['label' => 'Слайдер', 'url' => ['/slider/index']],
  29 + ['label' => 'Банер', 'url' => ['/banner/index']],
  30 + ]
  31 + ],
  32 + [
  33 + 'label' => 'Характеристики',
  34 + 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-search"></i> <span>{label}</span></a>',
  35 + 'url' => ['/rubrication/tax-group'],
  36 + 'items' => [
  37 + ['label' => 'Характеристики', 'url' => ['/rubrication/tax-group']],
  38 + ['label' => 'Зависимости', 'url' => ['/relation/manage']]
  39 + ]
  40 + ],
  41 + ['label' => 'Текстовые страницы', 'url' => ['/page/index']],
  42 + ['label' => 'Статьи', 'url' => ['/articles/index']],
  43 + ['label' => 'Акции', 'url' => ['/event/index']],
  44 + [
  45 + 'label' => 'SEO',
  46 + 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-search"></i> <span>{label}</span></a>',
  47 + 'items' => [
  48 + ['label' => 'URL', 'url' => ['/seo/index']],
  49 + ['label' => 'Шаблоны', 'url' => ['/seo-category/index']]
  50 + ]
  51 + ],
  52 + ['label' => 'Фон', 'url' => ['/bg/index']],
  53 + ['label' => 'Подписка', 'url' => ['/subscribe/index']],
  54 + ['label' => 'Пользователи', 'url' => ['/customer/index']],
  55 + ['label' => 'Группы пользователей', 'url' => ['/group/index']],
  56 + [
  57 + 'label' => 'Настройка ролей',
  58 + 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-search"></i> <span>{label}</span></a>',
  59 + 'items' => [
  60 + ['label' => 'Администраторы', 'url' => ['/user/index']],
  61 + ['label' => 'управление ролями', 'url' => ['/permit/access/role']],
  62 + ['label' => 'управление правами доступа', 'url' => ['/permit/access/permission']]
  63 + ]
  64 + ],
11 65
12 - 'items' => [  
13 - ['label' => 'Заказы', 'url' => ['/orders/index'], 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-shopping-cart"></i> <span>{label}</span></a>'],  
14 - [  
15 - 'label' => 'eCommerce',  
16 - 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-barcode"></i> <span>{label}</span></a>',  
17 - 'url' => ['/product/manage'],  
18 - 'items' => [  
19 - ['label' => 'Товары', 'url' => ['/product/manage']],  
20 - ['label' => 'Категории', 'url' => ['/category']],  
21 - ['label' => 'Бренды', 'url' => ['/brand']],  
22 - ['label' => 'Характеристики', 'url' => ['/rubrication/tax-group']],  
23 - ['label' => 'Единицы измерения', 'url' => ['/product/product-unit']],  
24 - ['label' => 'Статистика импорта', 'url' => ['/product/manage/import-stat']],  
25 - ]  
26 - ],  
27 - [  
28 - 'label' => 'Слайдер/Банеры',  
29 - 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-barcode"></i> <span>{label}</span></a>',  
30 - 'items' => [  
31 - ['label' => 'Слайдер', 'url' => ['/slider/index']],  
32 - ['label' => 'Банер', 'url' => ['/banner/index']],  
33 - ]  
34 - ],  
35 - [  
36 - 'label' => 'Характеристики',  
37 - 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-search"></i> <span>{label}</span></a>',  
38 - 'url' => ['/rubrication/tax-group'],  
39 - 'items' => [  
40 - ['label' => 'Характеристики', 'url' => ['/rubrication/tax-group']],  
41 - ['label' => 'Зависимости', 'url' => ['/relation/manage']]  
42 - ]  
43 - ],  
44 - ['label' => 'Текстовые страницы', 'url' => ['/page/index']],  
45 - ['label' => 'Статьи', 'url' => ['/articles/index']],  
46 - ['label' => 'Акции', 'url' => ['/event/index']],  
47 - [  
48 - 'label' => 'SEO',  
49 - 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-search"></i> <span>{label}</span></a>',  
50 - 'items' => [  
51 - ['label' => 'URL', 'url' => ['/seo/index']],  
52 - ['label' => 'Шаблоны', 'url' => ['/seo-category/index']]  
53 - ]  
54 - ],  
55 - ['label' => 'Фон', 'url' => ['/bg/index']],  
56 - ['label' => 'Подписка', 'url' => ['/subscribe/index']],  
57 - ['label' => 'Пользователи', 'url' => ['/customer/index']],  
58 - ['label' => 'Группы пользователей', 'url' => ['/group/index']],  
59 - [  
60 - 'label' => 'Настройка ролей',  
61 - 'template'=>'<a href="{url}"> <i class="glyphicon glyphicon-search"></i> <span>{label}</span></a>',  
62 - 'items' => [  
63 - ['label' => 'Администраторы', 'url' => ['/user/index']],  
64 - ['label' => 'управление ролями', 'url' => ['/permit/access/role']],  
65 - ['label' => 'управление правами доступа', 'url' => ['/permit/access/permission']]  
66 - ]  
67 - ],  
68 66
69 67
70 - ], 68 + ];
  69 +
  70 +
  71 + if (Yii::$app->user->isGuest) {
  72 + array_push($items,
  73 + ['label' => 'Signup', 'url' => ['/admin/site/signup']], ['label' => 'Login', 'url' => ['/admin/site/login']]
  74 + );
  75 + } else {
  76 + array_push($items,
  77 + ['label' => 'Logout (' . Yii::$app->user->identity->username . ')','url'=>'/admin/site/logout']
  78 + );
  79 + }
  80 + echo Menu::widget([
  81 + 'options' => ['class' => 'sidebar-menu'],
  82 + 'submenuTemplate' => "\n<ul class='treeview-menu'>\n{items}\n</ul>\n",
  83 +
  84 + 'items' =>$items,
71 85
72 ]); 86 ]);
73 ?> 87 ?>
backend/views/user/_form.php
1 <?php 1 <?php
2 2
  3 +use kartik\select2\Select2;
3 use yii\helpers\Html; 4 use yii\helpers\Html;
4 use yii\widgets\ActiveForm; 5 use yii\widgets\ActiveForm;
5 6
@@ -14,19 +15,13 @@ use yii\widgets\ActiveForm; @@ -14,19 +15,13 @@ use yii\widgets\ActiveForm;
14 15
15 <?= $form->field($model, 'username')->textInput(['maxlength' => true]) ?> 16 <?= $form->field($model, 'username')->textInput(['maxlength' => true]) ?>
16 17
17 - <?= $form->field($model, 'auth_key')->textInput(['maxlength' => true]) ?> 18 + <?= $form->field($model, 'password')->textInput(['maxlength' => true]) ?>
18 19
19 - <?= $form->field($model, 'password_hash')->textInput(['maxlength' => true]) ?>  
20 -  
21 - <?= $form->field($model, 'password_reset_token')->textInput(['maxlength' => true]) ?>  
22 -  
23 - <?= $form->field($model, 'email')->textInput(['maxlength' => true]) ?>  
24 -  
25 - <?= $form->field($model, 'status')->textInput() ?> 20 + <?= $form->field($model, 'email',['enableAjaxValidation' => true])->textInput(['maxlength' => true]) ?>
26 21
27 22
28 <div class="form-group"> 23 <div class="form-group">
29 - <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> 24 + <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
30 </div> 25 </div>
31 26
32 <?php ActiveForm::end(); ?> 27 <?php ActiveForm::end(); ?>
backend/views/user/_search.php
@@ -19,13 +19,7 @@ use yii\widgets\ActiveForm; @@ -19,13 +19,7 @@ use yii\widgets\ActiveForm;
19 19
20 <?= $form->field($model, 'username') ?> 20 <?= $form->field($model, 'username') ?>
21 21
22 - <?= $form->field($model, 'auth_key') ?>  
23 -  
24 - <?= $form->field($model, 'password_hash') ?>  
25 -  
26 - <?= $form->field($model, 'password_reset_token') ?>  
27 -  
28 - <?php // echo $form->field($model, 'email') ?> 22 + <?= $form->field($model, 'email') ?>
29 23
30 <?php // echo $form->field($model, 'status') ?> 24 <?php // echo $form->field($model, 'status') ?>
31 25
@@ -34,8 +28,8 @@ use yii\widgets\ActiveForm; @@ -34,8 +28,8 @@ use yii\widgets\ActiveForm;
34 <?php // echo $form->field($model, 'updated_at') ?> 28 <?php // echo $form->field($model, 'updated_at') ?>
35 29
36 <div class="form-group"> 30 <div class="form-group">
37 - <?= Html::submitButton('Search', ['class' => 'btn btn-primary']) ?>  
38 - <?= Html::resetButton('Reset', ['class' => 'btn btn-default']) ?> 31 + <?= Html::submitButton(Yii::t('app', 'Search'), ['class' => 'btn btn-primary']) ?>
  32 + <?= Html::resetButton(Yii::t('app', 'Reset'), ['class' => 'btn btn-default']) ?>
39 </div> 33 </div>
40 34
41 <?php ActiveForm::end(); ?> 35 <?php ActiveForm::end(); ?>
backend/views/user/create.php
@@ -6,8 +6,8 @@ use yii\helpers\Html; @@ -6,8 +6,8 @@ use yii\helpers\Html;
6 /* @var $this yii\web\View */ 6 /* @var $this yii\web\View */
7 /* @var $model backend\models\User */ 7 /* @var $model backend\models\User */
8 8
9 -$this->title = 'Create User';  
10 -$this->params['breadcrumbs'][] = ['label' => 'Users', 'url' => ['index']]; 9 +$this->title = Yii::t('app', 'Create User');
  10 +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Users'), 'url' => ['index']];
11 $this->params['breadcrumbs'][] = $this->title; 11 $this->params['breadcrumbs'][] = $this->title;
12 ?> 12 ?>
13 <div class="user-create"> 13 <div class="user-create">
backend/views/user/index.php
@@ -8,7 +8,7 @@ use yii\helpers\Url; @@ -8,7 +8,7 @@ use yii\helpers\Url;
8 /* @var $searchModel backend\models\UserSearch */ 8 /* @var $searchModel backend\models\UserSearch */
9 /* @var $dataProvider yii\data\ActiveDataProvider */ 9 /* @var $dataProvider yii\data\ActiveDataProvider */
10 10
11 -$this->title = 'Users'; 11 +$this->title = Yii::t('app', 'Users');
12 $this->params['breadcrumbs'][] = $this->title; 12 $this->params['breadcrumbs'][] = $this->title;
13 ?> 13 ?>
14 <div class="user-index"> 14 <div class="user-index">
@@ -17,7 +17,7 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title; @@ -17,7 +17,7 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
17 <?php // echo $this->render('_search', ['model' => $searchModel]); ?> 17 <?php // echo $this->render('_search', ['model' => $searchModel]); ?>
18 18
19 <p> 19 <p>
20 - <?= Html::a('Create User', ['create'], ['class' => 'btn btn-success']) ?> 20 + <?= Html::a(Yii::t('app', 'Create User'), ['create'], ['class' => 'btn btn-success']) ?>
21 </p> 21 </p>
22 <?= GridView::widget([ 22 <?= GridView::widget([
23 'dataProvider' => $dataProvider, 23 'dataProvider' => $dataProvider,
@@ -27,10 +27,10 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title; @@ -27,10 +27,10 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
27 27
28 'id', 28 'id',
29 'username', 29 'username',
30 - 'auth_key',  
31 - 'password_hash',  
32 - 'password_reset_token',  
33 - 30 + 'email:email',
  31 + // 'status',
  32 + // 'created_at',
  33 + // 'updated_at',
34 34
35 ['class' => 'yii\grid\ActionColumn', 35 ['class' => 'yii\grid\ActionColumn',
36 'template' => '{view}&nbsp;&nbsp;{update}&nbsp;&nbsp;{permit}&nbsp;&nbsp;{delete}', 36 'template' => '{view}&nbsp;&nbsp;{update}&nbsp;&nbsp;{permit}&nbsp;&nbsp;{delete}',
backend/views/user/update.php
@@ -5,10 +5,12 @@ use yii\helpers\Html; @@ -5,10 +5,12 @@ use yii\helpers\Html;
5 /* @var $this yii\web\View */ 5 /* @var $this yii\web\View */
6 /* @var $model backend\models\User */ 6 /* @var $model backend\models\User */
7 7
8 -$this->title = 'Update User: ' . $model->id;  
9 -$this->params['breadcrumbs'][] = ['label' => 'Users', 'url' => ['index']]; 8 +$this->title = Yii::t('app', 'Update {modelClass}: ', [
  9 + 'modelClass' => 'User',
  10 +]) . $model->id;
  11 +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Users'), 'url' => ['index']];
10 $this->params['breadcrumbs'][] = ['label' => $model->id, 'url' => ['view', 'id' => $model->id]]; 12 $this->params['breadcrumbs'][] = ['label' => $model->id, 'url' => ['view', 'id' => $model->id]];
11 -$this->params['breadcrumbs'][] = 'Update'; 13 +$this->params['breadcrumbs'][] = Yii::t('app', 'Update');
12 ?> 14 ?>
13 <div class="user-update"> 15 <div class="user-update">
14 16
backend/views/user/view.php
@@ -7,7 +7,7 @@ use yii\widgets\DetailView; @@ -7,7 +7,7 @@ use yii\widgets\DetailView;
7 /* @var $model backend\models\User */ 7 /* @var $model backend\models\User */
8 8
9 $this->title = $model->id; 9 $this->title = $model->id;
10 -$this->params['breadcrumbs'][] = ['label' => 'Users', 'url' => ['index']]; 10 +$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Users'), 'url' => ['index']];
11 $this->params['breadcrumbs'][] = $this->title; 11 $this->params['breadcrumbs'][] = $this->title;
12 ?> 12 ?>
13 <div class="user-view"> 13 <div class="user-view">
@@ -15,11 +15,11 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title; @@ -15,11 +15,11 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
15 <h1><?= Html::encode($this->title) ?></h1> 15 <h1><?= Html::encode($this->title) ?></h1>
16 16
17 <p> 17 <p>
18 - <?= Html::a('Update', ['update', 'id' => $model->id], ['class' => 'btn btn-primary']) ?>  
19 - <?= Html::a('Delete', ['delete', 'id' => $model->id], [ 18 + <?= Html::a(Yii::t('app', 'Update'), ['update', 'id' => $model->id], ['class' => 'btn btn-primary']) ?>
  19 + <?= Html::a(Yii::t('app', 'Delete'), ['delete', 'id' => $model->id], [
20 'class' => 'btn btn-danger', 20 'class' => 'btn btn-danger',
21 'data' => [ 21 'data' => [
22 - 'confirm' => 'Are you sure you want to delete this item?', 22 + 'confirm' => Yii::t('app', 'Are you sure you want to delete this item?'),
23 'method' => 'post', 23 'method' => 'post',
24 ], 24 ],
25 ]) ?> 25 ]) ?>
@@ -30,11 +30,10 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title; @@ -30,11 +30,10 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
30 'attributes' => [ 30 'attributes' => [
31 'id', 31 'id',
32 'username', 32 'username',
33 - 'auth_key',  
34 - 'password_hash',  
35 - 'password_reset_token',  
36 'email:email', 33 'email:email',
37 'status', 34 'status',
  35 + 'created_at',
  36 + 'updated_at',
38 ], 37 ],
39 ]) ?> 38 ]) ?>
40 39
common/components/Mailer.php
@@ -9,6 +9,7 @@ class Mailer extends Widget{ @@ -9,6 +9,7 @@ class Mailer extends Widget{
9 public $email; 9 public $email;
10 public $text; 10 public $text;
11 public $subject; 11 public $subject;
  12 + public $type;
12 13
13 public function init(){ 14 public function init(){
14 15
@@ -27,14 +28,16 @@ class Mailer extends Widget{ @@ -27,14 +28,16 @@ class Mailer extends Widget{
27 $mail->Password = "k0l0b04eg"; 28 $mail->Password = "k0l0b04eg";
28 $mail->SetFrom('dockdep@gmail.com'); 29 $mail->SetFrom('dockdep@gmail.com');
29 $mail->Subject = $this->subject; 30 $mail->Subject = $this->subject;
30 - $mail->MsgHTML($this->text); 31 + $mail->MsgHTML('test');
31 $address = "dockdep@gmail.com"; 32 $address = "dockdep@gmail.com";
32 $mail->AddAddress($address); 33 $mail->AddAddress($address);
33 $mail->AddAddress($this->email); 34 $mail->AddAddress($this->email);
34 if(!$mail->send()) { 35 if(!$mail->send()) {
  36 +
35 \Yii::$app->getSession()->setFlash('error', 'Mailer Error: ' . $mail->ErrorInfo); 37 \Yii::$app->getSession()->setFlash('error', 'Mailer Error: ' . $mail->ErrorInfo);
36 return 'Mailer Error: ' . $mail->ErrorInfo; 38 return 'Mailer Error: ' . $mail->ErrorInfo;
37 } else { 39 } else {
  40 +
38 \Yii::$app->getSession()->setFlash('success', 'Мастер-приемщик свяжется с вами в ближайшее время'); 41 \Yii::$app->getSession()->setFlash('success', 'Мастер-приемщик свяжется с вами в ближайшее время');
39 return 'Message has been sent'; 42 return 'Message has been sent';
40 } 43 }
common/models/Customer.php
@@ -74,17 +74,7 @@ class Customer extends \yii\db\ActiveRecord implements \yii\web\IdentityInterfac @@ -74,17 +74,7 @@ class Customer extends \yii\db\ActiveRecord implements \yii\web\IdentityInterfac
74 ->exists()) 74 ->exists())
75 $this->addError('username','Такой пользователь уже есть.'); 75 $this->addError('username','Такой пользователь уже есть.');
76 } 76 }
77 -  
78 - public function sendMsg(){  
79 - $body = 'Вас приветствует сайт Rukzachok';  
80 - $body .= "\n\r";  
81 - $body .= 'Ваш логин: '.$this->username;  
82 - $body .= "\n\r";  
83 - $body .= 'Ваш пароль: '.$this->password;  
84 -  
85 - Mailer::widget(['text'=> $body, 'subject'=> 'Спасибо за регистрацию', 'email' => $this->username ]);  
86 -  
87 - } 77 +
88 78
89 public function afterSave($insert, $changedAttributes) 79 public function afterSave($insert, $changedAttributes)
90 { 80 {
@@ -98,30 +88,28 @@ class Customer extends \yii\db\ActiveRecord implements \yii\web\IdentityInterfac @@ -98,30 +88,28 @@ class Customer extends \yii\db\ActiveRecord implements \yii\web\IdentityInterfac
98 } 88 }
99 $auth->assign($role, $this->id); 89 $auth->assign($role, $this->id);
100 90
101 - if($this->isNewRecord){  
102 - $this->sendMsg();  
103 - } 91 +
104 } 92 }
105 93
106 public function beforeSave($insert) { 94 public function beforeSave($insert) {
107 95
108 96
109 - $this->date_time = new \yii\db\Expression('NOW()');  
110 - 97 + $this->date_time = new \yii\db\Expression('NOW()');
  98 +
111 /** 99 /**
112 - if($image = UploadedFile::getInstance($this,'image')){  
113 - 100 + if($image = UploadedFile::getInstance($this,'image')){
  101 +
114 $this->deleteImage($this->old_image); 102 $this->deleteImage($this->old_image);
115 //$this->image = $image; 103 //$this->image = $image;
116 $this->image = time() . '_' . rand(1, 1000) . '.' . $image->extension; 104 $this->image = time() . '_' . rand(1, 1000) . '.' . $image->extension;
117 $image->saveAs('upload/profile/'.$this->image); 105 $image->saveAs('upload/profile/'.$this->image);
118 - 106 +
119 $resizeObj = new resize('upload/profile/'.$this->image); 107 $resizeObj = new resize('upload/profile/'.$this->image);
120 $resizeObj -> resizeImage(240, 240, 'crop'); 108 $resizeObj -> resizeImage(240, 240, 'crop');
121 $resizeObj -> saveImage('upload/profile/ico/'.$this->image, 100); 109 $resizeObj -> saveImage('upload/profile/ico/'.$this->image, 100);
122 }elseif(!empty($this->old_image)) $this->image = $this->old_image; 110 }elseif(!empty($this->old_image)) $this->image = $this->old_image;
123 - **/  
124 - 111 + **/
  112 +
125 return parent::beforeSave($insert); 113 return parent::beforeSave($insert);
126 } 114 }
127 115
common/widgets/views/registration.php 0 → 100644
  1 +<?= 'Спасибо за регистрацию'?>
0 \ No newline at end of file 2 \ No newline at end of file
frontend/controllers/RegController.php
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
2 2
3 namespace frontend\controllers; 3 namespace frontend\controllers;
4 4
  5 +use common\components\Mailer;
5 use Yii; 6 use Yii;
6 use yii\web\Controller; 7 use yii\web\Controller;
7 use yii\filters\AccessControl; 8 use yii\filters\AccessControl;
@@ -57,6 +58,7 @@ class RegController extends Controller @@ -57,6 +58,7 @@ class RegController extends Controller
57 $modelLogin->username = $model->username; 58 $modelLogin->username = $model->username;
58 $modelLogin->password = $model->password; 59 $modelLogin->password = $model->password;
59 $modelLogin->login(); 60 $modelLogin->login();
  61 + Mailer::widget(['type' => 'registration', 'subject'=> 'Спасибо за регистрацию', 'email' => $model->username ]);
60 $this->redirect(['/iam']); 62 $this->redirect(['/iam']);
61 } 63 }
62 64