Skip to content

Commit

Permalink
CredentialManager: Store passwords in system keyring
Browse files Browse the repository at this point in the history
Credential Manager is used for safely storing passwords in system's keyring services.
  • Loading branch information
nikicc committed Oct 7, 2016
1 parent 55748e5 commit d99ee9e
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
26 changes: 26 additions & 0 deletions Orange/widgets/credentials.py
@@ -0,0 +1,26 @@
import keyring

SERVICE_NAME = 'Orange3 - {}'


class CredentialManager:
def __init__(self, username):
"""
Class for storing passwords in the system keyring service.
Args:
username: username used for storing a matching password.
"""
self.username = username
self.service_name = SERVICE_NAME.format(self.username)

@property
def key(self):
return keyring.get_password(self.service_name, self.username)

@key.setter
def key(self, value):
keyring.set_password(self.service_name, self.username, value)

def delete_password(self):
keyring.delete_password(self.service_name, self.username)
12 changes: 12 additions & 0 deletions Orange/widgets/tests/test_credentials.py
@@ -0,0 +1,12 @@
import unittest

from Orange.widgets.credentials import CredentialManager


class CredentialManagerTests(unittest.TestCase):
def test_credential_manager(self):
cm = CredentialManager('Foo')
cm.key = 'Bar'
self.assertEqual(cm.key, 'Bar')
cm.delete_password()
self.assertEqual(cm.key, None)

0 comments on commit d99ee9e

Please sign in to comment.