123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- <?php
- namespace app\controllers;
- use Yii;
- use app\components\Controller;
- use yii\filters\AccessControl;
- use yii\filters\VerbFilter;
- use app\models\User;
- use app\models\forms\LoginForm;
- use app\models\forms\PasswordResetRequestForm;
- use app\models\forms\ResetPasswordForm;
- use yii\web\HttpException;
- use yii\base\Exception;
- use yii\base\UserException;
- use yii\base\InvalidParamException;
- use yii\web\BadRequestHttpException;
- class SiteController extends Controller
- {
- public $layout = 'site';
- /**
- * Render the homepage
- */
- public function actionIndex()
- {
- return $this->render('index');
- }
- /**
- * User login
- */
- public function actionLogin() {
- if (!\Yii::$app->user->isGuest) {
- return $this->goHome();
- }
- $model = new LoginForm();
- if ($model->load(Yii::$app->request->post()) && $model->login()) {
- return $this->goBack();
- } else {
- return $this->render('login', [
- 'model' => $model,
- ]);
- }
- }
- /**
- * User logout
- */
- public function actionLogout()
- {
- Yii::$app->user->logout();
- return $this->goHome();
- }
- /**
- * User signup
- */
- public function actionSignup() {
- $user = new User(['scenario' => 'signup']);
- if ($user->load(Yii::$app->request->post())) {
- if ($user->save()) {
- $params = Yii::$app->params;
- Yii::$app->mail->compose('confirmEmail', ['user' => $user])
- ->setFrom([$params['support.email'] => $params['support.name']])
- ->setTo($user->email)
- ->setSubject('Complete registration with ' . Yii::$app->name)
- ->send();
- Yii::$app->session->setFlash('user-signed-up');
- return $this->refresh();
- }
- }
- if (Yii::$app->session->hasFlash('user-signed-up')) {
- return $this->render('signedUp');
- }
- return $this->render('signup', [
- 'model' => $user,
- ]);
- }
- /**
- * Confirm email
- */
- public function actionConfirmEmail($token)
- {
- $user = User::find()->emailConfirmationToken($token)->one();
- if ($user!==null && $user->removeEmailConfirmationToken(true)) {
- Yii::$app->getUser()->login($user);
- return $this->goHome();
- }
- return $this->render('emailConfirmationFailed');
- }
- /**
- * Request password reset
- */
- public function actionRequestPasswordReset()
- {
- $model = new PasswordResetRequestForm();
- if ($model->load(Yii::$app->request->post()) && $model->validate()) {
- if ($model->sendEmail()) {
- Yii::$app->getSession()->setFlash('success', 'Check your email for further instructions.');
- return $this->goHome();
- } else {
- Yii::$app->getSession()->setFlash('error', 'Sorry, we are unable to reset password for email provided.');
- }
- }
- return $this->render('requestPasswordResetToken', [
- 'model' => $model,
- ]);
- }
- /**
- * Reset password
- */
- public function actionResetPassword($token)
- {
- try {
- $model = new ResetPasswordForm($token);
- } catch (InvalidParamException $e) {
- throw new BadRequestHttpException($e->getMessage());
- }
- if ($model->load(Yii::$app->request->post()) && $model->validate() && $model->resetPassword()) {
- Yii::$app->getSession()->setFlash('success', 'New password was saved.');
- return $this->goHome();
- }
- return $this->render('resetPassword', [
- 'model' => $model,
- ]);
- }
- public function actionSearch() {
- }
- public function actionError() {
- if (($exception = Yii::$app->getErrorHandler()->exception) === null) {
- return '';
- }
- if ($exception instanceof HttpException) {
- $code = $exception->statusCode;
- } else {
- $code = $exception->getCode();
- }
- if ($exception instanceof Exception) {
- $name = $exception->getName();
- } else {
- $name = $this->defaultName ?: Yii::t('yii', 'Error');
- }
- if ($code) {
- $name .= " (#$code)";
- }
- if ($exception instanceof UserException) {
- $message = $exception->getMessage();
- } else {
- $message = $this->defaultMessage ?: Yii::t('yii', 'An internal server error occurred.');
- }
- if (Yii::$app->getRequest()->getIsAjax()) {
- static::renderJson([], $code, $message);
- } else {
- return $this->render('error', [
- 'name' => $name,
- 'message' => $message,
- 'exception' => $exception,
- ]);
- }
- }
- }
|