Example #1
0
  /*
   * 모바일 회원 가입
   */
  @Override
  public String registerMobileAccount(RequestRegisterMobileAccount mobileAccount) {
    MobileVerification verification =
        mobileVerificationRepository.findByIdAndDeviceId(
            mobileAccount.getId(), mobileAccount.getDeviceId());
    if (verification == null) {
      throw new EdiyaAPIException(APIError.REGISTRAION_ERROR_NOT_FOUND_REQUEST);
    }

    String[] userInfo =
        CryptoUtils.decryptRSA(
                verification.getPrivateKeyModulus(),
                verification.getPrivateKeyExponent(),
                mobileAccount.getCrypto())
            .split(":");
    if (userInfo.length != 3) {
      throw new EdiyaAPIException(APIError.REGISTRAION_ERROR_SYNTAX_ACCOUNT_INFO);
    }

    // TODO userName, userId, deviceId 중복 체크

    // 사용자 정보 생성
    String userId = CryptoUtils.generateUserId();
    String secret = CryptoUtils.generateSecureRandom();
    String name = userInfo[0];
    String nick = userInfo[1];
    String password = userInfo[2];

    // 계정정보 저장
    User user = new User(userId, name, nick, password);
    userRepository.save(user);

    // 단말기 정보 저장
    DeviceSession session = new DeviceSession(userId, secret, verification);
    deviceSessionRepository.save(session);

    // 가입 요청 정보 삭제
    mobileVerificationRepository.delete(verification);

    logger.info(
        "registerMobileAccount {} {} {} {}",
        user.getId(),
        user.getName(),
        user.getNick(),
        session.getDeviceId());

    return Base64Utils.encodeToString(verification.getDeviceId().getBytes())
        + ":"
        + Base64Utils.encodeToString(secret.getBytes());
  }
Example #2
0
 /*
  * 닉네임 사용가능 여부 조회
  */
 @Override
 public boolean checkUseAbleUserNick(String nick) {
   return !userRepository.existsByNick(nick);
 }
Example #3
0
 /*
  * 로그인 네임 사용가능 여부 조회
  */
 @Override
 public boolean checkUseAbleLoginName(String name) {
   return !userRepository.existsByName(name);
 }