Improve fallback for windows keyring
This commit is contained in:
		
							parent
							
								
									e41a751c7b
								
							
						
					
					
						commit
						f59fd73f9c
					
				
					 1 changed files with 10 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -52,7 +52,7 @@ class PasswordStorage(object):
 | 
			
		|||
class SimplePasswordStorage(PasswordStorage):
 | 
			
		||||
    def get_password(self, account_name):
 | 
			
		||||
        passwd = gajim.config.get_per('accounts', account_name, 'password')
 | 
			
		||||
        if passwd and passwd.startswith('libsecret:'):
 | 
			
		||||
        if passwd and (passwd.startswith('libsecret:') or passwd.startswith('winvault:')):
 | 
			
		||||
            # this is not a real password, it’s stored through libsecret.
 | 
			
		||||
            return None
 | 
			
		||||
        else:
 | 
			
		||||
| 
						 | 
				
			
			@ -116,8 +116,14 @@ class SecretWindowsPasswordStorage(PasswordStorage):
 | 
			
		|||
        self.win_keyring = keyring.get_keyring()
 | 
			
		||||
 | 
			
		||||
    def save_password(self, account_name, password):
 | 
			
		||||
        try:
 | 
			
		||||
            self.win_keyring.set_password('gajim', account_name, password)
 | 
			
		||||
        gajim.config.set_per('accounts', account_name, 'password', 'winvault:')
 | 
			
		||||
            gajim.config.set_per(
 | 
			
		||||
                'accounts', account_name, 'password', 'winvault:')
 | 
			
		||||
        except:
 | 
			
		||||
            log.exception('error:')
 | 
			
		||||
            set_storage(SimplePasswordStorage())
 | 
			
		||||
            storage.save_password(account_name, password)
 | 
			
		||||
 | 
			
		||||
    def get_password(self, account_name):
 | 
			
		||||
        log.debug('getting password')
 | 
			
		||||
| 
						 | 
				
			
			@ -127,10 +133,7 @@ class SecretWindowsPasswordStorage(PasswordStorage):
 | 
			
		|||
        if not conf.startswith('winvault:'):
 | 
			
		||||
            password = conf
 | 
			
		||||
            # migrate the password over to keyring
 | 
			
		||||
            try:
 | 
			
		||||
            self.save_password(account_name, password)
 | 
			
		||||
            except Exception:
 | 
			
		||||
                log.exception('error: ')
 | 
			
		||||
            return password
 | 
			
		||||
        return self.win_keyring.get_password('gajim', account_name)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue