package cn.dreampie.function.user; import cn.dreampie.common.config.ReTurnType; import cn.dreampie.common.utils.SubjectUtils; import cn.dreampie.common.utils.ValidateUtils; import cn.dreampie.common.web.thread.ThreadLocalUtil; import com.jfinal.core.Controller; import com.jfinal.validate.Validator; import java.util.List; /** * Created by wangrenhui on 2014/6/10. */ public class AdminValidator { public static class deleteUserValidator extends Validator { @Override protected void validate(Controller c) { boolean idEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("user.id")); if (idEmpty) addError("user_idMsg", "账户参数异常"); if (!idEmpty && !ValidateUtils.me().isPositiveNumber(c.getPara("user.id"))) addError("user_idMsg", "账户参数异常"); User u = User.dao.findFirstBy("`user`.id=" + c.getPara("user.id")); if (ValidateUtils.me().isNullOrEmpty(u)) addError("user_idMsg", "账户不存在"); if (!ValidateUtils.me().isNullOrEmpty(u)) { UserRole uRole = UserRole.dao.findFirstBy("`userRole`.user_id=" + u.get("id")); User user = SubjectUtils.me().getUser(); //查询当前用户的角色 UserRole userRole = UserRole.dao.findFirstBy("`userRole`.user_id=" + user.get("id")); //当前用户的子集角色 List<Long> roleIds = Role.dao.findChildrenIdsById("`role`.deleted_at is null", userRole.get("role_id")); if (!roleIds.contains(uRole.getLong("role_id"))) { addError("user_idMsg", "没有删除该用户的权限"); } } } @Override protected void handleError(Controller c) { c.keepModel(User.class); c.keepPara(); c.setAttr("state", "failure"); if (ThreadLocalUtil.isJson()) c.renderJson(); else c.forwardAction("/admin/user?" + c.getRequest().getQueryString()); } } public static class UpdateRoleValidator extends Validator { @Override protected void validate(Controller c) { boolean idEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("userRole.user_id")); if (idEmpty) addError("user_idMsg", "账户参数异常"); if (!idEmpty && !ValidateUtils.me().isPositiveNumber(c.getPara("userRole.user_id"))) addError("user_idMsg", "账户参数异常"); if (ValidateUtils.me().isNullOrEmpty(User.dao.findFirstBy("`user`.id=" + c.getPara("userRole.user_id")))) addError("user_idMsg", "账户不存在"); boolean roleidEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("userRole.role_id")); if (roleidEmpty) addError("role_idMsg", "请选择一个角色"); if (!roleidEmpty && !ValidateUtils.me().isPositiveNumber(c.getPara("userRole.role_id"))) addError("role_idMsg", "角色参数异常"); if (!roleidEmpty) { Role newRole = Role.dao.findFirstBy("`role`.id='" + c.getPara("userRole.role_id") + "'"); if (ValidateUtils.me().isNullOrEmpty(newRole)) { addError("role_idMsg", "角色不存在"); } else { User user = SubjectUtils.me().getUser(); //查询当前用户的角色 UserRole userRole = UserRole.dao.findFirstBy("`userRole`.user_id=" + user.get("id")); //当前用户的子集角色 List<Long> roleIds = Role.dao.findChildrenIdsById("`role`.deleted_at is null", userRole.get("role_id")); if (!roleIds.contains(newRole.getLong("id"))) { addError("role_idMsg", "没有修改该角色的权限"); } } } } @Override protected void handleError(Controller c) { c.keepModel(UserRole.class); c.keepPara(); c.setAttr("state", "failure"); if (ThreadLocalUtil.isJson()) c.renderJson(); else c.forwardAction("/admin/user?" + c.getRequest().getQueryString()); } } public static class UpdatePwdValidator extends Validator { protected void validate(Controller c) { boolean idEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("user.id")); if (idEmpty) addError("user_idMsg", "账户参数异常"); if (!idEmpty && !ValidateUtils.me().isPositiveNumber(c.getPara("user.id"))) addError("user_idMsg", "账户参数异常"); User u = User.dao.findFirstBy("`user`.id=" + c.getPara("user.id")); if (ValidateUtils.me().isNullOrEmpty(u)) addError("user_idMsg", "账户不存在"); if (!ValidateUtils.me().isNullOrEmpty(u)) { UserRole uRole = UserRole.dao.findFirstBy("`userRole`.user_id=" + u.get("id")); User user = SubjectUtils.me().getUser(); //查询当前用户的角色 UserRole userRole = UserRole.dao.findFirstBy("`userRole`.user_id=" + user.get("id")); //当前用户的子集角色 List<Long> roleIds = Role.dao.findChildrenIdsById("`role`.deleted_at is null", userRole.get("role_id")); if (!roleIds.contains(uRole.getLong("role_id"))) { addError("user_idMsg", "没有修改该用户的权限"); } } boolean passwordEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("user.password")); if (passwordEmpty) addError("user_passwordMsg", "密码不能为空"); if (!passwordEmpty && !ValidateUtils.me().isPassword(c.getPara("user.password"))) addError("user_passwordMsg", "密码为英文字母 、数字和下划线长度为5-18"); } protected void handleError(Controller c) { c.keepModel(User.class); c.keepPara(); c.setAttr("state", "failure"); if (ThreadLocalUtil.isJson()) c.renderJson(); else c.forwardAction("/admin/user?" + c.getRequest().getQueryString()); } } public static class RoleUpdateValidator extends Validator { protected void validate(Controller c) { boolean idEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("role.id")); if (idEmpty) addError("role_idMsg", "角色编号异常"); if (!idEmpty && !ValidateUtils.me().isPositiveNumber(c.getPara("role.id"))) addError("role_idMsg", "角色编号异常"); if (!idEmpty) { if (ValidateUtils.me().isNullOrEmpty(Role.dao.findFirstBy("`role`.id='" + c.getPara("role.id") + "'"))) { addError("role_idMsg", "角色不存在"); } } boolean nameEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("role.name")); if (nameEmpty) addError("role_nameMsg", "角色名称不能为空"); if (!nameEmpty && !ValidateUtils.me().isLength(c.getPara("role.name"), 2, 10)) addError("role_nameMsg", "角色名称长度2-10"); boolean valueEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("role.value")); if (valueEmpty) addError("role_valueMsg", "角色名称不能为空"); if (!valueEmpty && !ValidateUtils.me().isLength(c.getPara("role.value"), 2, 20)) addError("role_valueMsg", "角色名称长度2-20"); if (!valueEmpty) { Role role = Role.dao.findFirstBy("`role`.value='" + c.getPara("role.value") + "'"); if (role != null) addError("role_valueMsg", "角色标识已存在"); } boolean introEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("role.intro")); if (introEmpty) addError("role_introMsg", "角色描述不能为空"); if (!introEmpty && !ValidateUtils.me().isLength(c.getPara("role.intro"), 3, 240)) addError("role_introMsg", "角色描述长度3-240"); } protected void handleError(Controller c) { c.keepModel(Role.class); c.keepPara(); c.setAttr("state", "failure"); if (ThreadLocalUtil.returnType() == ReTurnType.JSON) c.renderJson(); else c.forwardAction("/admin/role"); } } public static class RoleSaveValidator extends Validator { protected void validate(Controller c) { boolean pidEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("role.pid")); if (pidEmpty) addError("role_pidMsg", "父级id不能为空"); if (!pidEmpty && !ValidateUtils.me().isPositiveNumber(c.getPara("role.pid"))) addError("role_pidMsg", "父级id必须为整数"); boolean nameEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("role.name")); if (nameEmpty) addError("role_nameMsg", "角色名称不能为空"); if (!nameEmpty && !ValidateUtils.me().isLength(c.getPara("role.name"), 2, 10)) addError("role_nameMsg", "角色名称长度2-10"); boolean valueEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("role.value")); if (valueEmpty) addError("role_valueMsg", "角色名称不能为空"); if (!valueEmpty && !ValidateUtils.me().isLength(c.getPara("role.value"), 2, 20)) addError("role_valueMsg", "角色名称长度2-20"); if (!valueEmpty) { Role role = Role.dao.findFirstBy("`role`.value='" + c.getPara("role.value") + "'"); if (role != null) addError("role_valueMsg", "角色标识已存在"); } boolean introEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("role.intro")); if (introEmpty) addError("role_introMsg", "角色描述不能为空"); if (!introEmpty && !ValidateUtils.me().isLength(c.getPara("role.intro"), 3, 240)) addError("role_introMsg", "角色描述长度3-240"); } protected void handleError(Controller c) { c.keepModel(Role.class); c.keepPara(); c.setAttr("state", "failure"); if (ThreadLocalUtil.returnType() == ReTurnType.JSON) c.renderJson(); else c.forwardAction("/admin/role"); } } public static class RolePermsValidator extends Validator { protected void validate(Controller c) { boolean idEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("role.id")); if (idEmpty) addError("role_idMsg", "角色参数异常"); boolean idNum = ValidateUtils.me().isPositiveNumber(c.getPara("role.id")); if (!idEmpty && !idNum) addError("role_idMsg", "角色参数异常"); if (!idEmpty && idNum) { Role role = Role.dao.findById(c.getPara("role.id")); if (ValidateUtils.me().isNullOrEmpty(role)) addError("role_idMsg", "角色不存在"); } } protected void handleError(Controller c) { c.keepModel(Role.class); c.keepPara(); c.setAttr("state", "failure"); if (ThreadLocalUtil.returnType() == ReTurnType.JSON) c.renderJson(); else c.forwardAction("/admin/role"); } } public static class RoleDeleteValidator extends Validator { protected void validate(Controller c) { boolean idEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("role.id")); if (idEmpty) addError("role_idMsg", "角色参数异常"); boolean idNum = ValidateUtils.me().isPositiveNumber(c.getPara("role.id")); if (!idEmpty && !idNum) addError("role_idMsg", "角色参数异常"); if (!idEmpty && idNum) { Role role = Role.dao.findById(c.getPara("role.id")); boolean roleEmpty = ValidateUtils.me().isNullOrEmpty(role); if (roleEmpty) addError("role_idMsg", "角色不存在"); if (!roleEmpty) { if (SubjectUtils.me().wasBaseRole(role.getStr("value"))) { addError("role_idMsg", "基础角色不能删除"); } else { long childrenCount = Role.dao.countBy("`role`.pid=" + c.getPara("role.id")); if (childrenCount > 0) addError("role_idMsg", "删除当前角色,必须先删除子角色"); List<String> userIds = UserRole.dao.findUserIds("`userRole`.role_id=" + c.getPara("role.id")); boolean userIdsEmpty = ValidateUtils.me().isNullOrEmpty(userIds); if (!userIdsEmpty) addError("role_idMsg", "该角色下有用户存在"); } } } } protected void handleError(Controller c) { c.keepModel(Role.class); c.keepPara(); c.setAttr("state", "failure"); if (ThreadLocalUtil.returnType() == ReTurnType.JSON) c.renderJson(); else c.forwardAction("/admin/role"); } } public static class PermDeleteValidator extends Validator { protected void validate(Controller c) { boolean idEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("permission.id")); if (idEmpty) addError("permission_idMsg", "权限id不能为空"); boolean idNum = ValidateUtils.me().isPositiveNumber(c.getPara("permission.id")); if (!idEmpty && !idNum) addError("permission_idMsg", "权限id必须为正整数"); if (!idEmpty && idNum) { Permission permission = Permission.dao.findById(c.getPara("permission.id")); if (ValidateUtils.me().isNullOrEmpty(permission)) addError("permission_idMsg", "权限不存在"); long childrenCount = Permission.dao.countBy("`permission`.pid=" + c.getPara("permission.id")); if (childrenCount > 0) addError("permission_idMsg", "删除当前权限,必须先删除子权限"); } } protected void handleError(Controller c) { c.keepModel(Permission.class); c.keepPara(); c.setAttr("state", "failure"); if (ThreadLocalUtil.returnType() == ReTurnType.JSON) c.renderJson(); else c.forwardAction("/admin/role"); } } public static class PermSaveValidator extends Validator { protected void validate(Controller c) { boolean pidEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("permission.pid")); if (pidEmpty) addError("permission_pidMsg", "父级id不能为空"); if (!pidEmpty && !ValidateUtils.me().isPositiveNumber(c.getPara("permission.pid"))) addError("permission_pidMsg", "父级id必须为整数"); boolean nameEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("permission.name")); if (nameEmpty) addError("permission_nameMsg", "权限名称不能为空"); if (!nameEmpty && !ValidateUtils.me().isLength(c.getPara("permission.name"), 2, 10)) addError("permission_nameMsg", "权限名称长度2-10"); boolean valueEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("permission.value")); if (valueEmpty) addError("permission_valueMsg", "权限名称不能为空"); if (!valueEmpty && !ValidateUtils.me().isLength(c.getPara("permission.value"), 2, 20)) addError("permission_valueMsg", "权限名称长度2-20"); if (!valueEmpty) { Permission permission = Permission.dao.findFirstBy("`permission`.value='" + c.getPara("permission.value") + "'"); if (permission != null) addError("permission_valueMsg", "权限标识已存在"); } boolean urlEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("permission.url")); if (urlEmpty) addError("permission_urlMsg", "权限url不能为空"); if (!urlEmpty && !ValidateUtils.me().match("^[\\w/\\*]+$", c.getPara("permission.url"))) addError("permission_urlMsg", "权限url必须英文字母 、数字、*、下划线和右斜线"); boolean introEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("permission.intro")); if (introEmpty) addError("permission_introMsg", "权限描述不能为空"); if (!introEmpty && !ValidateUtils.me().isLength(c.getPara("permission.intro"), 3, 240)) addError("permission_introMsg", "权限描述长度3-240"); } protected void handleError(Controller c) { c.keepModel(Permission.class); c.keepPara(); c.setAttr("state", "failure"); if (ThreadLocalUtil.returnType() == ReTurnType.JSON) c.renderJson(); else c.forwardAction("/admin/role"); } } public static class PermUpdateValidator extends Validator { protected void validate(Controller c) { boolean idEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("permission.id")); if (idEmpty) addError("permission_idMsg", "id不能为空"); if (!idEmpty && !ValidateUtils.me().isPositiveNumber(c.getPara("permission.id"))) addError("permission_idMsg", "id必须为整数"); boolean nameEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("permission.name")); if (nameEmpty) addError("permission_nameMsg", "权限名称不能为空"); if (!nameEmpty && !ValidateUtils.me().isLength(c.getPara("permission.name"), 2, 10)) addError("permission_nameMsg", "权限名称长度2-10"); boolean valueEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("permission.value")); if (valueEmpty) addError("permission_valueMsg", "权限名称不能为空"); if (!valueEmpty && !ValidateUtils.me().isLength(c.getPara("permission.value"), 2, 20)) addError("permission_valueMsg", "权限名称长度2-20"); if (!valueEmpty) { Permission permission = Permission.dao.findFirstBy("`permission`.value='" + c.getPara("permission.value") + "'"); if (permission != null) addError("permission_valueMsg", "权限标识已存在"); } boolean urlEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("permission.url")); if (urlEmpty) addError("permission_urlMsg", "权限url不能为空"); if (!urlEmpty && !ValidateUtils.me().match("^[\\w/\\*]+$", c.getPara("permission.url"))) addError("permission_urlMsg", "权限url必须英文字母 、数字、*、下划线和右斜线"); boolean introEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("permission.intro")); if (introEmpty) addError("permission_introMsg", "权限描述不能为空"); if (!introEmpty && !ValidateUtils.me().isLength(c.getPara("permission.intro"), 3, 240)) addError("permission_introMsg", "权限描述长度3-240"); } protected void handleError(Controller c) { c.keepModel(Permission.class); c.keepPara(); c.setAttr("state", "failure"); if (ThreadLocalUtil.returnType() == ReTurnType.JSON) c.renderJson(); else c.forwardAction("/admin/role"); } } }