enableCsrfValidation = false; return parent::beforeAction($action); } /** * @inheritdoc */ public function behaviors() { return [ 'access' => [ 'class' => AccessControl::className(), 'rules' => [ [ 'actions' => ['login', 'error', 'forgot', 'reset', 'do-login'], 'allow' => true, // 'roles' => ['?'], ], [ 'actions' => ['logout', 'index', 'region', 'test', 'editor-upload'], 'allow' => true, 'roles' => ['@'], ], ], ], ]; } /** * author: alen <948306245@qq.com> * 默认首页 (工程师列表) * 可以在config/main.php中重写 defaultRoute * @return string */ public function actionIndex() { //return $this->redirect("home/welcome/index"); $this->layout = '/main'; $username = Yii::$app->user->identity->username; return $this->render('index', [ 'username' => $username, ]); } /** * 错误页面 * @return string */ public function actionError() { $this->layout = '/error'; $exception = Yii::$app->errorHandler->exception; $code = isset($exception->statusCode)?$exception->statusCode:404; if (Yii::$app->request->isAjax) { return json_encode(['success' => false]); } // 针对 $.ajaxFileUpload控件,无法识别是ajax // $routes = [ // 'trade/order-import/order-import', // 'trade/order/express-import' // ]; // foreach ($routes as $r) { // if (strpos($_SERVER['REQUEST_URI'], $r) !== false) { // return json_encode(['success' => false]); // } // } $viewTpl = 'error/' . $code . '.php'; return $this->render($viewTpl); } /** * 登陆页面 * @return string */ public function actionLogin() { $this->layout = '/login'; return $this->render('login'); } /** * 执行登陆动作 * @return \yii\web\Response */ public function actionDoLogin() { $post = Yii::$app->request->post(); if (empty($post['name']) || empty($post['password'])) { Yii::$app->session->setFlash('error', '请输入账号和密码'); return $this->redirect('site/login'); } /* * 接收表单提交的数据 */ $username = $post['name']; $password = $post['password']; $sysUser = SysUserModel::findOne(['username' => $username]); if (!$sysUser) { Yii::$app->session->setFlash('error', '账号不存在,请重新输入'); return $this->redirect(['site/login']); } elseif ($sysUser->is_enable == 0) { Yii::$app->session->setFlash('error', '账号被禁用, 请联系管理员'); return $this->redirect(['site/login']); } elseif (Password::validate($password, $sysUser['password_hash'])) { // 验证密码 // 使用配置文件的登录超时常量 $duration = Yii::$app->user->authTimeout; Yii::$app->getUser()->login($sysUser, $duration); // 记录登录这信息 $log = new LoginLogModel(); $log->user_id = $sysUser->id; $log->username = $sysUser->username; $log->client_ip = Utils::clientIp(); $log->client = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; $log->referer_url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; $log->created_at = time(); $log->save(); return $this->goHome(); } else { Yii::$app->session->setFlash('error', '账号与密码不匹配,请重新输入'); return $this->redirect(['site/login']); } } /** * 执行退出动作 * @return \yii\web\Response */ public function actionLogout() { Yii::$app->user->logout(); return $this->goHome(); } /** * 编辑器服务端配置 */ public function actionEditorUpload() { $maxSize = 1048576; // 1024 * 1024 = 1MB } /** * 编辑器提示框显示 * @param $msg */ protected function editorAlert($msg) { echo json_encode(array('error' => 1, 'message' => $msg)); exit; } }