@Override public BankApiUser registerUser(String bankingUrl, BankAccess bankAccess, String pin) { if (figoConnection == null) { throw new IllegalArgumentException("figo connection not available, check env properties FIGO_CLIENT_ID " + "and/or FIGO_SECRET"); } String password = RandomStringUtils.random(20, 0, 0, false, false, CHARACTERS.toCharArray(), random); try { figoConnection.addUser(bankAccess.getBankLogin(), bankAccess.getBankLogin() + "@admb.de", password, "de"); } catch (IOException | FigoException e) { throw new RuntimeException(e); } BankApiUser bankApiUser = new BankApiUser(); bankApiUser.setApiUserId(bankAccess.getBankLogin()); bankApiUser.setApiPassword(password); bankApiUser.setBankApi(bankApi()); return bankApiUser; }
private String authorizeUser(BankApiUser bankApiUser) { try { return new AuthorizationApi(createApiClient()).getToken("password", finapiClientId, finapiSecret, null, bankApiUser.getApiUserId(), bankApiUser.getApiPassword()).getAccessToken(); } catch (ApiException e) { throw new RuntimeException(e); } }
private OnlineBankingService checkAndGetOnlineBankingService(BankAccessEntity bankAccess, BankAccountEntity bankAccount, String pin, BankApiUser bankApiUser) { OnlineBankingService onlineBankingService = bankingServiceProducer.getBankingService(bankApiUser.getBankApi()); //external (figo, finapi) account must exist, otherwise loading bookings will not work if (onlineBankingService.externalBankAccountRequired()) { checkExternalBankAccountExists(bankAccess, bankAccount, pin, bankApiUser, onlineBankingService); } return onlineBankingService; }
.filter(bankApiUser -> bankApiUser.getBankApi() == onlineBankingService.bankApi()) .findFirst() .orElseGet(() -> { }); } else { BankApiUser bankApiUser = new BankApiUser(); bankApiUser.setBankApi(onlineBankingService.bankApi()); return bankApiUser;
@Override public void removeUser(String bankingUrl, BankApiUser bankApiUser) { try { new UsersApi(createApiClient()).deleteUnverifiedUser(bankApiUser.getApiUserId()); } catch (ApiException e) { throw new RuntimeException(e); } }
.filter(bankApiUser -> bankApiUser.getBankApi() == onlineBankingService.bankApi()) .findFirst() .orElseGet(() -> { }); } else { BankApiUser bankApiUser = new BankApiUser(); bankApiUser.setBankApi(onlineBankingService.bankApi()); return bankApiUser;
@Override public BankApiUser registerUser(String bankingUrl, BankAccess bankAccess, String pin) { String password = RandomStringUtils.random(20, 0, 0, false, false, CHARACTERS.toCharArray(), random); try { new UsersApi(createApiClient()).createUser(new UserCreateParams().email(bankAccess.getBankLogin() + "@admb.de").password(password).id(bankAccess.getBankLogin())); } catch (ApiException e) { throw new RuntimeException(e); } BankApiUser bankApiUser = new BankApiUser(); bankApiUser.setApiUserId(bankAccess.getBankLogin()); bankApiUser.setApiPassword(password); bankApiUser.setBankApi(BankApi.FINAPI); return bankApiUser; }
@Override public void removeUser(String bankingUrl, BankApiUser bankApiUser) { try { TokenResponse tokenResponse = figoConnection.credentialLogin(bankApiUser.getApiUserId() + MAIL_SUFFIX, bankApiUser.getApiPassword()); FigoSession session = createSession(tokenResponse.getAccessToken()); session.removeUser(); } catch (IOException | FigoException e) { throw new RuntimeException(e); } }
private OnlineBankingService checkAndGetOnlineBankingService(BankAccessEntity bankAccess, BankAccountEntity bankAccount, String pin, BankApiUser bankApiUser) { OnlineBankingService onlineBankingService = bankingServiceProducer.getBankingService(bankApiUser.getBankApi()); //external (figo, finapi) account must exist, otherwise loading bookings will not work if (onlineBankingService.externalBankAccountRequired()) { checkExternalBankAccountExists(bankAccess, bankAccount, pin, bankApiUser, onlineBankingService); } return onlineBankingService; }
@Override public void removeBankAccount(String bankingUrl, BankAccount bankAccount, BankApiUser bankApiUser) { try { TokenResponse tokenResponse = figoConnection.credentialLogin(bankApiUser.getApiUserId() + MAIL_SUFFIX, bankApiUser.getApiPassword()); FigoSession session = createSession(tokenResponse.getAccessToken()); session.removeAccount(bankAccount.getExternalIdMap().get(bankApi())); } catch (IOException | FigoException e) { throw new RuntimeException(e); } }
private void removeRemoteRegistrations(BankAccessData accessData, UserData userData) { // Load bank Accounts List<BankAccountData> bankAccountDataList = accessData.getBankAccounts(); UserEntity userEntity = userData.getUserEntity(); bankAccountDataList.stream().forEach(bankAccountData -> { BankAccountEntity bankAccountEntity = bankAccountData.getBankAccount(); bankAccountEntity.getExternalIdMap().keySet().forEach(bankApi -> { OnlineBankingService bankingService = bankingServiceProducer.getBankingService(bankApi); //remove remote bank api user if (bankingService.userRegistrationRequired()) { BankApiUser bankApiUser = userEntity.getApiUser() .stream() .filter(apiUser -> apiUser.getBankApi() == bankApi) .findFirst() .orElseThrow(() -> new ResourceNotFoundException(BankApiUser.class, bankApi.toString())); bankingService.removeBankAccount(null, bankAccountEntity, bankApiUser); } }); }); } }
TokenResponse tokenResponse = figoConnection.credentialLogin(bankApiUser.getApiUserId() + "@admb.de", bankApiUser.getApiPassword()); FigoSession session = createSession(tokenResponse.getAccessToken());
private void removeRemoteRegistrations(BankAccessData accessData, UserData userData) { // Load bank Accounts List<BankAccountData> bankAccountDataList = accessData.getBankAccounts(); UserEntity userEntity = userData.getUserEntity(); bankAccountDataList.stream().forEach(bankAccountData -> { BankAccountEntity bankAccountEntity = bankAccountData.getBankAccount(); bankAccountEntity.getExternalIdMap().keySet().forEach(bankApi -> { OnlineBankingService bankingService = bankingServiceProducer.getBankingService(bankApi); //remove remote bank api user if (bankingService.userRegistrationRequired()) { BankApiUser bankApiUser = userEntity.getApiUser() .stream() .filter(apiUser -> apiUser.getBankApi() == bankApi) .findFirst() .orElseThrow(() -> new ResourceNotFoundException(BankApiUser.class, bankApi.toString())); bankingService.removeBankAccount(null, bankAccountEntity, bankApiUser); } }); }); } }
TokenResponse tokenResponse = figoConnection.credentialLogin(bankApiUser.getApiUserId() + MAIL_SUFFIX, bankApiUser.getApiPassword()); FigoSession session = createSession(tokenResponse.getAccessToken());