/* * 모바일 회원 가입 */ @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()); }
@Before public void beforeTest() throws IOException, DeltaCalculatorException, ControlServiceException { String dataSchema = OperationsServiceIT.getResourceAsString(OperationsServiceIT.DATA_SCHEMA_LOCATION); PROFILE_BYTES = avroConverter.encode(ENDPOINT_PROFILE); PROFILE_JSON = avroConverter.encodeToJson(ENDPOINT_PROFILE); tenant = new TenantDto(); tenant.setName(CUSTOMER_ID); tenant = userService.saveTenant(tenant); assertNotNull(tenant); assertNotNull(tenant.getId()); ApplicationDto applicationDto = new ApplicationDto(); applicationDto.setTenantId(tenant.getId()); applicationDto.setApplicationToken(APPLICATION_ID); applicationDto.setName(APPLICATION_NAME); applicationDto.setSequenceNumber(NEW_APPLICATION_SEQ_NUMBER); applicationDto = applicationService.saveApp(applicationDto); APP_TOKEN = applicationDto.getApplicationToken(); assertNotNull(applicationDto); assertNotNull(applicationDto.getId()); application = applicationService.findAppById(applicationDto.getId()); EndpointGroupDto groupAll = endpointService.findEndpointGroupsByAppId(application.getId()).get(0); CTLSchemaDto profileCtlSchema = new CTLSchemaDto(); CtlSchemaMetaInfoDto metaInfo = new CtlSchemaMetaInfoDto( BasicEndpointProfile.SCHEMA$.getFullName(), application.getTenantId(), application.getId()); profileCtlSchema.setMetaInfo(metaInfo); profileCtlSchema.setBody(BasicEndpointProfile.SCHEMA$.toString()); profileCtlSchema.setVersion(1); profileCtlSchema.setDependencySet(new HashSet<CTLSchemaDto>()); profileCtlSchema = ctlService.saveCtlSchema(profileCtlSchema); Schema schema = new Schema.Parser().parse(dataSchema); CTLSchemaDto confCtlSchema = new CTLSchemaDto(); CtlSchemaMetaInfoDto confMetaInfo = new CtlSchemaMetaInfoDto( schema.getFullName(), application.getTenantId(), application.getId()); confCtlSchema.setMetaInfo(confMetaInfo); confCtlSchema.setBody(schema.toString()); confCtlSchema.setVersion(CONF_SCHEMA_VERSION); confCtlSchema.setDependencySet(new HashSet<CTLSchemaDto>()); confCtlSchema = ctlService.saveCtlSchema(confCtlSchema); EndpointProfileSchemaDto profileSchemaObj = new EndpointProfileSchemaDto(); profileSchemaObj.setVersion(PROFILE_SCHEMA_VERSION); profileSchemaObj.setCtlSchemaId(profileCtlSchema.getId()); profileSchemaObj.setApplicationId(application.getId()); EndpointProfileSchemaDto profileSchemaDto = profileService.saveProfileSchema(profileSchemaObj); profileSchema = profileService.findProfileSchemaById(profileSchemaDto.getId()); EndpointGroupDto endpointGroup = new EndpointGroupDto(); endpointGroup.setApplicationId(application.getId()); endpointGroup.setName("Test group"); endpointGroup.setWeight(277); endpointGroup.setDescription("Test Description"); endpointGroup = endpointService.saveEndpointGroup(endpointGroup); ProfileFilterDto profileFilterObj = new ProfileFilterDto(); profileFilterObj.setApplicationId(application.getId()); profileFilterObj.setEndpointGroupId(endpointGroup.getId()); profileFilterObj.setBody("profileBody.contains(\"dummy\")"); profileFilterObj.setEndpointProfileSchemaId(profileSchema.getId()); profileFilter = profileService.saveProfileFilter(profileFilterObj); profileService.activateProfileFilter(profileFilter.getId(), null); confSchema = new ConfigurationSchemaDto(); confSchema.setApplicationId(application.getId()); confSchema.setVersion(CONF_SCHEMA_VERSION); confSchema.setCtlSchemaId(confCtlSchema.getId()); try { confSchema = configurationService.saveConfSchema(confSchema); } catch (IncorrectParameterException e) { Assert.fail("Can't generate schemas"); } Assert.assertNotNull(confSchema); Assert.assertNotNull(confSchema.getId()); egAllId = groupAll.getId(); pfAllId = profileFilter.getId(); ConfigurationDto confDto = configurationService.findConfigurationByEndpointGroupIdAndVersion( egAllId, CONF_SCHEMA_VERSION); cfAllId = confDto.getId(); endpointConfiguration = new EndpointConfigurationDto(); endpointConfiguration.setConfiguration(confDto.getBody().getBytes(UTF_8)); endpointConfiguration.setConfigurationHash( EndpointObjectHash.fromSha1(confDto.getBody()).getData()); endpointConfiguration = endpointService.saveEndpointConfiguration(endpointConfiguration); assertNotNull(endpointConfiguration); EndpointGroupStateDto egs = new EndpointGroupStateDto(); egs.setConfigurationId(cfAllId); egs.setEndpointGroupId(egAllId); egs.setProfileFilterId(pfAllId); endpointProfile = new EndpointProfileDto(); endpointProfile.setApplicationId(application.getId()); endpointProfile.setEndpointKeyHash(Base64Utils.decodeFromString("EndpointId")); endpointProfile.setClientProfileBody(PROFILE_JSON); endpointProfile.setProfileHash(EndpointObjectHash.fromSha1(PROFILE_BYTES).getData()); endpointProfile.setConfigurationHash(endpointConfiguration.getConfigurationHash()); endpointProfile.setConfigurationVersion(CONF_SCHEMA_VERSION); endpointProfile.setClientProfileVersion(PROFILE_VERSION); endpointProfile.setGroupState(Collections.singletonList(egs)); endpointProfile = endpointService.saveEndpointProfile(endpointProfile); assertNotNull(endpointProfile); assertNotNull(endpointProfile.getId()); }
/** * BASE64字符串转回文件 * * @param filename 文件绝对路径 * @param contentByBase64 编码字符串 * @throws Exception */ public static void decodeFile(final String filename, final String contentByBase64) throws IOException { byte[] bytes = Base64Utils.decodeFromString(contentByBase64); bytes2file(filename, bytes); }
/** * 将文件编码为BASE64字符串 * * <p>大文件慎用,可能会导致内存溢出 * * @param filename 文件绝对路径 * @return * @throws Exception */ public static String encodeFile(final String filename) throws IOException { byte[] bytes = file2bytes(filename); return Base64Utils.encodeToString(bytes); }