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