RegistrationController.php 4.1 KB

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