def get_temporary_token(auth_key, service): """ Transient token for applications. TODO(kevinx): 10 second or less active """ # check for collision (very unlikely) while True: token = get_randomized_chars(48) try: models.SSOAppToken.objects.get(token=token) except models.SSOAppToken.DoesNotExist: break auth_obj = models.SSOAuthInfo.objects.get(auth_key=auth_key) try: #auth_obj.token_set.all() token_obj = auth_obj.ssoapptoken_set.create(token=token, service=service) except DatabaseError as e: # pass, just store the error (could be "length too large", etc) transaction.rollback() raise e try: token_obj.save() except IntegrityError as e: transaction.rollback() raise e return token
def get_authentication_cookie(user_info, service='go_url'): # check for collision (very unlikely) while True: auth_key = get_randomized_chars(64) try: models.SSOAuthInfo.objects.get(auth_key=auth_key) except models.SSOAuthInfo.DoesNotExist: # no collision, move on... break try: auth_obj = models.SSOAuthInfo( auth_key=auth_key, browser='', cn=user_info['cn'], displayName=user_info['displayName'], mail=user_info['mail'], objectSid=user_info['objectSid'], services=service, last_service=service) except DatabaseError as e: # pass, just store the error (could be "length too large", etc) transaction.rollback() raise e try: auth_obj.save() except IntegrityError as e: transaction.rollback() raise e return auth_key