mirror of https://github.com/Rekoe/rk_svnadmin
fix
parent
4c7e131e65
commit
d2743c0539
|
@ -1,6 +1,7 @@
|
||||||
package com.rekoe.module.admin;
|
package com.rekoe.module.admin;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
@ -13,18 +14,24 @@ import org.nutz.dao.Cnd;
|
||||||
import org.nutz.ioc.loader.annotation.Inject;
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
import org.nutz.lang.Strings;
|
import org.nutz.lang.Strings;
|
||||||
|
import org.nutz.log.Log;
|
||||||
|
import org.nutz.log.Logs;
|
||||||
import org.nutz.mvc.annotation.At;
|
import org.nutz.mvc.annotation.At;
|
||||||
|
import org.nutz.mvc.annotation.Attr;
|
||||||
import org.nutz.mvc.annotation.Ok;
|
import org.nutz.mvc.annotation.Ok;
|
||||||
import org.nutz.mvc.annotation.Param;
|
import org.nutz.mvc.annotation.Param;
|
||||||
|
|
||||||
import com.rekoe.annotation.PermissionTag;
|
import com.rekoe.annotation.PermissionTag;
|
||||||
import com.rekoe.common.Message;
|
import com.rekoe.common.Message;
|
||||||
import com.rekoe.common.page.Pagination;
|
import com.rekoe.common.page.Pagination;
|
||||||
|
import com.rekoe.domain.Pj;
|
||||||
import com.rekoe.domain.ProjectConfig;
|
import com.rekoe.domain.ProjectConfig;
|
||||||
import com.rekoe.domain.Usr;
|
import com.rekoe.domain.Usr;
|
||||||
import com.rekoe.module.BaseAction;
|
import com.rekoe.module.BaseAction;
|
||||||
import com.rekoe.service.EmailService;
|
import com.rekoe.service.EmailService;
|
||||||
import com.rekoe.service.ProjectConfigService;
|
import com.rekoe.service.ProjectConfigService;
|
||||||
|
import com.rekoe.service.ProjectService;
|
||||||
|
import com.rekoe.service.SvnService;
|
||||||
import com.rekoe.service.SvnUserService;
|
import com.rekoe.service.SvnUserService;
|
||||||
import com.rekoe.utils.EncryptUtil;
|
import com.rekoe.utils.EncryptUtil;
|
||||||
|
|
||||||
|
@ -32,6 +39,8 @@ import com.rekoe.utils.EncryptUtil;
|
||||||
@At("/admin/svn/user")
|
@At("/admin/svn/user")
|
||||||
public class AdminSvnUserAct extends BaseAction {
|
public class AdminSvnUserAct extends BaseAction {
|
||||||
|
|
||||||
|
private final static Log log = Logs.get();
|
||||||
|
|
||||||
private static final char[] RANDOM_ARRY_CHAR = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
|
private static final char[] RANDOM_ARRY_CHAR = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
|
@ -73,6 +82,12 @@ public class AdminSvnUserAct extends BaseAction {
|
||||||
@Inject
|
@Inject
|
||||||
private ProjectConfigService projectConfigService;
|
private ProjectConfigService projectConfigService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private SvnService svnService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private ProjectService projectService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重置账号密码
|
* 重置账号密码
|
||||||
*
|
*
|
||||||
|
@ -84,15 +99,27 @@ public class AdminSvnUserAct extends BaseAction {
|
||||||
@Ok("json")
|
@Ok("json")
|
||||||
@RequiresPermissions("svn.user:add")
|
@RequiresPermissions("svn.user:add")
|
||||||
@PermissionTag(name = "SVN添加账号", tag = "SVN账号管理", enable = false)
|
@PermissionTag(name = "SVN添加账号", tag = "SVN账号管理", enable = false)
|
||||||
public Message restpwd(@Param("usr") String usr, HttpServletRequest req) {
|
public Message restpwd(@Param("usr") String usr, @Attr("usr") Usr manager, HttpServletRequest req) {
|
||||||
Usr user = svnUserService.fetch(Cnd.where("usr", "=", usr));
|
Usr user = svnUserService.fetch(Cnd.where("usr", "=", usr));
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
return Message.error("error.account.empty", req);
|
return Message.error("error.account.empty", req);
|
||||||
}
|
}
|
||||||
String code = RandomStringUtils.random(7, RANDOM_ARRY_CHAR);
|
String code = RandomStringUtils.random(7, RANDOM_ARRY_CHAR);
|
||||||
svnUserService.update(Chain.make("psw", EncryptUtil.encrypt(code)), Cnd.where("usr", "=", usr));
|
svnUserService.update(Chain.make("psw", EncryptUtil.encrypt(code)), Cnd.where("usr", "=", usr));
|
||||||
ProjectConfig conf = projectConfigService.get();
|
if (usr.equals(manager.getUsr())) {
|
||||||
emailNotify(user, emailService, conf, user.getEmail(), code);
|
req.getSession().setAttribute("usr", svnUserService.fetch(Cnd.where("usr", "=", usr)));
|
||||||
|
}
|
||||||
|
List<Pj> list = svnUserService.getPjList(usr);
|
||||||
|
if (list != null) {
|
||||||
|
for (Pj pj : list) {
|
||||||
|
try {
|
||||||
|
this.svnService.exportConfig(pj);
|
||||||
|
} catch (Exception e) {
|
||||||
|
projectService.deleteDB(pj.getPj());
|
||||||
|
log.errorf("project %s ,error %s", pj.getPj(), e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return Message.success("ok", req);
|
return Message.success("ok", req);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,19 @@
|
||||||
package com.rekoe.service;
|
package com.rekoe.service;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
import org.nutz.dao.Cnd;
|
import org.nutz.dao.Cnd;
|
||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
|
import org.nutz.dao.Sqls;
|
||||||
|
import org.nutz.dao.sql.Sql;
|
||||||
|
import org.nutz.dao.sql.SqlCallback;
|
||||||
import org.nutz.ioc.aop.Aop;
|
import org.nutz.ioc.aop.Aop;
|
||||||
import org.nutz.ioc.loader.annotation.Inject;
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
@ -155,15 +163,53 @@ public class ProjectService extends BaseService<Pj> {
|
||||||
|
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
public void delete(String pj) {
|
public void delete(String pj) {
|
||||||
|
deleteDB(pj);
|
||||||
|
svnService.exportConfig(pj);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteDB(String pj) {
|
||||||
projectAuthService.deletePj(pj);
|
projectAuthService.deletePj(pj);
|
||||||
projectGroupUsrService.deletePj(pj);
|
projectGroupUsrService.deletePj(pj);
|
||||||
projectGroupService.deletePj(pj);
|
projectGroupService.deletePj(pj);
|
||||||
projectUserService.deletePj(pj);
|
projectUserService.deletePj(pj);
|
||||||
svnService.exportConfig(pj);
|
|
||||||
dao().clear(getEntityClass(), Cnd.where("pj", "=", pj));
|
dao().clear(getEntityClass(), Cnd.where("pj", "=", pj));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void update(Pj pj) {
|
public void update(Pj pj) {
|
||||||
dao().update(pj);
|
dao().update(pj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param usr
|
||||||
|
* 用户
|
||||||
|
* @return 用户有权限的项目列表(用户是否是这个项目的管理员)
|
||||||
|
*/
|
||||||
|
public List<Pj> getList(String usr) {
|
||||||
|
Sql sql = Sqls.create("select p.pj,p.des,p.type,pm.pj manager from ( " + " select distinct a.pj,a.des,a.type from pj a where " + " exists (select b.usr from pj_gr_usr b where a.pj=b.pj and b.usr=@usr) " + " or exists(select c.usr from pj_usr_auth c where a.pj=c.pj and c.usr=@usr) " + " ) p " + " left join ( " + " select distinct a.pj from pj a where " + " exists (select b.usr from pj_gr_usr b where a.pj=b.pj and b.usr=@usr and b.gr like @like)" + " ) pm on p.pj=pm.pj");
|
||||||
|
final List<Pj> list = new ArrayList<Pj>();
|
||||||
|
sql.setCallback(new SqlCallback() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object invoke(Connection conn, ResultSet rs, Sql sql) throws SQLException {
|
||||||
|
while (rs.next()) {
|
||||||
|
Pj pj = readPj(rs);
|
||||||
|
String manager = rs.getString("manager");// 是否是管理员组的用户
|
||||||
|
pj.setManager(StringUtils.isNotBlank(manager));
|
||||||
|
list.add(pj);
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
sql.setParam("usr", usr).setParam("like", "%" + Constants.GROUP_MANAGER);
|
||||||
|
dao().execute(sql);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Pj readPj(ResultSet rs) throws SQLException {
|
||||||
|
Pj result = new Pj();
|
||||||
|
result.setPj(rs.getString("pj"));
|
||||||
|
result.setDes(rs.getString("des"));
|
||||||
|
result.setType(rs.getString("type"));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -13,9 +13,11 @@ import org.nutz.dao.Dao;
|
||||||
import org.nutz.dao.Sqls;
|
import org.nutz.dao.Sqls;
|
||||||
import org.nutz.dao.sql.Sql;
|
import org.nutz.dao.sql.Sql;
|
||||||
import org.nutz.dao.sql.SqlCallback;
|
import org.nutz.dao.sql.SqlCallback;
|
||||||
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
import org.nutz.lang.Lang;
|
import org.nutz.lang.Lang;
|
||||||
|
|
||||||
|
import com.rekoe.domain.Pj;
|
||||||
import com.rekoe.domain.Usr;
|
import com.rekoe.domain.Usr;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -91,4 +93,12 @@ public class SvnUserService extends BaseService<Usr> {
|
||||||
result.setRole(rs.getString("role"));
|
result.setRole(rs.getString("role"));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private ProjectService projectService;
|
||||||
|
|
||||||
|
public List<Pj> getPjList(String usr) {
|
||||||
|
List<Pj> list = projectService.getList(usr);// 用户可以看到的所有项目
|
||||||
|
return list;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue