Commit 181169e7bbf1f47b346fdf638426d4348e196b3e
Merge branch 'master' of gitlab.artweb.com.ua:root/new_rukzachok
Showing
15 changed files
with
263 additions
and
179 deletions
Show diff stats
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->params['breadcrumbs'][] = $this->title; | @@ -17,7 +17,7 @@ $this->params['breadcrumbs'][] = $this->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->params['breadcrumbs'][] = $this->title; | @@ -27,10 +27,10 @@ $this->params['breadcrumbs'][] = $this->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} {update} {permit} {delete}', | 36 | 'template' => '{view} {update} {permit} {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->params['breadcrumbs'][] = $this->title; | @@ -15,11 +15,11 @@ $this->params['breadcrumbs'][] = $this->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->params['breadcrumbs'][] = $this->title; | @@ -30,11 +30,10 @@ $this->params['breadcrumbs'][] = $this->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 |
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 |