51
51
def _find_keyring_item(self, app_name, attr=None):
52
52
"""Return the keyring item or None if not found."""
54
logger.debug("getting attr")
55
54
attr = self._get_keyring_attr(app_name)
56
logger.debug("finding all items")
55
logger.debug("Finding all items for app_name %r.", app_name)
57
56
items = yield self.service.search_items(attr)
58
57
if len(items) == 0:
59
58
# if no items found, return None
60
logger.debug("No items found")
59
logger.debug("No items found!")
63
logger.debug("Returning first item found")
62
logger.debug("Returning first item found.")
64
63
returnValue(items[0])
66
65
def _get_keyring_attr(self, app_name):
85
84
def _migrate_old_token_name(self, app_name):
86
85
"""Migrate credentials with old name, store them with new name."""
87
logger.debug("getting keyring attr")
86
logger.debug("Migrating old token name.")
88
87
attr = self._get_keyring_attr(app_name)
89
logger.debug("getting old token name")
90
88
attr['token-name'] = get_old_token_name(app_name)
91
logger.debug("finding keyring item")
92
89
item = yield self._find_keyring_item(app_name, attr=attr)
93
90
if item is not None:
94
logger.debug("setting credentials")
95
91
yield self.set_credentials(app_name,
96
92
dict(urlparse.parse_qsl(item.secret)))
97
logger.debug("deleting old item")
98
93
yield item.delete()
100
logger.debug("finding keyring item")
101
95
result = yield self._find_keyring_item(app_name)
102
logger.debug("returning result value")
103
96
returnValue(result)
106
99
def get_credentials(self, app_name):
107
100
"""A deferred with the secret of the SSO item in a dictionary."""
108
101
# If we have no attributes, return None
109
logger.debug("getting credentials")
102
logger.debug("Getting credentials for %r.", app_name)
110
103
yield self.service.open_session()
111
logger.debug("calling find item")
112
104
item = yield self._find_keyring_item(app_name)
114
logger.debug("migrating token")
115
106
item = yield self._migrate_old_token_name(app_name)
117
108
if item is not None:
118
logger.debug("parsing secret")
109
logger.debug("Parsing secret.")
119
110
secret = yield item.get_value()
120
111
returnValue(dict(urlparse.parse_qsl(secret)))
122
113
# if no item found, try getting the old credentials
123
114
if app_name == U1_APP_NAME:
124
logger.debug("trying old credentials")
115
logger.debug("Trying old credentials for %r.", app_name)
125
116
old_creds = yield try_old_credentials(app_name)
126
117
returnValue(old_creds)
127
118
# nothing was found