提交 58d02435 编写于 作者: 偏锋书生's avatar 偏锋书生

密码登陆和用户修改

上级 4ff6e304
...@@ -8,12 +8,16 @@ import org.apache.tapestry5.http.services.Request; ...@@ -8,12 +8,16 @@ import org.apache.tapestry5.http.services.Request;
import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.annotations.Inject;
import org.slf4j.Logger; import org.slf4j.Logger;
import cn.hutool.crypto.digest.BCrypt;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wicp.tams.app.duckula.controller.bean.models.SysUser; import net.wicp.tams.app.duckula.controller.bean.models.SysUser;
import net.wicp.tams.app.duckula.controller.dao.SysUserMapper; import net.wicp.tams.app.duckula.controller.dao.SysUserMapper;
import net.wicp.tams.common.Result;
import net.wicp.tams.common.apiext.CollectionUtil; import net.wicp.tams.common.apiext.CollectionUtil;
import net.wicp.tams.common.apiext.PwdUtil;
import net.wicp.tams.common.apiext.StringUtil; import net.wicp.tams.common.apiext.StringUtil;
import net.wicp.tams.common.constant.dic.YesOrNo; import net.wicp.tams.common.constant.dic.YesOrNo;
import net.wicp.tams.component.tools.TapestryAssist;
import net.wicp.tams.duckula.ops.beans.SessionBean; import net.wicp.tams.duckula.ops.beans.SessionBean;
@Import(stack = "easyuistack") @Import(stack = "easyuistack")
...@@ -44,7 +48,8 @@ public class Login { ...@@ -44,7 +48,8 @@ public class Login {
return Login.class; return Login.class;
} }
SysUser sysUser = selUsers.get(0); SysUser sysUser = selUsers.get(0);
if(!sysUser.getPassword().equals(pwd)) { boolean checkpw = BCrypt.checkpw(pwd, sysUser.getPassword());
if (!checkpw) {
log.error("用户{}密码有误", userName); log.error("用户{}密码有误", userName);
return Login.class; return Login.class;
} }
......
...@@ -5,9 +5,10 @@ import java.util.HashMap; ...@@ -5,9 +5,10 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.servlet.ServletContext;
import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.tapestry5.SymbolConstants; import org.apache.tapestry5.SymbolConstants;
import org.apache.tapestry5.annotations.Environmental; import org.apache.tapestry5.annotations.Environmental;
import org.apache.tapestry5.annotations.Property; import org.apache.tapestry5.annotations.Property;
...@@ -20,29 +21,18 @@ import org.apache.tapestry5.ioc.annotations.Symbol; ...@@ -20,29 +21,18 @@ import org.apache.tapestry5.ioc.annotations.Symbol;
import org.apache.tapestry5.services.javascript.JavaScriptSupport; import org.apache.tapestry5.services.javascript.JavaScriptSupport;
import org.apache.tapestry5.util.TextStreamResponse; import org.apache.tapestry5.util.TextStreamResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cn.hutool.core.bean.BeanUtil;
import net.wicp.tams.app.duckula.controller.bean.models.SysUser;
import net.wicp.tams.cas.convert.ConvertValueOpt;
import net.wicp.tams.common.Result; import net.wicp.tams.common.Result;
import net.wicp.tams.common.apiext.DateUtil; import net.wicp.tams.common.apiext.DateUtil;
import net.wicp.tams.common.apiext.NumberUtil; import net.wicp.tams.common.apiext.NumberUtil;
import net.wicp.tams.common.apiext.ReflectAssist;
import net.wicp.tams.common.apiext.StringUtil; import net.wicp.tams.common.apiext.StringUtil;
import net.wicp.tams.common.apiext.json.EasyUiAssist; import net.wicp.tams.common.apiext.json.EasyUiAssist;
import net.wicp.tams.common.callback.IConvertObj;
import net.wicp.tams.common.callback.IConvertValue; import net.wicp.tams.common.callback.IConvertValue;
import net.wicp.tams.common.callback.impl.convertvalue.ConvertValueEnum; import net.wicp.tams.common.callback.impl.convertvalue.ConvertValueEnum;
import net.wicp.tams.component.services.ISupportedLocales; import net.wicp.tams.component.services.ISupportedLocales;
import net.wicp.tams.component.tools.TapestryAssist; import net.wicp.tams.component.tools.TapestryAssist;
import net.wicp.tams.duckula.ops.WebTools;
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
public abstract class ParentPage { public abstract class ParentPage {
// private static Logger logger = LoggerFactory.getLogger(ParentPage.class);
@InjectService("locales") @InjectService("locales")
protected ISupportedLocales supportedLocales; protected ISupportedLocales supportedLocales;
...@@ -63,78 +53,13 @@ public abstract class ParentPage { ...@@ -63,78 +53,13 @@ public abstract class ParentPage {
@Symbol(SymbolConstants.CONTEXT_PATH) @Symbol(SymbolConstants.CONTEXT_PATH)
@Property @Property
protected String contextPath; protected String contextPath;
@Inject
protected ServletContext servletContext;
@Property @Property
protected String lan = supportedLocales.getCurLocale().getLanguage();// 当前选择语言 protected String lan = supportedLocales.getCurLocale().getLanguage();// 当前选择语言
protected final IConvertValue optConvert = new ConvertValueOpt(supportedLocales);
/***
* mybatis查询封装
*
* @param <T> mybatis的po
* @param mapper mybatis的mapper
* @param queryWrapper mybatis的查询封装
* @return L:数据,R:数据的总量
*/
public <T> Pair<List<T>, Long> query(BaseMapper<T> mapper, QueryWrapper<T> queryWrapper) {
String needpage = request.getParameter("needpage");
boolean isPage = StringUtil.isNotNull(needpage) && !Boolean.parseBoolean(needpage) ? false : true;
List<T> selectList = null;
long size = 0;
if (isPage) {// 需要分页,默认
Page<T> selectPage = mapper.selectPage(WebTools.buildPage(request), queryWrapper);
selectList = selectPage.getRecords();
size = selectPage.getTotal();
} else {
selectList = mapper.selectList(queryWrapper);
size = selectList.size();
}
return Pair.of(selectList, size);
}
/***
* 保存或修改对象
*
* @param <T>
* @param mapper
* @param tClass
* @return
*/
public <T> TextStreamResponse saveCommon(Class<T> tClass, BaseMapper<T> mapper, IUpdateObj<T> callback) {
final T po = TapestryAssist.getBeanFromPage(tClass, requestGlobals);
if (callback != null) {
callback.doUpdate(po, BeanUtil.getFieldValue(po, "id") == null);
}
if (BeanUtil.getFieldValue(po, "id") == null) {
mapper.insert(po);
} else {
ReflectAssist.invokeMothed(mapper, "updateByPrimaryKeySelective", po);
}
return TapestryAssist.getTextStreamResponse(Result.getSuc());
}
public <T> TextStreamResponse saveCommon(Class<T> tClass, BaseMapper<T> mapper) {
return saveCommon(tClass, mapper, null);
}
protected interface IUpdateObj<V> {
public void doUpdate(V po, boolean isInsert);
}
/***
* 删除对象
*
* @param <T>
* @param mapper
* @return
*/
public <T> TextStreamResponse delCommon(BaseMapper<T> mapper) {
String id = request.getParameter("id");
mapper.deleteById(id);
return TapestryAssist.getTextStreamResponse(Result.getSuc());
}
/**** /****
* 国际化方法 可以把数据库取出来的值进行国际化 eg:${L('order.channel')} * 国际化方法 可以把数据库取出来的值进行国际化 eg:${L('order.channel')}
* *
...@@ -233,7 +158,7 @@ public abstract class ParentPage { ...@@ -233,7 +158,7 @@ public abstract class ParentPage {
protected final String getJsonForGridForI18n(List<?> fromList, String[] titles, long recordNum, protected final String getJsonForGridForI18n(List<?> fromList, String[] titles, long recordNum,
String... convertTitles) { String... convertTitles) {
IConvertValue[] convert = null; IConvertValue[] convert = null;
if (ArrayUtils.isNotEmpty(convertTitles)) { if (org.apache.commons.lang3.ArrayUtils.isNotEmpty(convertTitles)) {
// titles=org.apache.commons.lang3.ArrayUtils.addAll(titles, // titles=org.apache.commons.lang3.ArrayUtils.addAll(titles,
// convertTitles); // convertTitles);
convert = new IConvertValue[titles.length + convertTitles.length]; convert = new IConvertValue[titles.length + convertTitles.length];
......
package net.wicp.tams.duckula.ops.pages;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.tuple.MutableTriple;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.util.TextStreamResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cn.hutool.core.bean.BeanUtil;
import lombok.extern.slf4j.Slf4j;
import net.wicp.tams.common.Result;
import net.wicp.tams.common.annotation.TamsBean;
import net.wicp.tams.common.apiext.ReflectAssist;
import net.wicp.tams.common.apiext.StringUtil;
import net.wicp.tams.common.apiext.json.EasyUiAssist;
import net.wicp.tams.common.callback.IConvertValue;
import net.wicp.tams.component.tools.TapestryAssist;
import net.wicp.tams.duckula.ops.WebTools;
@Slf4j
public abstract class ParentPageBean<T> extends ParentPage {
@SuppressWarnings("unchecked")
public Class<T> getTClass() {
Class<T> tClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass())
.getActualTypeArguments()[0];
return tClass;
}
@SuppressWarnings("rawtypes")
protected MutableTriple<String, String[], Map<String, IConvertValue>> queryAssetInfo = EasyUiAssist
.getQueryAssetInfo(getTClass());
protected Pair<List<Field>, List<Field>> querySaveInfo = EasyUiAssist.getQuerySaveInfo(getTClass());
@Property
private String cols = queryAssetInfo.left;
@Property
private TamsBean tamsbean = getTClass().getAnnotation(TamsBean.class);
protected final T t = TapestryAssist.getBeanFromPage(getTClass(), requestGlobals);
public TextStreamResponse onSave() {
final T saveBean = TapestryAssist.getBeanFromPage(getTClass(), requestGlobals);
String id = request.getParameter("id");
boolean isInsert = false;
if (StringUtil.isNull(id)) {
isInsert = true;
} else {
isInsert = false;
}
try {
doSave(saveBean, isInsert);
} catch (Throwable e) {
log.error("save data error", e);
return TapestryAssist.getTextStreamResponse(Result.getError(e.getMessage()));
}
return TapestryAssist.getTextStreamResponse(Result.getSuc());
}
public TextStreamResponse onDel() {
String id = request.getParameter("id");
if (StringUtil.isNull(id)) {
return TapestryAssist.getTextStreamResponse(Result.getSuc("没有拿到id,不能进行删除"));
}
try {
doDel(id);
} catch (Throwable e) {
log.error("delete data error", e);
return TapestryAssist.getTextStreamResponse(Result.getError(e.getMessage()));
}
return TapestryAssist.getTextStreamResponse(Result.getSuc());
}
public String getUrl() {
String retUrl = tamsbean.url();
if (StringUtil.isNull(retUrl)) {
// 页面所在的类名
String name = getClass().getName();
String initParameter = servletContext.getInitParameter("tapestry.app-package");
retUrl = name.replace(initParameter + ".pages", "").replace(".", "/");
}
return retUrl;
}
public abstract void doSave(T t, boolean isInsert);
public abstract void doDel(String id);
////////////////////////////////////////////////////////////// mytatis特有的/////////////////////////////////////////////////////////////////////////////////
public abstract BaseMapper<T> getBaseMapper();
public abstract void packageQuery(T t, QueryWrapper<T> queryWrapper);
@SuppressWarnings("rawtypes")
protected Pair<String[], Map<String, IConvertValue>> packageConvert() {
return Pair.of(this.queryAssetInfo.middle, this.queryAssetInfo.right);
};
@SuppressWarnings("rawtypes")
public TextStreamResponse onQuery() {
final T t = TapestryAssist.getBeanFromPage(getTClass(), requestGlobals);
QueryWrapper<T> queryWrapper = new QueryWrapper<T>();
this.packageQuery(t, queryWrapper);// 组装查询
BaseMapper<T> mapper = getBaseMapper();
Pair<List<T>, Long> query = this.query(mapper, queryWrapper);
// Pair<List<SysUser>, Long> query = doQuery(t, queryWrapper);
Pair<String[], Map<String, IConvertValue>> packageConvert = packageConvert();
String retstr = EasyUiAssist.getJsonForGridAlias2(query.getLeft(), packageConvert.getLeft(),
packageConvert.getRight(), query.getRight());
return TapestryAssist.getTextStreamResponse(retstr);
}
/***
* mybatis查询封装
*
* @param <T> mybatis的po
* @param mapper mybatis的mapper
* @param queryWrapper mybatis的查询封装
* @return L:数据,R:数据的总量
*/
public <T> Pair<List<T>, Long> query(BaseMapper<T> mapper, QueryWrapper<T> queryWrapper) {
String needpage = request.getParameter("needpage");
boolean isPage = StringUtil.isNotNull(needpage) && !Boolean.parseBoolean(needpage) ? false : true;
List<T> selectList = null;
long size = 0;
if (isPage) {// 需要分页,默认
Page<T> selectPage = mapper.selectPage(WebTools.buildPage(request), queryWrapper);
selectList = selectPage.getRecords();
size = selectPage.getTotal();
} else {
selectList = mapper.selectList(queryWrapper);
size = selectList.size();
}
return Pair.of(selectList, size);
}
/***
* 保存或修改对象
*
* @param <T>
* @param mapper
* @param tClass
* @return
*/
public TextStreamResponse saveCommon(BaseMapper<T> mapper, IUpdateObj<T> callback) {
final T po = TapestryAssist.getBeanFromPage(getTClass(), requestGlobals);
if (callback != null) {
callback.doUpdate(po, BeanUtil.getFieldValue(po, "id") == null);
}
if (BeanUtil.getFieldValue(po, "id") == null) {
mapper.insert(po);
} else {
ReflectAssist.invokeMothed(mapper, "updateByPrimaryKeySelective", po);
}
return TapestryAssist.getTextStreamResponse(Result.getSuc());
}
public TextStreamResponse saveCommon(BaseMapper<T> mapper) {
return saveCommon(mapper, null);
}
protected interface IUpdateObj<V> {
public void doUpdate(V po, boolean isInsert);
}
}
package net.wicp.tams.duckula.ops.pages.cas; package net.wicp.tams.duckula.ops.pages.cas;
import java.util.List; import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.util.TextStreamResponse; import org.apache.tapestry5.util.TextStreamResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import cn.hutool.crypto.digest.BCrypt; import cn.hutool.crypto.digest.BCrypt;
import net.wicp.tams.app.duckula.controller.bean.models.SysUser; import net.wicp.tams.app.duckula.controller.bean.models.SysUser;
...@@ -17,51 +19,32 @@ import net.wicp.tams.common.apiext.CollectionUtil; ...@@ -17,51 +19,32 @@ import net.wicp.tams.common.apiext.CollectionUtil;
import net.wicp.tams.common.apiext.PwdUtil; import net.wicp.tams.common.apiext.PwdUtil;
import net.wicp.tams.common.apiext.StringUtil; import net.wicp.tams.common.apiext.StringUtil;
import net.wicp.tams.common.apiext.json.EasyUiAssist; import net.wicp.tams.common.apiext.json.EasyUiAssist;
import net.wicp.tams.common.callback.IConvertValue;
import net.wicp.tams.common.callback.impl.convertvalue.ConvertValueEnum; import net.wicp.tams.common.callback.impl.convertvalue.ConvertValueEnum;
import net.wicp.tams.common.constant.dic.Gender; import net.wicp.tams.common.constant.dic.Gender;
import net.wicp.tams.common.constant.dic.YesOrNo; import net.wicp.tams.common.constant.dic.YesOrNo;
import net.wicp.tams.common.jdbc.convert.ConvertValueMysql; import net.wicp.tams.common.jdbc.convert.ConvertValueMysql;
import net.wicp.tams.component.tools.TapestryAssist; import net.wicp.tams.component.tools.TapestryAssist;
import net.wicp.tams.duckula.ops.pages.ParentPage; import net.wicp.tams.duckula.ops.pages.ParentPageBean;
public class UserManager extends ParentPage { public class UserManager extends ParentPageBean<SysUser> {
@Inject @Inject
private SysUserMapper sysUserExample; private SysUserMapper sysUserMapper;
public TextStreamResponse onQuery() { @Override
// ajax.req(key, params); public void packageQuery(SysUser t, QueryWrapper<SysUser> queryWrapper) {
final SysUser sysUser = TapestryAssist.getBeanFromPage(SysUser.class, requestGlobals); if (StringUtil.isNotNull(t.getUserName())) {
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<SysUser>(); queryWrapper.likeRight("user_name", t.getUserName());
if (StringUtil.isNotNull(sysUser.getUserName())) {
queryWrapper.likeRight("user_name", sysUser.getUserName());
} }
ConvertValueMysql orgCv = new ConvertValueMysql(ColsSysOrg.db, ColsSysOrg.tb, "org_name");
Pair<List<SysUser>, Long> query = query(sysUserExample, queryWrapper);
String retstr = EasyUiAssist.getJsonForGridAlias2(query.getLeft(),
new String[] { "orgId,orgId1", "status,status1", "gender,gender1" },
CollectionUtil.newMap("orgId1", orgCv, "status1", new ConvertValueEnum(YesOrNo.class), "gender1",
new ConvertValueEnum(Gender.class)),
query.getRight());
return TapestryAssist.getTextStreamResponse(retstr);
} }
@Override
public TextStreamResponse onSave() { protected Pair<String[], Map<String, IConvertValue>> packageConvert() {
return saveCommon(SysUser.class, sysUserExample, new IUpdateObj<SysUser>() { ConvertValueMysql orgCv = new ConvertValueMysql(ColsSysOrg.db, ColsSysOrg.tb, "org_name");
@Override return Pair.of(new String[] { "orgId,orgId1", "status,status1", "gender,gender1" },
public void doUpdate(SysUser po, boolean isInsert) { CollectionUtil.newMap("orgId1", orgCv, "status1", new ConvertValueEnum(YesOrNo.class), "gender1",
if (isInsert) { new ConvertValueEnum(Gender.class)));
po.setPassword(PwdUtil.hashpw("123456"));// 初始化密码
} else {
po.setPassword(null);// 不能修改密码
}
}
});
}
public TextStreamResponse onDel() {
return delCommon(sysUserExample);
} }
public TextStreamResponse onSavePwd() { public TextStreamResponse onSavePwd() {
...@@ -77,7 +60,7 @@ public class UserManager extends ParentPage { ...@@ -77,7 +60,7 @@ public class UserManager extends ParentPage {
if (pwdOld.equals(pwdNew)) { if (pwdOld.equals(pwdNew)) {
return TapestryAssist.getTextStreamResponse(Result.getError("旧密码与新密码不能相同")); return TapestryAssist.getTextStreamResponse(Result.getError("旧密码与新密码不能相同"));
} }
SysUser sysUser = sysUserExample.selectById(id); SysUser sysUser = this.sysUserMapper.selectById(id);
// 要不要检查旧密码 // 要不要检查旧密码
boolean checkpw = BCrypt.checkpw(pwdOld, sysUser.getPassword()); boolean checkpw = BCrypt.checkpw(pwdOld, sysUser.getPassword());
if (!checkpw) { if (!checkpw) {
...@@ -87,7 +70,7 @@ public class UserManager extends ParentPage { ...@@ -87,7 +70,7 @@ public class UserManager extends ParentPage {
SysUser user = new SysUser(); SysUser user = new SysUser();
user.setId(id); user.setId(id);
user.setPassword(PwdUtil.hashpw(pwdNew)); user.setPassword(PwdUtil.hashpw(pwdNew));
sysUserExample.updateByPrimaryKeySelective(user); this.sysUserMapper.updateByPrimaryKeySelective(user);
return TapestryAssist.getTextStreamResponse(Result.getSuc()); return TapestryAssist.getTextStreamResponse(Result.getSuc());
} }
...@@ -96,8 +79,31 @@ public class UserManager extends ParentPage { ...@@ -96,8 +79,31 @@ public class UserManager extends ParentPage {
SysUser user = new SysUser(); SysUser user = new SysUser();
user.setId(id); user.setId(id);
user.setPassword(PwdUtil.hashpw("123456")); user.setPassword(PwdUtil.hashpw("123456"));
sysUserExample.updateByPrimaryKeySelective(user); this.sysUserMapper.updateByPrimaryKeySelective(user);
return TapestryAssist.getTextStreamResponse(Result.getSuc()); return TapestryAssist.getTextStreamResponse(Result.getSuc());
} }
@Override
public void doSave(SysUser t, boolean isInsert) {
if (isInsert) {
t.setPassword(PwdUtil.hashpw("123456"));// 初始化密码
this.sysUserMapper.insert(t);
} else {
t.setPassword(null);// 不能修改密码
this.sysUserMapper.updateByPrimaryKeySelective(t);
}
}
@Override
public void doDel(String id) {
this.sysUserMapper.deleteById(id);
}
@Override
public BaseMapper<SysUser> getBaseMapper() {
return this.sysUserMapper;
}
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册