Exemplo n.º 1
0
 def get_response(self, djp):
     provider = self.provider(djp)
     http = djp.http
     if provider:
         request = djp.request
         session = request.session
         data    = dict(request.GET.items())
         
         try:
             key, secret, refer_url = session.pop('request_token', None)
         except:
             # Redirect the user to the login page,
             messages.error(request, 'No request token for session. Could not login.')
             return http.HttpResponseRedirect('/')
         
         access_token = provider.quick_access_token(data)
         
         if not access_token:
             
             if data.get('denied', None):
                 messages.info(request, 'Could not login. Access denied.')
                 return http.HttpResponseRedirect(djp.settings.USER_ACCOUNT_HOME_URL)
             
             oauth_token = data.get('oauth_token', None)
             oauth_verifier = data.get('oauth_verifier', None)
                 
             if not oauth_token:
                 messages.error(request, "{0} authorization token not available.".format(provider))
                 return http.HttpResponseRedirect(refer_url)
             
             if key != oauth_token:
                 messages.error(request, "{0} authorization token and session token don't mach.".format(provider))
                 return http.HttpResponseRedirect(refer_url)
             
             rtoken = provider.authtoken(key,secret,oauth_verifier)
             
             try:
                 access_token = provider.access_token(rtoken)
                 if not access_token:
                     messages.error(request, "Coud not obtain access token")
                     return http.HttpResponseRedirect(refer_url)
             except Exception as e:
                 messages.error(request, "Coud not obtain access token. {0}".format(e))
                 return http.HttpResponseRedirect(refer_url)
         
         self.create_or_update_user(request, provider, access_token)
         
         # authentication was successful, use is now logged in
         next = session.pop('%s_login_next' % provider, refer_url)
         res = http.HttpResponseRedirect(next)
         res.set_cookie(provider.cookie(),provider.get_access_token_key(access_token))
         return res
     else:
         raise http.Http404
Exemplo n.º 2
0
 def add_message(self, request, msg, error = False):
     msg = str(msg)
     if msg:
         if error:
             self._errors.append(msg)
             if not self.is_ajax:
                 messages.error(request,msg)
         else:
             self._messages.append(msg)
             if not self.is_ajax:
                 messages.info(request,msg)
     return self
Exemplo n.º 3
0
def deleteinstance(djp, force_redirect = False):
    '''Delete an instance from database'''
    instance = djp.instance
    view    = djp.view
    request = djp.request
    
    curr    = request.environ.get('HTTP_REFERER')
    next    = get_next(request)
    if next:
        next = request.build_absolute_uri(next)
    next = next or curr
        
    bid     = view.appmodel.remove_object(instance)
    msg     = 'Successfully deleted %s' % instance
    if request.is_ajax():
        if next == curr and bid and not force_redirect:
            return jremove('#%s' % bid)
        else:
            messages.info(request,msg)
            return jredirect(next)
    else:
        messages.info(request,msg)
        next = next or curr
        return http.HttpResponseRedirect(next)
Exemplo n.º 4
0
    def handle_response(self, djp):
        request = djp.request
        request_token = request.session.get('request_token', None)
        verifier = request.GET.get('oauth_verifier', None)
        denied = request.GET.get('denied', None)
        
        # If we've been denied, put them back to the signin page
        # They probably meant to sign in with facebook >:D
        if denied:
            messages.info(request, 'Could not login. Access denied.')
            return http.HttpResponseRedirect(settings.USER_ACCOUNT_HOME_URL)

        # If there is no request_token for session,
        # Means we didn't redirect user to twitter
        if not request_token:
            # Redirect the user to the login page,
            messages.info(request, 'No request token for session. Could not login.')
            return http.HttpResponseRedirect('/')
    
        token = oauth.OAuthToken.from_string(request_token)
    
        # If the token from session and token from twitter does not match
        # means something bad happened to tokens
        if token.key != request.GET.get('oauth_token', 'no-token'):
            messages.info(request, "Token for session and from twietter don't mach. Could not login.")
            del_dict_key(request.session, 'request_token')
            # Redirect the user to the login page
            return http.HttpResponseRedirect('/')
    
        try:
            twitter = oauthtwitter.TwitterOAuthClient(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET)
            access_token = twitter.fetch_access_token(token, verifier)
    
            request.session['access_token'] = access_token.to_string()
            user = authenticate(twitter_access_token=access_token)
        except Exception, e:
            messages.info(request, 'Could not login. %s' % e)
            user = None
Exemplo n.º 5
0
 def force_message(self, request):
     if self.is_ajax:
         for msg in self._messages:
             messages.info(request,msg)
         for msg in self._errors:
             messages.error(request,msg)