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
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
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)