示例#1
0
 def get_redirect_uri(self, request=None):
     '''Get the redirect URI'''
     # Check if got a redirect URI
     if self.redirect_uri is None:
         # If no redirect URI, raise
         raise MissRedirectUri(_('No redirect_uri to send response.'))
     # If this is an absolute redirect URI, return it
     if absolute_http_url_re.match(self.redirect_uri):
         # Return the absolute URI
         return oauth2_tools.normalize_redirect_uri(self.redirect_uri)
     # The URL is not absolute, but check if starts with a slash to be able to build it with HTTP_REFERER
     #if not self.redirect_uri.startswith('/'):
     #    # Not an absolute 
     # If not absolute, 
     if not request:
         raise MissRedirectUri(_('Absolute redirect_uri required.'))
     http_referer = request.META.get('HTTP_REFERER')
     if http_referer is None or not absolute_http_url_re.match(http_referer) or not self.redirect_uri.startswith('/'):
         raise MissRedirectUri(_('Absolute redirect_uri required.'))
     split = list(urlparse.urlparse(http_referer))
     split[2] = self.redirect_uri    # Path
     split[3] = split[4] = split[5] = ''    # No parameters, query or fragment
     return urlparse.urlunparse(split)
示例#2
0
 def match_redirect_uri(self, redirect_uri):
     return normalize_redirect_uri(redirect_uri) == normalize_redirect_uri(self.redirect_uri)