账号找回密码增加租户参数

This commit is contained in:
thinkgem
2025-02-28 17:07:40 +08:00
parent 3bf68070fe
commit 75e6ccf888
7 changed files with 44 additions and 16 deletions

View File

@@ -182,8 +182,8 @@ public class JsonMapper extends ObjectMapper {
* 反序列化POJO或简单Collection如List<String>. * 反序列化POJO或简单Collection如List<String>.
* 如果JSON字符串为Null或"null"字符串, 返回Null. * 如果JSON字符串为Null或"null"字符串, 返回Null.
* 如果JSON字符串为"[]", 返回空集合. * 如果JSON字符串为"[]", 返回空集合.
* 如需反序列化复杂Collection如List<MyBean>, 请使用fromJson(String,JavaType) * 如需反序列化复杂Collection如List<MyBean>, 请使用fromJson(String, Class)
* @see #fromJson(String, JavaType) * @see #fromJson(String, Class)
*/ */
public <T> T fromJsonString(String jsonString, Class<T> clazz) { public <T> T fromJsonString(String jsonString, Class<T> clazz) {
if (StringUtils.isEmpty(jsonString) || "<CLOB>".equals(jsonString)) { if (StringUtils.isEmpty(jsonString) || "<CLOB>".equals(jsonString)) {

View File

@@ -74,9 +74,10 @@ public class AccountController extends BaseController{
@Parameters({ @Parameters({
@Parameter(name = "mobile", description = "手机号码", required = true), @Parameter(name = "mobile", description = "手机号码", required = true),
@Parameter(name = "validCode", description = "图片验证码,防止重复机器人", required = true), @Parameter(name = "validCode", description = "图片验证码,防止重复机器人", required = true),
@Parameter(name = "corpCode", description = "所属租户"),
}) })
public String getLoginValidCode(String mobile, String validCode, HttpServletRequest request) { public String getLoginValidCode(String mobile, String validCode, String corpCode, HttpServletRequest request) {
return getValidCode("login", mobile, validCode, "mobile", request, "登录验证码"); return getValidCode("login", mobile, validCode, "mobile", corpCode, request, "登录验证码");
} }
/** /**
@@ -144,13 +145,14 @@ public class AccountController extends BaseController{
@Parameter(name = "loginCode", description = "登录账号", required = true), @Parameter(name = "loginCode", description = "登录账号", required = true),
@Parameter(name = "validCode", description = "图片验证码,防止重复机器人", required = true), @Parameter(name = "validCode", description = "图片验证码,防止重复机器人", required = true),
@Parameter(name = "validType", description = "验证方式mobile、email", required = true), @Parameter(name = "validType", description = "验证方式mobile、email", required = true),
@Parameter(name = "corpCode", description = "所属租户"),
}) })
@ApiResponses({ @ApiResponse(responseCode = "200", description = "响应对象", content = @Content( schemaProperties = { @ApiResponses({ @ApiResponse(responseCode = "200", description = "响应对象", content = @Content( schemaProperties = {
@SchemaProperty(name = "result", schema = @Schema(description = "结果状态")), @SchemaProperty(name = "result", schema = @Schema(description = "结果状态")),
@SchemaProperty(name = "message", schema = @Schema(description = "返回消息")), @SchemaProperty(name = "message", schema = @Schema(description = "返回消息")),
}))}) }))})
public String getFpValidCode(User user, String validCode, String validType, HttpServletRequest request) { public String getFpValidCode(User user, String validCode, String validType, String corpCode, HttpServletRequest request) {
return getValidCode("fp", user.getLoginCode(), validCode, validType, request, "找回密码"); return getValidCode("fp", user.getLoginCode(), validCode, validType, corpCode, request, "找回密码");
} }
/** /**
@@ -193,7 +195,7 @@ public class AccountController extends BaseController{
* 获取验证码 * 获取验证码
* @author ThinkGem * @author ThinkGem
*/ */
private String getValidCode(String type, String loginCode, String validCode, String validType, HttpServletRequest request, String msgTitle) { private String getValidCode(String type, String loginCode, String validCode, String validType, String corpCode, HttpServletRequest request, String msgTitle) {
// 校验图片验证码,防止重复机器人。 // 校验图片验证码,防止重复机器人。
if (!ValidCodeUtils.validate(request, validCode)){ if (!ValidCodeUtils.validate(request, validCode)){
return renderResult(Global.FALSE, text("图片验证码不正确或已失效,请点击图片刷新!")); return renderResult(Global.FALSE, text("图片验证码不正确或已失效,请点击图片刷新!"));
@@ -206,6 +208,7 @@ public class AccountController extends BaseController{
if ("login".equals(type)){ if ("login".equals(type)){
User where = new User(); User where = new User();
where.setMobile(loginCode); where.setMobile(loginCode);
where.setCorpCode_(corpCode);
where.setStatus(User.STATUS_NORMAL); where.setStatus(User.STATUS_NORMAL);
List<User> userList = userService.findListByMobile(where); List<User> userList = userService.findListByMobile(where);
if (!userList.isEmpty()){ if (!userList.isEmpty()){
@@ -225,7 +228,7 @@ public class AccountController extends BaseController{
return renderResult(Global.FALSE, text("手机号不正确!")); return renderResult(Global.FALSE, text("手机号不正确!"));
} }
} else { } else {
u = UserUtils.getByLoginCode(loginCode); u = UserUtils.getByLoginCode(loginCode, corpCode);
if(u == null){ if(u == null){
return renderResult(Global.FALSE, text("登录账号不正确!")); return renderResult(Global.FALSE, text("登录账号不正确!"));
} }
@@ -300,14 +303,15 @@ public class AccountController extends BaseController{
@Parameters({ @Parameters({
@Parameter(name = "loginCode", description = "登录账号", required = true), @Parameter(name = "loginCode", description = "登录账号", required = true),
@Parameter(name = "validCode", description = "图片验证码,防止重复机器人", required = true), @Parameter(name = "validCode", description = "图片验证码,防止重复机器人", required = true),
@Parameter(name = "corpCode", description = "所属租户"),
}) })
public String getPwdQuestion(String loginCode, String validCode, HttpServletRequest request) { public String getPwdQuestion(String loginCode, String validCode, String corpCode, HttpServletRequest request) {
// 校验图片验证码,防止重复机器人。 // 校验图片验证码,防止重复机器人。
if (!ValidCodeUtils.validate(request, validCode)){ if (!ValidCodeUtils.validate(request, validCode)){
return renderResult(Global.FALSE, text("图片验证码不正确或已失效,请点击图片刷新!")); return renderResult(Global.FALSE, text("图片验证码不正确或已失效,请点击图片刷新!"));
} }
// 账号是否存在验证 // 账号是否存在验证
User u = UserUtils.getByLoginCode(loginCode); User u = UserUtils.getByLoginCode(loginCode, corpCode);
if (u == null){ if (u == null){
return renderResult(Global.FALSE, text("登录账号不正确!")); return renderResult(Global.FALSE, text("登录账号不正确!"));
} }
@@ -353,7 +357,7 @@ public class AccountController extends BaseController{
public String savePwdByPwdQuestion(User user, HttpServletRequest request) { public String savePwdByPwdQuestion(User user, HttpServletRequest request) {
String userCode = UserUtils.getCache("fpUserCode"); String userCode = UserUtils.getCache("fpUserCode");
String loginCode = UserUtils.getCache("fpLoginCode"); String loginCode = UserUtils.getCache("fpLoginCode");
// 一同验证保存的用户名和验证码是否正确(如果只校验验证码,不验证用户名,则会有获取验证码后修改用户名的漏洞) // 一同验证保存的用户名和验证码是否正确(如果只校验验证码,不验证用户名,则会有获取验证码后修改用户名的漏洞)
if (!(userCode != null && loginCode != null && loginCode.equals(user.getLoginCode()))){ if (!(userCode != null && loginCode != null && loginCode.equals(user.getLoginCode()))){
return renderResult(Global.FALSE, text("请重新获取保密问题!")); return renderResult(Global.FALSE, text("请重新获取保密问题!"));
@@ -368,7 +372,7 @@ public class AccountController extends BaseController{
} }
// 验证三个密保问题是否正确。 // 验证三个密保问题是否正确。
User u = UserUtils.getByLoginCode(user.getLoginCode()); User u = UserUtils.get(userCode);
if (!(u != null && loginCode.equals(user.getLoginCode()) if (!(u != null && loginCode.equals(user.getLoginCode())
&& PwdUtils.validatePassword(user.getPwdQuestionAnswer(), u.getPwdQuestionAnswer()) && PwdUtils.validatePassword(user.getPwdQuestionAnswer(), u.getPwdQuestionAnswer())
&& PwdUtils.validatePassword(user.getPwdQuestionAnswer2(), u.getPwdQuestionAnswer2()) && PwdUtils.validatePassword(user.getPwdQuestionAnswer2(), u.getPwdQuestionAnswer2())

View File

@@ -5,6 +5,7 @@
package com.jeesite.modules.sys.web.user; package com.jeesite.modules.sys.web.user;
import com.alibaba.fastjson.JSONValidator; import com.alibaba.fastjson.JSONValidator;
import com.jeesite.common.cache.CacheUtils;
import com.jeesite.common.codec.EncodeUtils; import com.jeesite.common.codec.EncodeUtils;
import com.jeesite.common.collect.ListUtils; import com.jeesite.common.collect.ListUtils;
import com.jeesite.common.collect.MapUtils; import com.jeesite.common.collect.MapUtils;
@@ -125,6 +126,15 @@ public class EmpUserController extends BaseController {
// // 查询 SQL 结果集中,仅包含 userCode、employee.office.officeCode 值返回 // // 查询 SQL 结果集中,仅包含 userCode、employee.office.officeCode 值返回
// empUser.sqlMap().getColumn().setIncludeAttrNames(attrNames); // empUser.sqlMap().getColumn().setIncludeAttrNames(attrNames);
Page<EmpUser> page = empUserService.findPage(empUser); Page<EmpUser> page = empUserService.findPage(empUser);
Object o = CacheUtils.get("testCache", "abc", null, 20);
System.out.println(o);
CacheUtils.put("testCache", "abc", "def", 22);
o = CacheUtils.get("testCache", "abc", null, 23);
System.out.println(o);
CacheUtils.get("test2Cache", "abc", null, 20);
CacheUtils.put("test2Cache", "abc", "def", 22);
CacheUtils.get("test2Cache", "abc", null, 23);
return page; return page;
} }

View File

@@ -18,6 +18,16 @@
<option value="question">使用保密问题找回您的密码</option> <option value="question">使用保密问题找回您的密码</option>
</select> </select>
</div> </div>
<% if(@Global.isUseCorpModel()){ %>
<div class="form-group has-feedback">
<#form:treeselect id="fa_corp" title="${text('选择租户')}" allowClear="true"
name="corpCode" value="${@CorpUtils.getCurrentCorpCode()}" labelName="corpName"
labelValue="(${@CorpUtils.getCurrentCorpCode()}) ${@CorpUtils.getCurrentCorpName()}"
url="${ctx}/sys/corpAdmin/treeData?isShowCode=true"
class="required" data-msg-required="请选择所属租户."
placeholder="${text('所属租户')}"/>
</div>
<% } %>
<div class="form-group has-feedback"> <div class="form-group has-feedback">
<span class="fa fa-user form-control-feedback"></span> <span class="fa fa-user form-control-feedback"></span>
<input type="text" id="fp_loginCode" name="loginCode" class="form-control required" data-msg-required="请填写登录账号." placeholder="登录账号" /> <input type="text" id="fp_loginCode" name="loginCode" class="form-control required" data-msg-required="请填写登录账号." placeholder="登录账号" />

View File

@@ -20,7 +20,8 @@
<% if(@Global.isUseCorpModel()){ %> <% if(@Global.isUseCorpModel()){ %>
<div class="form-group has-feedback"> <div class="form-group has-feedback">
<#form:treeselect id="reg_corp" title="${text('选择租户')}" allowClear="true" <#form:treeselect id="reg_corp" title="${text('选择租户')}" allowClear="true"
name="corpCode" value="0" labelName="corpName" labelValue="JeeSite" name="corpCode" value="${@CorpUtils.getCurrentCorpCode()}" labelName="corpName"
labelValue="(${@CorpUtils.getCurrentCorpCode()}) ${@CorpUtils.getCurrentCorpName()}"
url="${ctx}/sys/corpAdmin/treeData?isShowCode=true" url="${ctx}/sys/corpAdmin/treeData?isShowCode=true"
class="required" data-msg-required="请选择所属租户." class="required" data-msg-required="请选择所属租户."
placeholder="${text('所属租户')}"/> placeholder="${text('所属租户')}"/>

View File

@@ -46,7 +46,8 @@ $(function(){
js.ajaxSubmit(ctxPath + '/account/getFpValidCode', { js.ajaxSubmit(ctxPath + '/account/getFpValidCode', {
validType: $('#fp_validType').val(), validType: $('#fp_validType').val(),
loginCode : $('#fp_loginCode').val(), loginCode : $('#fp_loginCode').val(),
validCode : $('#fp_validCode').val() validCode : $('#fp_validCode').val(),
corpCode : $('#fp_corpCode').val()
}, function(data){ }, function(data){
js.showMessage(data.message); js.showMessage(data.message);
if (data.result == 'true'){ if (data.result == 'true'){
@@ -61,7 +62,8 @@ $(function(){
$('#fp_getQuestion').click(function() { $('#fp_getQuestion').click(function() {
js.ajaxSubmit(ctxPath + '/account/getPwdQuestion', { js.ajaxSubmit(ctxPath + '/account/getPwdQuestion', {
loginCode : $('#fp_loginCode').val(), loginCode : $('#fp_loginCode').val(),
validCode : $('#fp_validCode').val() validCode : $('#fp_validCode').val(),
corpCode : $('#fp_corpCode').val()
}, function(data){ }, function(data){
js.showMessage(data.message); js.showMessage(data.message);
if (data.result == 'true'){ if (data.result == 'true'){

View File

@@ -66,7 +66,8 @@ $(function(){
var $this = this; var $this = this;
js.ajaxSubmit(ctxPath + '/account/getLoginValidCode', { js.ajaxSubmit(ctxPath + '/account/getLoginValidCode', {
mobile : $('#mobile').val(), mobile : $('#mobile').val(),
validCode : $('#validCode').val() validCode : $('#validCode').val(),
corpCode : $('#switchCorpSelectCode').val()
}, function(data){ }, function(data){
js.showMessage(data.message); js.showMessage(data.message);
if (data.result == 'true'){ if (data.result == 'true'){