From 88470ddb6068d6f23e456b254c76914ab2a765e4 Mon Sep 17 00:00:00 2001
From: 李宇 <986321569@qq.com>
Date: 星期四, 17 十二月 2020 10:59:22 +0800
Subject: [PATCH] 强制改密码

---
 src/main/java/com/nanometer/smartlab/controller/LoginController.java   |   15 +++++++
 src/main/java/com/nanometer/smartlab/controller/UserMngController.java |    5 +-
 src/main/webapp/index.xhtml                                            |   74 ++++++++++++++++++++++++++++--------
 3 files changed, 75 insertions(+), 19 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/controller/LoginController.java b/src/main/java/com/nanometer/smartlab/controller/LoginController.java
index c5626bc..0882071 100644
--- a/src/main/java/com/nanometer/smartlab/controller/LoginController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/LoginController.java
@@ -30,6 +30,7 @@
 
     private String loginAcct;
     private String loginPwd;
+    private static Byte ischange = 0;
 
     public String login() {
         UsernamePasswordToken token = new UsernamePasswordToken(loginAcct, loginPwd);
@@ -48,6 +49,11 @@
         if (currentUser.isAuthenticated()) {//登录成功进入主页
             SysUser user = this.sysUserService.getSysUserByAccount(loginAcct);
             currentUser.getSession(true).setAttribute(Constants.SESSION_USER, user);
+
+            String PW_PATTERN = "^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)[a-zA-Z0-9\\W]{8,}$";
+            if (!loginPwd.matches(PW_PATTERN)) {
+                ischange = 1;
+            }
 
             this.menuController.initPage();
             return Constants.PAGE_INDEX + Constants.REDIRECT;
@@ -77,4 +83,13 @@
     public void setLoginPwd(String loginPwd) {
         this.loginPwd = loginPwd;
     }
+
+
+    public Byte getIschange() {
+        return ischange;
+    }
+
+    public void setIschange(Byte ischange) {
+        this.ischange = ischange;
+    }
 }
diff --git a/src/main/java/com/nanometer/smartlab/controller/UserMngController.java b/src/main/java/com/nanometer/smartlab/controller/UserMngController.java
index d7aefe8..5620c15 100644
--- a/src/main/java/com/nanometer/smartlab/controller/UserMngController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/UserMngController.java
@@ -99,8 +99,7 @@
     }
 
     public void updatePassword() {
-    	    this.username = getUser().getName();
-    	    this.sysUser = getUser();
+        this.username = getUser().getName();
     }
 
 
