RegistrationController.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <?php
  2. namespace app\controllers;
  3. use Yii;
  4. use app\models\RegistrationForm;
  5. use yii\filters\AccessControl;
  6. use app\models\Messages;
  7. use dektrium\user\controllers\RegistrationController as BaseRegistrationController;
  8. use app\models\Files;
  9. use yii\web\UploadedFile;
  10. use app\models\Bills;
  11. class RegistrationController extends BaseRegistrationController
  12. {
  13. public function behaviors()
  14. {
  15. return [
  16. 'access' => [
  17. 'class' => AccessControl::class,
  18. 'rules' => [
  19. ['allow' => true, 'actions' => ['register', 'connect'], 'roles' => ['?']],
  20. ['allow' => true, 'actions' => ['confirm', 'resend'], 'roles' => ['@']],
  21. ],
  22. ],
  23. ];
  24. }
  25. public function actionRegister()
  26. {
  27. $model = Yii::createObject(RegistrationForm::class);
  28. $this->performAjaxValidation($model);
  29. $files = new Files();
  30. if ( $model->load( Yii::$app->request->post() ) && false != ( $file = UploadedFile::getInstances( $files, 'file' ) ) ) {
  31. Yii::debug('Form data: ' . print_r(Yii::$app->request->post(), true), __METHOD__);
  32. if ($user = $model->register()) {
  33. // Создаем директорию для пользователя
  34. @mkdir(Yii::$app->params['uploadPath'] . $user->id, 0777, true);
  35. // Устанавливаем роль
  36. $authManager = Yii::$app->authManager;
  37. $role = $model->role == 1 ? 'org' : 'member';
  38. $userRole = $authManager->getRole($role);
  39. if ($userRole) {
  40. $authManager->assign($userRole, $user->id);
  41. } else {
  42. Yii::error("Role '$role' not found", __METHOD__);
  43. }
  44. $files->uploads = '../uploads/' . $user->id . '/';
  45. $files->user_id = $user->id;
  46. $fileName = $files->uploadFile();
  47. if ($fileName) {
  48. $files->saveFile([
  49. 'name' => $fileName,
  50. 'path' => $files->uploads,
  51. 'user_id' => $user->id,
  52. 'auction_id'=>'null',
  53. 'lot_id'=>false,
  54. 'type' => 'registration',
  55. ]);
  56. }
  57. // $files = new Files();
  58. // $file = UploadedFile::getInstance($files, 'file');
  59. // if(isset($file)){
  60. // $file->name = $files->transliteration($file->name);
  61. // $path = Yii::$app->params['uploadPath'] . $file->name;
  62. // $file->saveAs($path);
  63. // $files->saveFile([
  64. // 'name'=>$file->name,
  65. // 'path'=>Yii::$app->params['uploadPath'],
  66. // 'user_id'=>$user->id,
  67. // 'auction_id'=>'null',
  68. // 'lot_id'=>'NULL',
  69. // 'type' => 'register'
  70. // ]);
  71. // }
  72. // Создаем сообщение
  73. Yii::createObject(Messages::class)->CreateMessage([
  74. 'user_id' => 23,
  75. 'notes' => Yii::t('app', 'User Registered ID: {name}', ['name' => $model->at_org]),
  76. ]);
  77. // пишем рахунки registration
  78. (new Bills(
  79. [
  80. 'user_id' => $user->id,
  81. 'type' => 'registration',
  82. 'payed' => 0,
  83. 'bid_id' => NULL,
  84. 'auction_id' => NULL,
  85. ]
  86. ))->save(false);
  87. // Выход и редирект
  88. Yii::$app->user->logout();
  89. Yii::$app->session->setFlash('info', Yii::t('app', 'You must relogin for apply changes'));
  90. return $this->redirect('/user/login');
  91. } else {
  92. Yii::error('Registration failed', __METHOD__);
  93. }
  94. }
  95. return $this->render('register', [
  96. 'model' => $model,
  97. 'module' => $this->module,
  98. ]);
  99. }
  100. public function actions()
  101. {
  102. return [
  103. 'error' => [
  104. 'class' => 'yii\web\ErrorAction',
  105. ],
  106. 'captcha' => [
  107. 'class' => 'yii\captcha\CaptchaAction',
  108. ],
  109. ];
  110. }
  111. }