3030import ch .iterate .hub .client .model .VaultDto ;
3131import ch .iterate .hub .core .FirstLoginDeviceSetupCallback ;
3232import ch .iterate .hub .core .FirstLoginDeviceSetupCallbackFactory ;
33+ import ch .iterate .hub .crypto .UserKeys ;
3334import ch .iterate .hub .crypto .uvf .VaultMetadataJWEBackendDto ;
3435import ch .iterate .hub .protocols .hub .exceptions .HubExceptionMappingService ;
3536import ch .iterate .hub .workflows .UserKeysServiceImpl ;
@@ -62,6 +63,7 @@ public List<VaultDto> operate(final PasswordCallback callback) throws Background
6263 final FirstLoginDeviceSetupCallback prompt = FirstLoginDeviceSetupCallbackFactory .get ();
6364 log .info ("Bookmark sync for {}" , session .getHost ());
6465 try {
66+ final UserKeys userKeys = new UserKeysServiceImpl (session ).getUserKeys (session .getHost (), prompt );
6567 final List <VaultDto > vaults = new VaultResourceApi (session .getClient ()).apiVaultsAccessibleGet (null );
6668 for (final VaultDto vaultDto : vaults ) {
6769 try {
@@ -79,7 +81,9 @@ public List<VaultDto> operate(final PasswordCallback callback) throws Background
7981 }
8082 else {
8183 log .info ("Adding bookmark for vault {} in hub {}" , vaultDto , session .getHost ());
82- final Host bookmark = this .toBookmark (vaultId , prompt );
84+ // Find storage configuration in vault metadata
85+ final VaultMetadataJWEBackendDto vaultMetadata = new VaultServiceImpl (session ).getVaultMetadataJWE (vaultId , userKeys ).storage ();
86+ final Host bookmark = toBookmark (session .getHost (), vaultId , vaultMetadata );
8387 if (bookmark .getCredentials ().isPasswordAuthentication ()) {
8488 log .warn ("Save static access tokens for {} in keychain" , vaultDto );
8589 final HostPasswordStore keychain = PasswordStoreFactory .get ();
@@ -93,29 +97,15 @@ public List<VaultDto> operate(final PasswordCallback callback) throws Background
9397 catch (AccessDeniedException e ) {
9498 log .info ("Access not granted yet, ignoring vault {} ({}) for hub {}" , vaultDto .getName (), vaultDto .getId (), session .getHost (), e );
9599 }
96- catch (AccessException | SecurityFailure e ) {
97- throw new InteroperabilityException (LocaleFactory .localizedString ("Login failed" , "Credentials" ), e );
98- }
99100 }
100101 return vaults ;
101102 }
102103 catch (ApiException e ) {
103104 log .error ("Scheduler for {}: Syncing vaults failed." , session , e );
104105 throw new HubExceptionMappingService ().map (e );
105106 }
106- }
107-
108- public Host toBookmark (final UUID vaultId , final FirstLoginDeviceSetupCallback prompt ) throws AccessException , BackgroundException , SecurityFailure {
109- final UserKeysServiceImpl userKeysService = new UserKeysServiceImpl (session );
110- final VaultServiceImpl vaultService = new VaultServiceImpl (session );
111- // Find storage configuration in vault metadata
112- try {
113- final VaultMetadataJWEBackendDto vaultMetadata = vaultService .getVaultMetadataJWE (vaultId ,
114- userKeysService .getUserKeys (session .getHost (), prompt )).storage ();
115- return toBookmark (session .getHost (), vaultId , vaultMetadata );
116- }
117- catch (ApiException e ) {
118- throw new HubExceptionMappingService ().map (e );
107+ catch (AccessException | SecurityFailure e ) {
108+ throw new InteroperabilityException (LocaleFactory .localizedString ("Login failed" , "Credentials" ), e );
119109 }
120110 }
121111
0 commit comments