平台默认在/BIZ/system/config/sys.config.m配置文件中的配置初始化密码,因此默认的每个人的登录初始密码都是一样的
如果要控制用户登录后修改密码没有修改不让操作功能,可以在登录后控制
如下:
1.在/BIZ/SA/OPM/system/system.process.m中loginAction执行后事件,获取输入的密码跟配置的初始化密码做对比,如果一致可以用session中设置一个值
public static void systemProcessAfterLoginAction() { String pwd = (String) ContextHelper.getActionContext().getParameter("pwd");//获取输入的密码 String curPsw = OrgUtils.saltPassword(pwd);//对输入的密码进行转换 String defaultPsw = OrgUtils.getDefauletEncryptPassword();//获取的配置文件中配置的初始化密码 //和初始密码一致 HttpSession session = ContextHelper.getSessionContext().getSession(); if (curPsw.toUpperCase().equals(defaultPsw)){ session.setAttribute("pwdValue", "default"); } else session.setAttribute("pwdValue", "notDefault"); }
需要注意在BIZ层的构建路径中把apache-tomcat\lib\servlet-api.jar导入,在java中引用
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSession;
2.自己定义一个action获取session中的值返回(本例是通过扩展空间在/BIZ/SA_X/OPM/logic/action下定义的defaultPwdAction)
<action name="defaultPwdAction" global="false" procedure="defaultPwdProcedure"> <label language="zh_CN">判断初始密码</label> </action>
Procedure的定义
<procedure name="defaultPwdProcedure" code-model="/SA_X/OPM/logic/code" code="OPM.defaultPwd"/>
java的定义
import java.math.*; import java.sql.*; import java.util.*; import javax.servlet.http.HttpSession; import org.dom4j.*; import com.justep.system.context.ContextHelper; import com.justep.system.data.*; public class OPM { public static Boolean defaultPwd(){ HttpSession session = ContextHelper.getSessionContext().getSession(); String value = (String) session.getAttribute("pwdValue"); if(value.equals("default")){ return true; } else return false; } }
3.在通过扩展空间在/BIZ/SA_X/OPM/system/system.process.m中动作设置中添加defaultPwdAction,就跟loginAction一样不需要自己分配权限所有的用户都可以操作
4.通过扩展空间修改/UI2/portal/base/base.js
(1).添加引用
var WindowDialog = require("$UI/system/components/justep/windowDialog/windowDialog");
(2).在Model.prototype.loginDialogReceive = function(event) {函数的添加action的调用,打开修改密码的弹出框
Model.prototype.loginDialogReceive = function(event) { this.beforeLogin(); this.setPortalContext(event.data); this.afterLogin(); var root = this.getRootNode(); biz.Request.sendBizRequest({ contentType : "application/json", dataType : "application/json", process : "/SA/OPM/system/systemProcess", activity : "mainActivity", action : "defaultPwdAction", context : this.getContext(), callback : function(resultData) { if (resultData && resultData.state && resultData.response) { var changePasswordDialog = new WindowDialog({ src : "$UI/portal/base/login/changePassword.w", parentNode : root, process : "/portal/process/message/messageProcess", activity : "mainActivity", title : '修改密码', showTitle : false, status: 'normal', });; changePasswordDialog.open(); } } }); };
$UI/portal/base/login/changePassword.w的定义是直接复制的/UI2/portal/base/changePassword下的changePassword.w和对应的js文件
对/UI2/portal_X/base/login/changePassword.js文件中的修改
(1).添加引用
var MsgDialog = require("$UI/system/components/justep/messageDialog/messageDialog");
(2).代码修改
var result = this.changePassword(newValue, oldValue); if(result.flag === false) justep.Util.hint(result.message, {type: 'danger', parent: this.getRootNode()}); else justep.Util.hint("密码修改成功!", {type: 'success', parent: this.getRootNode()});
修改为:
var result = this.changePassword(newValue, oldValue); if (result.flag === false) justep.Util.hint(result.message, { type : 'danger', parent : this.getRootNode() }); else { var me = this; this.msg = new MsgDialog({ parentNode : me.getRootNode(), type : 'OK', message : "密码修改成功,后续请使用新密码登录!", title:'修改密码提示' }); this.msg.on('onOK', function(event) { me.close(); }, me); this.msg.show(); }
评一波