def METHOD_NAME(self):
    self.request.__setattr__('current_user', None)
    self.request.__setattr__('error', None)
    self.request.__setattr__('oauth_client', None)
    self.request.__setattr__('oauth_token', None)
    if not REQUIRE_USER_AUTHENTICATION:
        return
    if self.bypass_oauth_check:
        return
    api_key = self.request.headers.get(HEADER_API_KEY, None)
    if not api_key:
        if self.request.method == 'POST':
            try:
                api_key = json.loads(
                    self.request.body).get(URL_PARAMETER_API_KEY)
            except (JSONDecodeError, UnicodeDecodeError):
                # UnicodeDecodeError happens when there is invalid characters in the
                # file upload when creating a new feature set
                api_key = self.request.query_arguments.get(
                    URL_PARAMETER_API_KEY)
        else:
            api_key = self.request.query_arguments.get(
                URL_PARAMETER_API_KEY)
    if api_key:
        if isinstance(api_key, list):
            api_key = api_key[0]
        if not isinstance(api_key, str):
            api_key = api_key.decode()
    token_from_header = self.request.headers.get(HEADER_OAUTH_TOKEN, None)
    if not token_from_header:
        token_from_header = self.request.headers.get('Authorization')
        if token_from_header:
            tokens = token_from_header.split(',')
            token_from_header = find(lambda x: 'bearer' in x.lower(), tokens)
            if token_from_header:
                token_from_header = (
                    token_from_header.
                    replace('Bearer ', '').
                    replace('bearer ', '')
                )
            else:
                token_from_header = None
        else:
            token_from_header = self.request.query_arguments.get('HTTP_AUTHORIZATION', None)
    cookies = parse_cookie_header(self.request.headers.get('Cookie', ''))
    if api_key:
        oauth_client = Oauth2Application.query_client(api_key)
        self.request.__setattr__('oauth_client', oauth_client)
        if not oauth_client:
            self.request.__setattr__('error', ApiError.INVALID_API_KEY)
        elif oauth_client.client_id != OAUTH2_APPLICATION_CLIENT_ID:
            self.request.__setattr__('error', ApiError.INVALID_API_KEY)
        else:
            should_check = False
            oauth_token = None
            if token_from_header:
                oauth_token, valid = authenticate_client_and_token(
                    oauth_client.id,
                    token_from_header,
                )
                should_check = True
            elif COOKIE_OAUTH_TOKEN in cookies:
                token_data = decode_token(cookies[COOKIE_OAUTH_TOKEN])
                if 'token' in token_data:
                    oauth_token, valid = authenticate_client_and_token(
                        oauth_client.id,
                        decode_token(cookies[COOKIE_OAUTH_TOKEN])['token'],
                    )
                should_check = True
            if should_check:
                if oauth_token:
                    if valid:
                        self.request.__setattr__('oauth_token', oauth_token)
                        self.request.__setattr__(
                            'current_user', oauth_token.user)
                    else:
                        self.request.__setattr__(
                            'error', ApiError.EXPIRED_OAUTH_TOKEN)
                else:
                    self.request.__setattr__(
                        'error', ApiError.INVALID_OAUTH_TOKEN)
    else:
        self.request.__setattr__('error', ApiError.INVALID_API_KEY)