- Метод регистрации теперь работает через транзакции и в случае неудачного...

- Метод регистрации теперь работает через транзакции и в случае неудачного сохранения, в базе не останутся лишние данные
parent d1ca6c23
......@@ -5,6 +5,8 @@ use Yii;
use common\modules\users\models\User;
use \common\modules\rbac\models\AuthAssignment;
use common\modules\messageTemplate\models\MessageTemplate;
use yii\base\Exception;
use yii\web\BadRequestHttpException;
class UserController extends \common\components\BaseController {
const ERROR_PASSWORD_RECOVER_AUTH = 'Вы не можете восстановить пароль будучи авторизованным!';
......@@ -121,15 +123,19 @@ class UserController extends \common\components\BaseController {
$model->attributes = $_POST['User'];
if ($model->validate()) {
$transaction = Yii::$app->db->beginTransaction();
try {
$model->password = Yii::$app->getSecurity()->generatePasswordHash($model->password);
$model->activate_code = md5($model->password . 'xdf5sf');
$model->source = User::SOURCE_DEFAULT;
$model->save(false);
if (!$model->save(false))
throw new BadRequestHttpException(current(current($model->getErrors())), 500);
$assignment = new AuthAssignment();
$assignment->item_name = 'user';
$assignment->user_id = $model->id;
$assignment->save();
if (!$assignment->save())
throw new BadRequestHttpException(current(current($assignment->getErrors())), 500);
/*$linkActivate = Yii::$app->params['frontUrl'].'/activate/'.$model->activate_code;
$subject = 'Регистрация на сайте '.Yii::$app->params['frontUrl'];
......@@ -141,12 +147,40 @@ class UserController extends \common\components\BaseController {
$params = [];
$params['link_activate'] = Yii::$app->params['frontUrl'].'/activate/'.$model->activate_code;
$params['link'] = Yii::$app->params['frontUrl'];
$templateModel = MessageTemplate::findOne(['name' => 'Регистрация на сайте']);
$model->afterRegistration($templateModel->id, $params);
echo json_encode(array('success'=>true));
if ($model->afterRegistration()!==true)
throw new BadRequestHttpException($model->getErrors('email'), 500);
$transaction->commit();
} catch (Exception $e) {
$transaction->rollBack();
echo json_encode(array('errors'=>$e->getMessage()));
}
else {
// $model->password = Yii::$app->getSecurity()->generatePasswordHash($model->password);
// $model->activate_code = md5($model->password . 'xdf5sf');
// $model->source = User::SOURCE_DEFAULT;
// $model->save(false);
//
// $assignment = new AuthAssignment();
// $assignment->item_name = 'user';
// $assignment->user_id = $model->id;
// $assignment->save();
//
// /*$linkActivate = Yii::$app->params['frontUrl'].'/activate/'.$model->activate_code;
// $subject = 'Регистрация на сайте '.Yii::$app->params['frontUrl'];
// Yii::$app->mailer->compose('activate', ['link' => Yii::$app->params['frontUrl'], 'linkActivate' => $linkActivate])
// ->setFrom(Yii::$app->params['adminEmail'])
// ->setTo($model->email)
// ->setSubject($subject)
// ->send(); */
// $params = [];
// $params['link_activate'] = Yii::$app->params['frontUrl'].'/activate/'.$model->activate_code;
// $params['link'] = Yii::$app->params['frontUrl'];
// $templateModel = MessageTemplate::findOne(['name' => 'Регистрация на сайте']);
// $model->afterRegistration($templateModel->id, $params);
//
// echo json_encode(array('success'=>true));
} else {
echo json_encode(array('errors'=>$model->getErrors()));
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment