public void regist(RegisterRequest req) {
   // 동일한 이메일을 갖는 회원 데이터가 존재하는지 확인
   Member member = memberDao.selectByEmail(req.getEmail());
   if (member != null) {
     throw new AlreadyExistingMemberException("dup email " + req.getEmail());
   }
   Member newMember = new Member(req.getEmail(), req.getPassword(), req.getName(), new Date());
   memberDao.insert(newMember);
 }
  @Override
  public void validate(Object o, Errors errors) {
    RegisterRequest form = (RegisterRequest) o;

    /*
    Nick validate
     */

    String nick = form.getNick();

    if (Strings.isNullOrEmpty(nick)) {
      errors.rejectValue("nick", null, "не задан nick");
    }

    if (nick != null && !StringUtil.checkLoginName(nick)) {
      errors.rejectValue("nick", null, "некорректное имя пользователя");
    }

    if (nick != null && nick.length() > User.MAX_NICK_LENGTH) {
      errors.rejectValue("nick", null, "слишком длинное имя пользователя");
    }

    /*
    Password validate
     */

    String password = Strings.emptyToNull(form.getPassword());
    String password2 = Strings.emptyToNull(form.getPassword2());

    if (Strings.isNullOrEmpty(password)) {
      errors.reject("password", null, "пароль не может быть пустым");
    }
    if (Strings.isNullOrEmpty(password2)) {
      errors.reject("password2", null, "пароль не может быть пустым");
    }

    if (password != null && password.equalsIgnoreCase(nick)) {
      errors.reject(password, null, "пароль не может совпадать с логином");
    }

    if (form.getPassword2() != null
        && form.getPassword() != null
        && !form.getPassword().equals(form.getPassword2())) {
      errors.reject(null, "введенные пароли не совпадают");
    }

    if (!Strings.isNullOrEmpty(form.getPassword())
        && form.getPassword().length() < MIN_PASSWORD_LEN) {
      errors.reject(
          "password", null, "слишком короткий пароль, минимальная длина: " + MIN_PASSWORD_LEN);
    }

    /*
    Email validate
     */

    if (Strings.isNullOrEmpty(form.getEmail())) {
      errors.rejectValue("email", null, "Не указан e-mail");
    } else {
      try {
        InternetAddress mail = new InternetAddress(form.getEmail());
        checkEmail(mail, errors);
      } catch (AddressException e) {
        errors.rejectValue("email", null, "Некорректный e-mail: " + e.getMessage());
      }
    }

    /*
    Rules validate
     */

    if (Strings.isNullOrEmpty(form.getRules()) || !"okay".equals(form.getRules())) {
      errors.reject("rules", null, "Вы не согласились с правилами");
    }
  }
  public StatusResponse registerUser(
      RegisterRequest data,
      HashMap<String, Connection<?>> connections,
      HttpServletRequest request,
      HttpServletResponse response) {
    try {
      loadUserByUsername(data.getUsername());
      StatusResponse result = new StatusResponse();
      result.setLogged(false);
      result.setProfile(null);
      result.getResponses().put("registration", "username_exists");
      return result;
    } catch (UsernameNotFoundException e) {

      try {
        context.getUserProfileDao().loadUserByUsername(data.getEmail());
        StatusResponse result = new StatusResponse();
        result.setLogged(false);
        result.setProfile(null);
        result.getResponses().put("registration", "email_exists");
        return result;
      } catch (UsernameNotFoundException e2) {
        String string = new String();

        try {
          System.out.println("ProxyHost=" + this.proxyHost);
          System.out.println("ProxyPort=" + this.proxyPort);
          System.out.println("recaptchaSecretKey=" + this.recaptchaSecretKey);
          // Newer versions of Java need a "http." prefix on the system properties
          System.setProperty("proxyHost", this.proxyHost);
          System.setProperty("proxyPort", this.proxyPort);
          System.setProperty("http.proxyHost", this.proxyHost);
          System.setProperty("http.proxyPort", this.proxyPort);
          URL url =
              new URL(
                  "https://www.google.com/recaptcha/api/siteverify?secret="
                      + this.recaptchaSecretKey
                      + "&response="
                      + data.getRecaptcha());
          System.out.println(url.toString());
          Scanner scanner = new Scanner(url.openStream());
          while (scanner.hasNext()) {
            string += scanner.nextLine();
          }
          scanner.close();
        } catch (java.io.IOException e3) {
          System.out.println("!!!!!" + e3.toString() + "!!!!!");
        }

        if (string.indexOf("true") == -1) {
          StatusResponse result = new StatusResponse();
          result.setLogged(false);
          result.setProfile(null);
          result.getResponses().put("registration", "bad_recaptcha");
          return result;
        }

        UserProfile user =
            context
                .getUserProfileDao()
                .createUser(data.getUsername(), data.getPassword(), data.getEmail(), false);
        login(user, request, response);
        return status(connections, request.getSession());
      }
    }
  }