@@ -267,6 +266,8 @@
 
     public String updatePasswordAction() throws NoSuchAlgorithmException, CharacterCodingException
     {
+        this.sysUser = getUser();
+
 		if(!this.sysUser.getPassword().equals(MD5Utils.encode(this.oriPassword)))
 		{
 			FacesUtils.warn("原密码错误,请重新输入!");
diff --git a/src/main/webapp/index.xhtml b/src/main/webapp/index.xhtml
index 28befa8..789c191 100644
--- a/src/main/webapp/index.xhtml
+++ b/src/main/webapp/index.xhtml
@@ -27,6 +27,7 @@
                         <p:outputLabel value="智慧实验室试剂全过程安全管理系统" style="color: #ffd74a"></p:outputLabel>
                     </p:column>
                     <p:column styleClass="header-personal">
+                        <h:inputHidden id="ischange" value="#{loginController.ischange}"></h:inputHidden>
                         <p:commandLink class="userName" style="margin-right: 30px" value="#{menuController.userName}" action="#{userMngController.updatePassword}" oncomplete="PF('dialogPassword').show();" update=":dialogPassword,:dialogFormPassword"></p:commandLink >
                         <p:commandLink class="logout" action="#{loginController.logout}" ajax="false"></p:commandLink>
                     </p:column>
@@ -36,32 +37,71 @@
         <p:dialog modal="true" header="#{'修改密码'}" appendTo="@(body)"
               id="dialogPassword" widgetVar="dialogPassword"
               resizable="false" width="420">
-        <h:form id="dialogFormPassword">
-            <p:panelGrid columns="1" styleClass="content">
-                <p:outputLabel value="账号"></p:outputLabel>
-                <p:inputText value="#{userMngController.username}" maxlength="100"
+            <h:form id="dialogFormPassword">
+                <p:panelGrid columns="1" styleClass="content">
+                    <p:outputLabel value="账号"></p:outputLabel>
+                     <p:inputText value="#{userMngController.username}" maxlength="100"
                              required="true" requiredMessage="请输入原密码"></p:inputText>
 
-                <p:outputLabel value="原密码"></p:outputLabel>
-                <p:password value="#{userMngController.oriPassword}" maxlength="100"
+                    <p:outputLabel value="原密码"></p:outputLabel>
+                    <p:password value="#{userMngController.oriPassword}" maxlength="100"
                              required="true" requiredMessage="请输入原密码"></p:password>
 
-                <p:outputLabel value="新密码"></p:outputLabel>
-                <p:password value="#{userMngController.newPassword}" maxlength="100"
+                     <p:outputLabel value="新密码"></p:outputLabel>
+                     <p:password value="#{userMngController.newPassword}" maxlength="100"
                              required="true" requiredMessage="请输入新密码"></p:password>
 
-                <p:outputLabel value="确认密码"></p:outputLabel>
+                    <p:outputLabel value="确认密码"></p:outputLabel>
                              <p:password value="#{userMngController.newPasswordSecond}" maxlength="100"
                              required="true" requiredMessage="请输入确认密码"></p:password>
-            </p:panelGrid>
-            <p:panel styleClass="btn">
-                <p:commandButton value="修改" actionListener="#{userMngController.updatePasswordAction}"
+                </p:panelGrid>
+                <p:panel styleClass="btn">
+                    <p:commandButton value="修改" actionListener="#{userMngController.updatePasswordAction}"
                                  process="@form">
-                    <p:confirm header="确认" message="确认操作?"></p:confirm>
-                </p:commandButton>
-            </p:panel>
-        </h:form>
-    </p:dialog>
+                        <p:confirm header="确认" message="确认操作?"></p:confirm>
+                    </p:commandButton>
+                </p:panel>
+            </h:form>
+        </p:dialog>
+
+        <p:dialog modal="true" header="#{'重置密码'}" appendTo="@(body)"
+                  id="changePassword" widgetVar="changePassword"
+                  width="420" style="left: 650px;top: 250px;"
+                  closable="false">
+            <h:form id="changeFormPassword">
+                <p:panelGrid columns="1" styleClass="content">
+                    <p:outputLabel value="账号"></p:outputLabel>
+                    <p:inputText value="#{menuController.userName}" maxlength="100"
+                                 readonly="true"></p:inputText>
+
+                    <p:outputLabel value="原密码"></p:outputLabel>
+                    <p:password value="#{userMngController.oriPassword}" maxlength="100"
+                                required="true" requiredMessage="请输入原密码"></p:password>
+
+                    <p:outputLabel value="新密码"></p:outputLabel>
+                    <p:password value="#{userMngController.newPassword}" maxlength="100"
+                                required="true" requiredMessage="请输入新密码"></p:password>
+
+                    <p:outputLabel value="确认密码"></p:outputLabel>
+                    <p:password value="#{userMngController.newPasswordSecond}" maxlength="100"
+                                required="true" requiredMessage="请输入确认密码"></p:password>
+                </p:panelGrid>
+                <p:panel styleClass="btn">
+                    <p:commandButton value="修改" actionListener="#{userMngController.updatePasswordAction}"
+                                     process="@form">
+                        <p:confirm header="确认" message="确认操作?"></p:confirm>
+                    </p:commandButton>
+                </p:panel>
+            </h:form>
+        </p:dialog>
+        <script>
+            // console.log($('#northForm\\:ischange').val())
+            // if($('#northForm\\:ischange').val() == 0){
+            //     $("#changePassword").hide();
+            // }else {
+            //     $("#changePassword").show();
+            // }
+        </script>
     </ui:define>
 
     <ui:define name="west">

--
Gitblit v1.9.2