Exemple #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
Exemple #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
Exemple #3
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)