RegistrationController.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. class RegistrationController extends BaseRegistrationController
  9. {
  10. public function behaviors()
  11. {
  12. return [
  13. 'access' => [
  14. 'class' => AccessControl::class,
  15. 'rules' => [
  16. ['allow' => true, 'actions' => ['register', 'connect'], 'roles' => ['?']],
  17. ['allow' => true, 'actions' => ['confirm', 'resend'], 'roles' => ['@']],
  18. ],
  19. ],
  20. ];
  21. }
  22. public function actionRegister()
  23. {
  24. $model = Yii::createObject(RegistrationForm::class);
  25. $this->performAjaxValidation($model);
  26. if ($model->load(Yii::$app->request->post())) {
  27. Yii::debug('Form data: ' . print_r(Yii::$app->request->post(), true), __METHOD__);
  28. if ($user = $model->register()) {
  29. // Создаем директорию для пользователя
  30. @mkdir(Yii::$app->params['uploadPath'] . $user->id, 0777, true);
  31. // Устанавливаем роль
  32. $authManager = Yii::$app->authManager;
  33. $role = $model->role == 1 ? 'org' : 'member';
  34. $userRole = $authManager->getRole($role);
  35. if ($userRole) {
  36. $authManager->assign($userRole, $user->id);
  37. } else {
  38. Yii::error("Role '$role' not found", __METHOD__);
  39. }
  40. // Создаем сообщение
  41. Yii::createObject(Messages::class)->CreateMessage([
  42. 'user_id' => 23,
  43. 'notes' => Yii::t('app', 'User Registered ID: {name}', ['name' => $model->at_org]),
  44. ]);
  45. // Выход и редирект
  46. Yii::$app->user->logout();
  47. Yii::$app->session->setFlash('info', Yii::t('app', 'You must relogin for apply changes'));
  48. return $this->redirect('/user/login');
  49. } else {
  50. Yii::error('Registration failed', __METHOD__);
  51. }
  52. }
  53. return $this->render('register', [
  54. 'model' => $model,
  55. 'module' => $this->module,
  56. ]);
  57. }
  58. public function actions()
  59. {
  60. return [
  61. 'error' => [
  62. 'class' => 'yii\web\ErrorAction',
  63. ],
  64. 'captcha' => [
  65. 'class' => 'yii\captcha\CaptchaAction',
  66. ],
  67. ];
  68. }
  69. }