Commit fa5a99de650b12581a68f7da16a441a513070c3a
1 parent
5824a647
VItaliy 04.12.2015
Showing
6 changed files
with
94 additions
and
27 deletions
Show diff stats
console/migrations/m151204_095541_add_field_password_reset_token_accounts.php
0 → 100644
1 | +<?php | ||
2 | + | ||
3 | +use yii\db\Schema; | ||
4 | +use yii\db\Migration; | ||
5 | + | ||
6 | +class m151204_095541_add_field_password_reset_token_accounts extends Migration | ||
7 | +{ | ||
8 | + public function up() | ||
9 | + { | ||
10 | + $view = <<< MySQL | ||
11 | + ALTER TABLE `italautocomua`.`w_accounts` | ||
12 | + ADD COLUMN `password_reset_token` VARCHAR(255) NULL AFTER `email`; | ||
13 | +MySQL; | ||
14 | + $this->execute($view); | ||
15 | + } | ||
16 | + | ||
17 | + public function down() | ||
18 | + { | ||
19 | + echo "m151204_095541_add_field_password_reset_token_accounts cannot be reverted.\n"; | ||
20 | + | ||
21 | + return false; | ||
22 | + } | ||
23 | + | ||
24 | + /* | ||
25 | + // Use safeUp/safeDown to run migration code within a transaction | ||
26 | + public function safeUp() | ||
27 | + { | ||
28 | + } | ||
29 | + | ||
30 | + public function safeDown() | ||
31 | + { | ||
32 | + } | ||
33 | + */ | ||
34 | +} |
frontend/controllers/SiteController.php
@@ -15,6 +15,7 @@ use frontend\models\ContactForm; | @@ -15,6 +15,7 @@ use frontend\models\ContactForm; | ||
15 | use yii\base\InvalidParamException; | 15 | use yii\base\InvalidParamException; |
16 | use yii\web\BadRequestHttpException; | 16 | use yii\web\BadRequestHttpException; |
17 | use yii\web\Controller; | 17 | use yii\web\Controller; |
18 | + | ||
18 | use yii\filters\VerbFilter; | 19 | use yii\filters\VerbFilter; |
19 | use yii\filters\AccessControl; | 20 | use yii\filters\AccessControl; |
20 | use common\models\Callback; | 21 | use common\models\Callback; |
@@ -365,14 +366,17 @@ class SiteController extends Controller | @@ -365,14 +366,17 @@ class SiteController extends Controller | ||
365 | */ | 366 | */ |
366 | public function actionRequestPasswordReset() | 367 | public function actionRequestPasswordReset() |
367 | { | 368 | { |
369 | + $this->layout = '/internal'; | ||
370 | + | ||
368 | $model = new PasswordResetRequestForm(); | 371 | $model = new PasswordResetRequestForm(); |
369 | if ($model->load(Yii::$app->request->post()) && $model->validate()) { | 372 | if ($model->load(Yii::$app->request->post()) && $model->validate()) { |
373 | + | ||
370 | if ($model->sendEmail()) { | 374 | if ($model->sendEmail()) { |
371 | - Yii::$app->session->setFlash('success', 'Check your email for further instructions.'); | 375 | + Yii::$app->session->setFlash('success', 'Для того, чтобы изменить пароль, перейдите по ссылке, которая придет Вам на email'); |
372 | 376 | ||
373 | return $this->goHome(); | 377 | return $this->goHome(); |
374 | } else { | 378 | } else { |
375 | - Yii::$app->session->setFlash('error', 'Sorry, we are unable to reset password for email provided.'); | 379 | + Yii::$app->session->setFlash('error', 'Пользователя с таким e-mail в базе не существует'); |
376 | } | 380 | } |
377 | } | 381 | } |
378 | 382 |
frontend/models/PasswordResetRequestForm.php
1 | <?php | 1 | <?php |
2 | namespace frontend\models; | 2 | namespace frontend\models; |
3 | 3 | ||
4 | -use common\models\User; | 4 | +use common\models\Accounts; |
5 | use yii\base\Model; | 5 | use yii\base\Model; |
6 | - | 6 | +use common\models\Emails; |
7 | /** | 7 | /** |
8 | * Password reset request form | 8 | * Password reset request form |
9 | */ | 9 | */ |
@@ -21,9 +21,8 @@ class PasswordResetRequestForm extends Model | @@ -21,9 +21,8 @@ class PasswordResetRequestForm extends Model | ||
21 | ['email', 'required'], | 21 | ['email', 'required'], |
22 | ['email', 'email'], | 22 | ['email', 'email'], |
23 | ['email', 'exist', | 23 | ['email', 'exist', |
24 | - 'targetClass' => '\common\models\User', | ||
25 | - 'filter' => ['status' => User::STATUS_ACTIVE], | ||
26 | - 'message' => 'There is no user with such email.' | 24 | + 'targetClass' => '\common\models\Accounts', |
25 | + 'message' => 'Пользователя с таким e-mail в базе не существует.' | ||
27 | ], | 26 | ], |
28 | ]; | 27 | ]; |
29 | } | 28 | } |
@@ -35,23 +34,24 @@ class PasswordResetRequestForm extends Model | @@ -35,23 +34,24 @@ class PasswordResetRequestForm extends Model | ||
35 | */ | 34 | */ |
36 | public function sendEmail() | 35 | public function sendEmail() |
37 | { | 36 | { |
38 | - /* @var $user User */ | ||
39 | - $user = User::findOne([ | ||
40 | - 'status' => User::STATUS_ACTIVE, | 37 | + |
38 | + /* @var $user Accounts */ | ||
39 | + $user = Accounts::findOne([ | ||
41 | 'email' => $this->email, | 40 | 'email' => $this->email, |
42 | ]); | 41 | ]); |
43 | 42 | ||
44 | if ($user) { | 43 | if ($user) { |
45 | - if (!User::isPasswordResetTokenValid($user->password_reset_token)) { | 44 | + if (!Accounts::isPasswordResetTokenValid($user->password_reset_token)) { |
46 | $user->generatePasswordResetToken(); | 45 | $user->generatePasswordResetToken(); |
47 | } | 46 | } |
48 | 47 | ||
49 | if ($user->save()) { | 48 | if ($user->save()) { |
50 | - return \Yii::$app->mailer->compose(['html' => 'passwordResetToken-html', 'text' => 'passwordResetToken-text'], ['user' => $user]) | ||
51 | - ->setFrom([\Yii::$app->params['supportEmail'] => \Yii::$app->name . ' robot']) | ||
52 | - ->setTo($this->email) | ||
53 | - ->setSubject('Password reset for ' . \Yii::$app->name) | ||
54 | - ->send(); | 49 | + $form = array(); |
50 | + $form ['email'] = $user->email; | ||
51 | + $form ['name'] = $user->name; | ||
52 | + $form ['pass'] = $user->pass; | ||
53 | + return Emails::get('remide',$form,$form ['email']); | ||
54 | + | ||
55 | } | 55 | } |
56 | } | 56 | } |
57 | 57 |
frontend/views/accounts/cabinet.php
@@ -3,6 +3,7 @@ use \yii\widgets\ActiveForm; | @@ -3,6 +3,7 @@ use \yii\widgets\ActiveForm; | ||
3 | use \yii\helpers\ArrayHelper; | 3 | use \yii\helpers\ArrayHelper; |
4 | use \common\models\DicCities; | 4 | use \common\models\DicCities; |
5 | use \common\models\Deliveries; | 5 | use \common\models\Deliveries; |
6 | +use \yii\helpers\Url; | ||
6 | 7 | ||
7 | $this->registerCssFile('/css/about_company.css'); | 8 | $this->registerCssFile('/css/about_company.css'); |
8 | $this->registerCssFile('/css/style/notepad.css'); | 9 | $this->registerCssFile('/css/style/notepad.css'); |
@@ -17,16 +18,18 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -17,16 +18,18 @@ $this->params['breadcrumbs'][] = $this->title; | ||
17 | <div class="vin"> | 18 | <div class="vin"> |
18 | <p class="vin_article">Мой профиль</p> | 19 | <p class="vin_article">Мой профиль</p> |
19 | <div class='side_menu'> | 20 | <div class='side_menu'> |
20 | -<ul class="side_menu-list" role="tablist"> | ||
21 | - <li class="active"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">Личные данные</a></li> | ||
22 | - <li><a href="#notepad" aria-controls="notepad" role="tab" data-toggle="tab">Блокнот</a></li> | ||
23 | - <li><a href="#busket" aria-controls="busket" role="tab" data-toggle="tab">Корзина</a></li> | ||
24 | - <li><a href="#orders" aria-controls="orders" role="tab" data-toggle="tab">Заказы</a></li> | ||
25 | - <!-- <li><a href="#finance" aria-controls="finance" role="tab" data-toggle="tab">Финансы</a></li> | ||
26 | - <li><a href="history" aria-controls="history" role="tab" data-toggle="tab">История запросов</a></li> | ||
27 | - <li><a href="#avto" aria-controls="avto" role="tab" data-toggle="tab">Ваши авто</a></li> | ||
28 | - <li><a href="#message" aria-controls="message" role="tab" data-toggle="tab">Оставить сообщение<br>об оплате и возврате</a></li> --> | ||
29 | -</ul> | 21 | + <?php |
22 | + echo \yii\widgets\Menu::widget([ | ||
23 | + 'options' => ['class' => 'side_menu-list'], | ||
24 | + 'items' => [ | ||
25 | + ['label' => 'Личные данные', 'url' => Url::toRoute(['/accounts/cabinet'])], | ||
26 | + ['label' => 'Блокнот', 'url' => Url::toRoute(['/accounts/cabinet'])], | ||
27 | + ['label' => 'Корзина', 'url' => Url::toRoute(['/accounts/cabinet'])], | ||
28 | + ['label' => 'Заказы', 'url' => Url::toRoute(['/accounts/cabinet'])], | ||
29 | + ['label' => 'Выйти', 'url' => Url::toRoute(['/site/logout'])], | ||
30 | + ], | ||
31 | + ]); | ||
32 | + ?> | ||
30 | <div class="tab-content"> | 33 | <div class="tab-content"> |
31 | <div role="tabpanel" class="tab-pane active" id="profile"> | 34 | <div role="tabpanel" class="tab-pane active" id="profile"> |
32 | <p class="tab-content_header">Личные данные</p> | 35 | <p class="tab-content_header">Личные данные</p> |
frontend/views/page/view.php
@@ -4,7 +4,6 @@ $this->registerCssFile('/css/style/optovikam.css'); | @@ -4,7 +4,6 @@ $this->registerCssFile('/css/style/optovikam.css'); | ||
4 | $this->registerMetaTag(['description' => $model->descr,'keywords'=>$model->kwords]); | 4 | $this->registerMetaTag(['description' => $model->descr,'keywords'=>$model->kwords]); |
5 | $this->title = $model->title ? $model->title: $model->name; | 5 | $this->title = $model->title ? $model->title: $model->name; |
6 | $this->params['breadcrumbs'][] = $this->title; | 6 | $this->params['breadcrumbs'][] = $this->title; |
7 | - | ||
8 | ?> | 7 | ?> |
9 | <div class="main-vin"> | 8 | <div class="main-vin"> |
10 | 9 |
1 | +<?php | ||
2 | +use yii\helpers\Html; | ||
3 | +use yii\bootstrap\ActiveForm; | ||
4 | + | ||
5 | +/* @var $this yii\web\View */ | ||
6 | +/* @var $form yii\bootstrap\ActiveForm */ | ||
7 | +/* @var $model \frontend\models\PasswordResetRequestForm */ | ||
8 | + | ||
9 | +$this->title = 'Запрос на востановление пароля'; | ||
10 | +$this->params['breadcrumbs'][] = $this->title; | ||
11 | +?> | ||
12 | +<div class="main-vin"> | ||
13 | + <h1><?= Html::encode($this->title) ?></h1> | ||
14 | + | ||
15 | + <p>Введите ваш e-mail</p> | ||
16 | + | ||
17 | + <div class="row"> | ||
18 | + <div class="col-lg-5"> | ||
19 | + <?php $form = ActiveForm::begin(['id' => 'request-password-reset-form']); ?> | ||
20 | + <?= $form->field($model, 'email')->label(false) ?> | ||
21 | + <div class="form-group"> | ||
22 | + <?= Html::submitButton('Отправить', ['class' => 'btn btn-primary']) ?> | ||
23 | + </div> | ||
24 | + <?php ActiveForm::end(); ?> | ||
25 | + </div> | ||
26 | + </div> | ||
27 | +</div> |