package cn.dreampie.common.web.controller; import cn.dreampie.common.config.AppConstants; 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 cn.dreampie.function.user.User; import com.jfinal.core.Controller; import com.jfinal.validate.Validator; /** * Created by wangrenhui on 14-1-2. */ public class RootValidator { public static class RegisterEmailValidator extends Validator { protected void validate(Controller c) { boolean emailEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("user.email")); if (!emailEmpty && !ValidateUtils.me().isEmail(c.getPara("user.email"))) addError("emailMsg", "邮箱格式验证失败"); User u = User.dao.findFirstBy("`user`.email=?", c.getPara("user.email")); if (!ValidateUtils.me().isNullOrEmpty(u)) addError("emailMsg", "该邮箱已经注册"); boolean captchaEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("captcha")); if (captchaEmpty) addError("captchaMsg", "验证码不能为空"); if (!captchaEmpty && !SubjectUtils.me().doCaptcha(c.getPara("captcha"))) addError("captchaMsg", "验证码验证失败"); } protected void handleError(Controller c) { c.keepModel(User.class); c.setAttr("state", "failure"); if (ThreadLocalUtil.isJson()) c.renderJson(); else c.render("/view/signup_email.ftl"); } } public static class RegisterValidator extends Validator { protected void validate(Controller c) { Object tmpU = SubjectUtils.me().getSession().getAttribute(AppConstants.TEMP_USER); //ValidateUtils.me().isEmail(((User) tmpU).getStr("email")) if (tmpU == null) { addError("usernameMsg", "邮箱已过期"); c.setAttr("back", "/view/signup_email.ftl"); } else { c.setAttr("email", ((User) tmpU).get("email")); } boolean usernameEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("user.username")); if (usernameEmpty) addError("usernameMsg", "请输入用户名"); if (!usernameEmpty && !ValidateUtils.me().isUsername(c.getPara("user.username"))) addError("usernameMsg", "用户名为5-18为字母,数字和下划线的组合"); User u = User.dao.findFirstBy("`user`.username=?", c.getPara("user.username")); if (!ValidateUtils.me().isNullOrEmpty(u)) addError("usernameMsg", "用户名已经存在"); boolean passwordEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("user.password")); if (passwordEmpty) addError("passwordMsg", "请输入密码"); if (!passwordEmpty && !ValidateUtils.me().isPassword(c.getPara("user.password"))) addError("passwordMsg", "密码为5-18为字母,数字和下划线的组合"); boolean repasswordEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("repassword")); if (repasswordEmpty) addError("repasswordMsg", "请输入重复密码"); if (!passwordEmpty && !repasswordEmpty && !c.getPara("user.password").equals(c.getPara("repassword"))) addError("repasswordMsg", "重复密码不一致"); boolean firstnameEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("user.first_name")); if (firstnameEmpty) addError("firstnameMsg", "名字不能为空"); boolean lastnameEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("user.last_name")); if (lastnameEmpty) addError("lastnameMsg", "姓氏不能为空"); // try { // if (!firstnameEmpty && c.getPara("user.first_name").getBytes("gbk").length >= 10) // addError("firstnameMsg", "名字不能多于10位"); // // if (!lastnameEmpty && c.getPara("user.last_name").getBytes("gbk").length >= 10) // addError("lastnameMsg", "姓氏不能多于10位"); // } catch (UnsupportedEncodingException e) { // e.printStackTrace(); // } // boolean captchaEmpty = ValidateUtils.me().isNullOrEmpty(c.getPara("captcha")); // if (captchaEmpty) addError("captchaMsg", "验证码不能为空"); // if (!captchaEmpty && !SubjectUtils.me().doCaptcha(c.getPara("captcha"))) addError("captchaMsg", "验证码验证失败"); } protected void handleError(Controller c) { c.keepModel(User.class); c.setAttr("email", c.getAttr("email")); c.setAttr("state", "failure"); if (ThreadLocalUtil.returnType() == ReTurnType.JSON) c.renderJson(); else c.render(c.getAttr("back") != null ? c.getAttr("back").toString() : "/view/signup.ftl"); } } }