/
k6011565
/
UP09
Обзор
Документация
Войти
/
k6011565
/
UP09
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
basic/controllers/SiteController.php
116 строк
4 KB
Карина Коковкина
все файлы
24 июн 2026, 15:42
24 июн 2026, 15:42
2a8b11b
Код
Авторство
О чём код?
<?php namespace app\controllers; use Yii; use yii\web\Controller; use yii\filters\AccessControl; use yii\filters\VerbFilter; use app\models\User; use app\models\Tour; class SiteController extends Controller { public function behaviors() { return [ 'access' => [ 'class' => AccessControl::class, 'only' => ['logout'], 'rules' => [ [ 'actions' => ['logout'], 'allow' => true, 'roles' => ['@'], ], ], ], 'verbs' => [ 'class' => VerbFilter::class, 'actions' => [ 'logout' => ['post'], ], ], ]; } public function actions() { return [ 'error' => [ 'class' => 'yii\web\ErrorAction', ], ]; } public function actionIndex() { $tours = Tour::find()->limit(6)->all(); return $this->render('index', ['tours' => $tours]); } public function actionLogin() { if (!Yii::$app->user->isGuest) { return $this->goHome(); } $model = new \yii\base\DynamicModel([ 'username', 'password' ]); $model->addRule(['username', 'password'], 'required'); $model->addRule('password', 'string', ['min' => 6]); if ($model->load(Yii::$app->request->post()) && $model->validate()) { $user = User::findByUsername($model->username); if ($user && $user->validatePassword($model->password)) { Yii::$app->user->login($user); return $this->goBack(); } Yii::$app->session->setFlash('error', 'Неверное имя пользователя или пароль.'); } return $this->render('login', ['model' => $model]); } public function actionRegister() { $model = new User(); if ($model->load(Yii::$app->request->post())) { if (empty($model->password)) { Yii::$app->session->setFlash('error', 'Пароль не может быть пустым.'); return $this->render('register', ['model' => $model]); } if (strlen($model->password) < 6) { Yii::$app->session->setFlash('error', 'Пароль должен содержать минимум 6 символов.'); return $this->render('register', ['model' => $model]); } try { $model->setPassword($model->password); $model->generateAuthKey(); if ($model->save()) { Yii::$app->session->setFlash('success', 'Регистрация успешна! Теперь вы можете войти.'); return $this->redirect(['login']); } else { $errors = $model->getFirstErrors(); $errorMessage = implode(', ', $errors); Yii::$app->session->setFlash('error', 'Ошибка регистрации: ' . $errorMessage); } } catch (\Exception $e) { Yii::$app->session->setFlash('error', 'Ошибка: ' . $e->getMessage()); } } return $this->render('register', ['model' => $model]); } public function actionLogout() { Yii::$app->user->logout(); return $this->goHome(); } }