From e549d7f015580d8278a9e19353b9260fa5708c20 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Tue, 22 Nov 2016 14:21:05 +0800 Subject: [PATCH] * finish task #2757. --- module/admin/lang/en.php | 4 ++++ module/admin/lang/zh-cn.php | 4 ++++ module/admin/view/safe.html.php | 6 +++++- module/common/model.php | 1 + module/sso/control.php | 4 ++-- module/tutorial/model.php | 1 + module/user/model.php | 6 ++++-- 7 files changed, 21 insertions(+), 5 deletions(-) diff --git a/module/admin/lang/en.php b/module/admin/lang/en.php index 1241408c59..b513f269f2 100644 --- a/module/admin/lang/en.php +++ b/module/admin/lang/en.php @@ -45,6 +45,7 @@ $lang->admin->safe->password = 'Password Security'; $lang->admin->safe->weak = 'Common Weak Password'; $lang->admin->safe->reason = 'Type'; $lang->admin->safe->checkWeak = 'Weak Password Check'; +$lang->admin->safe->modifyPasswordFirstLogin = 'Modify password in frist login'; $lang->admin->safe->modeList[0] = 'N/A'; $lang->admin->safe->modeList[1] = 'Medium'; @@ -56,5 +57,8 @@ $lang->admin->safe->reasonList['mobile'] = 'Same as your mobile number'; $lang->admin->safe->reasonList['phone'] = 'Same as your phone number'; $lang->admin->safe->reasonList['birthday'] = 'Same as your DOB'; +$lang->admin->safe->modifyPasswordList[1] = 'Must'; +$lang->admin->safe->modifyPasswordList[0] = 'No'; + $lang->admin->safe->noticeMode = 'User password will be checked when login, add/edit user password.'; $lang->admin->safe->noticeStrong = 'The more capitalized letters and numbers a password has, the more secure it is!'; diff --git a/module/admin/lang/zh-cn.php b/module/admin/lang/zh-cn.php index 368cd8fe86..a0b7106c37 100644 --- a/module/admin/lang/zh-cn.php +++ b/module/admin/lang/zh-cn.php @@ -45,6 +45,7 @@ $lang->admin->safe->password = '密码安全'; $lang->admin->safe->weak = '常用弱口令'; $lang->admin->safe->reason = '类型'; $lang->admin->safe->checkWeak = '弱口令扫描'; +$lang->admin->safe->modifyPasswordFirstLogin = '首次登陆修改密码'; $lang->admin->safe->modeList[0] = '不检查'; $lang->admin->safe->modeList[1] = '中'; @@ -56,5 +57,8 @@ $lang->admin->safe->reasonList['mobile'] = '与手机相同'; $lang->admin->safe->reasonList['phone'] = '与电话相同'; $lang->admin->safe->reasonList['birthday'] = '与生日相同'; +$lang->admin->safe->modifyPasswordList[1] = '必须修改'; +$lang->admin->safe->modifyPasswordList[0] = '不强制'; + $lang->admin->safe->noticeMode = '系统会在登录、创建和修改用户、修改密码的时候检查用户口令。'; $lang->admin->safe->noticeStrong = '密码长度越长,含有大写字母或数字或特殊符合越多,密码字母越不重复,安全度越强!'; diff --git a/module/admin/view/safe.html.php b/module/admin/view/safe.html.php index 392e15885c..409ddb9aa4 100644 --- a/module/admin/view/safe.html.php +++ b/module/admin/view/safe.html.php @@ -21,7 +21,7 @@
- + @@ -33,6 +33,10 @@ + + + + diff --git a/module/common/model.php b/module/common/model.php index 7e115d43cf..2bbd27d305 100644 --- a/module/common/model.php +++ b/module/common/model.php @@ -1149,6 +1149,7 @@ class commonModel extends model { $module = $this->app->getModuleName(); $method = $this->app->getMethodName(); + if(isset($this->app->user->modifyPassword) and $this->app->user->modifyPassword and $module != 'my' and $method != 'changepassword') die(js::locate(helper::createLink('my', 'changepassword'))); if($this->isOpenMethod($module, $method)) return true; if(!$this->loadModel('user')->isLogon() and $this->server->php_auth_user) $this->user->identifyByPhpAuth(); if(!$this->loadModel('user')->isLogon() and $this->cookie->za) $this->user->identifyByCookie(); diff --git a/module/sso/control.php b/module/sso/control.php index 93f7e7833c..06469f98b7 100644 --- a/module/sso/control.php +++ b/module/sso/control.php @@ -67,9 +67,10 @@ class sso extends control /* Authorize him and save to session. */ $user->rights = $this->user->authorize($user->account); $user->groups = $this->user->getGroups($user->account); + $user->last = date(DT_DATETIME1, $last); + $user->modifyPassword = ($user->visits == 0 and !empty($this->config->safe->modifyPasswordFirstLogin)); $this->dao->update(TABLE_USER)->set('visits = visits + 1')->set('ip')->eq($userIP)->set('last')->eq($last)->where('account')->eq($user->account)->exec(); - $user->last = date(DT_DATETIME1, $last); $this->session->set('user', $user); $this->app->user = $this->session->user; $this->loadModel('action')->create('user', $user->id, 'login'); @@ -169,7 +170,6 @@ class sso extends control /* Authorize him and save to session. */ $user->rights = $this->user->authorize($user->account); $user->groups = $this->user->getGroups($user->account); - $this->dao->update(TABLE_USER)->set('visits = visits + 1')->set('ip')->eq($userIP)->set('last')->eq($last)->where('account')->eq($user->account)->exec(); $user->last = date(DT_DATETIME1, $last); $this->session->set('user', $user); diff --git a/module/tutorial/model.php b/module/tutorial/model.php index 1aa93c62c5..12c9252dff 100644 --- a/module/tutorial/model.php +++ b/module/tutorial/model.php @@ -21,6 +21,7 @@ class tutorialModel extends model { $account = $this->app->user->account; if($account == 'guest') return false; + if(!empty($this->app->user->modifyPassword)) return false; $count = $this->dao->select('count(*) as count')->from(TABLE_ACTION)->where('actor')->eq($account)->fetch('count'); if($count < 10) return true; diff --git a/module/user/model.php b/module/user/model.php index 2f6332675c..00ab656a25 100644 --- a/module/user/model.php +++ b/module/user/model.php @@ -522,7 +522,8 @@ class userModel extends model } $this->dao->update(TABLE_USER)->data($user)->autoCheck()->where('id')->eq((int)$userID)->exec(); - $this->app->user->password = $user->password; + $this->app->user->password = $user->password; + $this->app->user->modifyPassword = false;; } /** @@ -611,8 +612,9 @@ class userModel extends model { $ip = $this->server->remote_addr; $last = $this->server->request_time; + $user->last = date(DT_DATETIME1, $last); + $user->modifyPassword = ($user->visits == 0 and !empty($this->config->safe->modifyPasswordFirstLogin)); $this->dao->update(TABLE_USER)->set('visits = visits + 1')->set('ip')->eq($ip)->set('last')->eq($last)->where('account')->eq($account)->exec(); - $user->last = date(DT_DATETIME1, $user->last); } return $user; }
admin->safe->password?>admin->safe->password?> admin->safe->modeList, isset($config->safe->mode) ? $config->safe->mode : 0)?> admin->safe->noticeMode?>
admin->safe->weak?> safe->weak, "class='form-control' rows='4'")?>
admin->safe->modifyPasswordFirstLogin?>admin->safe->modifyPasswordList, isset($config->safe->modifyPasswordFirstLogin) ? $config->safe->modifyPasswordFirstLogin : 0)?>