def getAssociation(self, server_url, handle=None): stored_assocs = OpenIDStore.objects.filter( server_url=server_url ) if handle: stored_assocs = stored_assocs.filter(handle=handle) stored_assocs.order_by('-issued') if stored_assocs.count() == 0: return None return_val = None for stored_assoc in stored_assocs: assoc = OIDAssociation( stored_assoc.handle, base64.decodestring(stored_assoc.secret.encode('utf-8')), stored_assoc.issued, stored_assoc.lifetime, stored_assoc.assoc_type ) # See: # necaris/python3-openid@1abb155c8fc7b508241cbe9d2cae24f18e4a379b if hasattr(assoc, 'getExpiresIn'): expires_in = assoc.getExpiresIn() else: expires_in = assoc.expiresIn if expires_in == 0: stored_assoc.delete() else: if return_val is None: return_val = assoc return return_val
def getAssociation(self, server_url, handle=None): assocs = [] if handle is not None: assocs = Association.objects.filter( server_url=server_url, handle=handle, ) else: assocs = Association.objects.filter(server_url=server_url) if not assocs: return None associations = [] expired = [] for assoc in assocs: association = OIDAssociation( assoc.handle, base64.decodestring(assoc.secret), assoc.issued, assoc.lifetime, assoc.assoc_type, ) if association.getExpiresIn() == 0: expired.append(assoc) else: associations.append((association.issued, association)) for assoc in expired: assoc.delete() if not associations: return None associations.sort() return associations[-1][1]
def getAssociation(self, server_url, handle=None): assocs = [] if handle is not None: assocs = Association.objects.filter( server_url = server_url, handle = handle ) else: assocs = Association.objects.filter( server_url = server_url ) if not assocs: return None associations = [] for assoc in assocs: association = OIDAssociation( assoc.handle, base64.decodestring(assoc.secret), assoc.issued, assoc.lifetime, assoc.assoc_type ) if association.getExpiresIn() == 0: self.removeAssociation(server_url, assoc.handle) else: associations.append((association.issued, association)) if not associations: return None return associations[-1][1]
def txn_getAssociation(self, server_url, handle=None): """Get the most recent association that has been set for this server URL and handle. str -> NoneType or Association """ if handle is not None: self.db_get_assoc(server_url, handle) else: self.db_get_assocs(server_url) rows = self.cur.fetchall() if len(rows) == 0: return None else: associations = [] for values in rows: assoc = Association(*values) assoc.secret = self.blobDecode(assoc.secret) if assoc.getExpiresIn() == 0: self.txn_removeAssociation(server_url, assoc.handle) else: associations.append((assoc.issued, assoc)) if associations: associations.sort() return associations[-1][1] else: return None
def getAssociation(self, server_url, handle = None): associations = None if handle is not None: associations = OidStoreAssociation.objects.filter(server_url = server_url, handle = handle) else: associations = OidStoreAssociation.objects.filter(server_url = server_url) if associations.count() == 0: return None else: assocs = [] for a in associations: adata = [a.handle, self.blobDecode(a.secret), a.issued, a.lifetime, a.assoc_type] assoc = Association(*adata) if assoc.getExpiresIn() == 0: self.removeAssociation(server_url, assoc.handle) else: assocs.append((assoc.issued, assoc)) if assocs: assocs.sort() return assocs[-1][1] else: return None
def getAssociation(self, server_url, handle=None): assocs = [] if handle is not None: assocs = Association.view('%s/url_handle_view' % Association._meta.app_label, key=[server_url, handle], include_docs=True).all() else: assocs = Association.view('%s/url_view' % Association._meta.app_label, key=server_url, include_docs=True).all() associations = [] try: for assoc in assocs: association = OIDAssociation( assoc['handle'], base64.decodestring(assoc['secret']), assoc['issued'], assoc['lifetime'], assoc['assoc_type']) if association.getExpiresIn() == 0: self.removeAssociation(server_url, assoc.handle) else: associations.append((association.issued, association)) except ResourceNotFound: pass if not associations: return None return associations[-1][1]
def getAssociation(self, server_url, handle=None): if handle is None: return None server_url_hash = hashlib.sha256(server_url).hexdigest() handle_hash = hashlib.sha256(handle).hexdigest() rowkey = "%s_%s" % (server_url_hash, handle_hash) try: assoc_rec = cass.getRecord(self._cf, rowkey) except cass.NotFoundError: return None except cass.DatabaseError: raise server_url = assoc_rec['server_url'] handle = assoc_rec['handle'] secret = assoc_rec['secret'] issued = assoc_rec['issued'] lifetime = assoc_rec['lifetime'] assoc_type = assoc_rec['assoc_type'] association = Association(handle, secret, issued, lifetime, assoc_type) if association.getExpiresIn() == 0: return None return association
def getAssociation(self, server_url, handle=None): q = (OpenIDAssociationData .all() .filter('idp_server_url =', server_url) .order('-issued')) if handle: q.filter('handle', handle) results = q.fetch(1) if not results: return None r = results[0] association = Association(r.handle, r.secret, r.issued, r.lifetime, r.assoc_type) if association.getExpiresIn(self.current_timestamp()) > 0: return association else: return None
def getAssociation(self, server_url, handle=None): assocs = [] if handle is not None: assocs = Association.query.filter_by( server_url=server_url, handle=handle ) else: assocs = Association.query.filter_by( server_url=server_url ) if assocs.count() == 0: return None else: associations = [] for assoc in assocs: association = OIDAssociation( assoc.handle, base64.decodestring(assoc.secret), assoc.issued, assoc.lifetime, assoc.assoc_type ) if association.getExpiresIn() == 0: assoc.delete() else: associations.append((association.issued, association)) if not associations: return None associations.sort() return associations[-1][1]
def getAssociation(self, server_url, handle=None): stored_assocs = OpenIDStoreModel.objects.filter( server_url=server_url ) if handle: stored_assocs = stored_assocs.filter(handle=handle) stored_assocs.order_by('-issued') if stored_assocs.count() == 0: return None return_val = None for stored_assoc in stored_assocs: assoc = OIDAssociation( stored_assoc.handle, base64.decodestring(stored_assoc.secret), stored_assoc.issued, stored_assoc.lifetime, stored_assoc.assoc_type ) if assoc.getExpiresIn() == 0: stored_assoc.delete() else: if return_val is None: return_val = assoc return return_val
def getAssociation(self, server_url, handle=None): assocs = [] if handle is not None: assocs = OpenIdAssociation.objects.filter( server_url = server_url, handle = handle ) else: assocs = OpenIdAssociation.objects.filter( server_url = server_url ) if not assocs: return None associations = [] for assoc in assocs: association = OIDAssociation( assoc.handle, base64.decodestring(assoc.secret), assoc.issued, assoc.lifetime, assoc.assoc_type ) if association.getExpiresIn() == 0: self.removeAssociation(server_url, assoc.handle) else: associations.append((association.issued, association)) if not associations: return None return associations[-1][1]
def txn_getAssociation(self, server_url, handle=None): """Get the most recent association that has been set for this server URL and handle. @type server_url: six.text_type, six.binary_type is deprecated @rtype: Optional[Association] """ server_url = string_to_text(server_url, "Binary values for server_url are deprecated. Use text input instead.") if handle is not None: self.db_get_assoc(server_url, handle) else: self.db_get_assocs(server_url) rows = self.cur.fetchall() if len(rows) == 0: return None else: associations = [] for values in rows: # Decode secret before association is created handle, secret, issued, lifetime, assoc_type = values secret = self.blobDecode(secret) assoc = Association(handle, secret, issued, lifetime, assoc_type) if assoc.getExpiresIn() == 0: self.txn_removeAssociation(server_url, assoc.handle) else: associations.append((assoc.issued, assoc)) if associations: associations.sort() return associations[-1][1] else: return None
def getAssociation(self, server_url, handle=None): stored_assocs = OpenIDStoreModel.objects.filter(server_url=server_url) if handle: stored_assocs = stored_assocs.filter(handle=handle) stored_assocs.order_by('-issued') if stored_assocs.count() == 0: return None return_val = None for stored_assoc in stored_assocs: assoc = OIDAssociation(stored_assoc.handle, base64.decodestring(stored_assoc.secret), stored_assoc.issued, stored_assoc.lifetime, stored_assoc.assoc_type) if assoc.getExpiresIn() == 0: stored_assoc.delete() else: if return_val is None: return_val = assoc return return_val
def getAssociation(self, server_url, handle=None): assocs = [] if handle is not None: assocs = Association.objects.filter(server_url=server_url, handle=handle) else: assocs = Association.objects.filter(server_url=server_url) if not assocs: return None associations = [] expired = [] for assoc in assocs: association = OIDAssociation(assoc.handle, base64.decodestring(assoc.secret), assoc.issued, assoc.lifetime, assoc.assoc_type) if association.getExpiresIn() == 0: expired.append(assoc) else: associations.append((association.issued, association)) for assoc in expired: assoc.delete() if not associations: return None associations.sort() return associations[-1][1]
def getAssociation(self, server_url, handle=None): results = SamadhiAssociation.get(server_url, handle) for a in results: assoc = OpenIDAssociation(a.handle, a.secret, a.issued, a.lifetime, a.assoc_type) if assoc.getExpiresIn() == 0: SamadhiAssociation.remove(server_url, assoc.handle) else: return assoc return None
def getAssociation(self, server_url, handle=None): q = OpenIDAssociation.query.filter_by(server_url=server_url) if handle is not None: q = q.filter_by(handle=handle) result_assoc = None for item in q.all(): assoc = Association(item.handle, item.secret.decode("base64"), item.issued, item.lifetime, item.assoc_type) if assoc.getExpiresIn() <= 0: self.removeAssociation(server_url, assoc.handle) else: result_assoc = assoc return result_assoc
def getAssociation(self, server_url, handle=None): q = OpenIDAssociation.query.filter_by(server_url=server_url) if handle is not None: q = q.filter_by(handle=handle) result_assoc = None for item in q.all(): assoc = Association(item.handle, item.secret.decode('base64'), item.issued, item.lifetime, item.assoc_type) if assoc.getExpiresIn() <= 0: self.removeAssociation(server_url, assoc.handle) else: result_assoc = assoc return result_assoc
def getAssociation(self, server_url, handle=None): filter = openid_association.c.server_url == server_url if handle is not None: filter &= openid_association.c.handle == handle with self.connection() as con: result = con.execute(openid_association.select(filter)) result_assoc = None for row in result.fetchall(): assoc = Association(row.handle, row.secret.decode('base64'), row.issued, row.lifetime, row.assoc_type) if assoc.getExpiresIn() <= 0: self.removeAssociation(server_url, assoc.handle) else: result_assoc = assoc return result_assoc
def getAssociation(self, server_url, handle=None): q = OpenIDAssociationData.all().filter("idp_server_url =", server_url).order("-issued") if handle: q.filter("handle", handle) results = q.fetch(1) if not results: return None r = results[0] association = Association(r.handle, r.secret, r.issued, r.lifetime, r.assoc_type) if association.getExpiresIn(self.current_timestamp()) > 0: return association else: return None
def handle(self, *args, **options): from social_auth.models import Association print('Clearing expired Association instances') timestamp = time.time() + Signatory.SECRET_LIFETIME associations = Association.objects.filter(issued__lt=timestamp) remove = [] for assoc in associations: oid = OIDAssociation(assoc.handle, base64.decodestring(assoc.secret), assoc.issued, assoc.lifetime, assoc.assoc_type) if oid.getExpiresIn() == 0: remove.append(assoc.pk) if remove: print('Cleaning %s Associations' % len(remove)) Association.filter(pk__in=remove).delete() else: print('No Associations to remove')
def getAssociation(self, server_url, handle=None): kwargs = {'server_url': server_url} if handle: kwargs['handle'] = handle openid_assocs = [] for assoc in Association.objects.filter(**kwargs).order_by('-issued'): openid_assoc = OpenidAssociation(assoc.handle, base64.decodestring(assoc.secret), assoc.issued, assoc.lifetime, assoc.assoc_type) if openid_assoc.getExpiresIn() > 0: openid_assocs.append(openid_assoc) else: assoc.delete() if openid_assocs: return openid_assocs[0]
def getAssociation(self, server_url, handle=None): assocs = [] if handle is not None: assocs = Association.objects.filter( server_url=server_url, handle=handle) else: assocs = Association.objects.filter(server_url=server_url) associations = [] expired = [] for assoc in assocs: if isinstance(assoc.secret, str) and PY3: try: assoc.secret = assoc.secret.split("b'")[1].split("'")[0] except Exception: pass assoc.secret = bytes(assoc.secret, 'utf-8') if isinstance(assoc.secret, bytes) and PY3: assoc.secret = bytes(assoc.secret.decode('utf-8').rstrip(), 'utf-8') if PY3: decoded = base64.decodebytes(assoc.secret) else: decoded = base64.decodestring(assoc.secret) association = OIDAssociation( assoc.handle, decoded, assoc.issued, assoc.lifetime, assoc.assoc_type ) if PY3: expires_in = association.expiresIn else: expires_in = association.getExpiresIn() if expires_in == 0: expired.append(assoc) else: associations.append((association.issued, association)) for assoc in expired: assoc.delete() if not associations: return None associations.sort() return associations[-1][1]
def getAssociation(self, url, handle=None): params = {"url": url} if handle is None: cursor = self._conn.cursor().query(self.get_assocs_sql, params) else: params["handle"] = handle cursor = self._conn.cursor().query(self.get_assoc_sql, params) if not cursor.count: return None assocs = [] for row in cursor: assoc = Association(row["handle"], row["secret"], row["issued"], row["lifetime"], row["type"]) if assoc.getExpiresIn() == 0: self.removeAssociation(url, assoc.handle) else: assocs.append((assoc.issued, assoc)) if assocs: assocs.sort() return assocs[-1][1] else: return None
def getAssociation(self, server_url, handle=None): """Return stored assocition""" args = {'server_url': server_url} if handle is not None: args['handle'] = handle associations, expired = [], [] for assoc in Association.objects.filter(**args): association = OIDAssociation(assoc.handle, base64.decodestring(assoc.secret), assoc.issued, assoc.lifetime, assoc.assoc_type) if association.getExpiresIn() == 0: expired.append(assoc.id) else: associations.append(association) if expired: # clear expired associations Association.objects.filter(pk__in=expired).delete() if associations: # return most recet association associations.sort(key=lambda x: x.issued, reverse=True) return associations[0]
def getAssociation(self, server_url, handle=None): # pragma: no cover ''' Helper method to get associations ''' assocs = [] if handle is not None: assocs = OpenIDAssociation.objects.filter( # pylint: disable=no-member server_url=server_url, handle=handle) else: assocs = OpenIDAssociation.objects.filter( # pylint: disable=no-member server_url=server_url) if not assocs: return None associations = [] for assoc in assocs: if isinstance(assoc.secret, str): assoc.secret = assoc.secret.split("b'")[1].split("'")[0] assoc.secret = bytes(assoc.secret, 'utf-8') association = OIDAssociation(assoc.handle, base64.decodebytes(assoc.secret), assoc.issued, assoc.lifetime, assoc.assoc_type) expires = 0 try: # pylint: disable=no-member expires = association.getExpiresIn() except AttributeError: expires = association.expiresIn if expires == 0: self.removeAssociation(server_url, assoc.handle) else: associations.append((association.issued, association)) if not associations: return None return associations[-1][1]
def getAssociation(self, server_url, handle=None): assocs = [] if handle is not None: assocs = Association.view('%s/url_handle_view' % Association._meta.app_label, key=[server_url, handle], include_docs=True).all() else: assocs = Association.view('%s/url_view' % Association._meta.app_label, key=server_url, include_docs=True).all() associations = [] try: for assoc in assocs: association = OIDAssociation( assoc['handle'], base64.decodestring(assoc['secret']), assoc['issued'], assoc['lifetime'], assoc['assoc_type'] ) if association.getExpiresIn() == 0: self.removeAssociation(server_url, assoc.handle) else: associations.append((association.issued, association)) except ResourceNotFound: pass if not associations: return None return associations[-1][1]