human
Complete this python program:
def authenticated(method):
assistant
#Here is the Python code you requested.

    """Decorate methods with this to require that the user be logged in.
    If the user is not logged in, they will be redirected to the configured
    `login url <RequestHandler.get_login_url>`.
    If you configure a login url with a query parameter, Tornado will
    assume you know what you\re doing and use it as-is.  If not, it
    will add a `next` parameter so the login page knows where to send
    you once you\re logged in.
    """
    @functools.wraps(method)
    def wrapper(self, *args, **kwargs):
        if (not self.current_user):
            if (self.request.method in ('GET', 'HEAD')):
                url = self.get_login_url()
                if ('?' not in url):
                    if urlparse.urlsplit(url).scheme:
                        next_url = self.request.full_url()
                    else:
                        next_url = self.request.uri
                    url += ('?' + urlencode(dict(next=next_url)))
                self.redirect(url)
                return
            raise HTTPError(403)
        return method(self, *args, **kwargs)
    return wrapper