def verifyUser(user, origin): timeout = 0 token = user.APNsToken identifier = notifications.sendNotification(token, "{0} requests authentication".format(origin), authenticationRequestTimeout) Request(username = user.username, identifier = str(identifier), resolved = 0).put() #notifications.sendNotification(token, "Identifier: {0}".format(identifier), authenticationRequestTimeout) #temporary, lets tester know the identifier while(timeout < authenticationRequestTimeout): #Wait for authentication, times out after preset time request = Request.query(Request.identifier == str(identifier)).get(use_cache=False, use_memcache=False) if request is not None and request.resolved == 1: break else: timeout += 0.5 time.sleep(0.5) else: request.resolved = -1 request.put() return request
def authenticationConfirm(username, identifier, UID): logging.debug("1") user = _lookupByUID(UID) if user is not None: #check if user exists logging.debug("2") if user.username == username: #check if given username matches the database entry logging.debug("3") request = Request.query(Request.identifier == str(identifier)).get() if request is not None: #if the request exists logging.debug("4") request.resolved = 1 request.put() return FunctionReturn("Authenticated", 0) else: return FunctionReturn("Request was not found", 2) else: return FunctionReturn("UID does not match username", 3) else: logging.warning("Shit") return FunctionReturn("User does not exist", 1)