def identify(self, request): """ Return a dictionary with authentication information, or ``None`` if no valid auth_tkt is attached to ``request``""" environ = request.environ cookies = get_cookies(environ) cookie = cookies.get(self.cookie_name) if cookie is None or not cookie.value: return None if self.include_ip: remote_addr = environ['REMOTE_ADDR'] else: remote_addr = '0.0.0.0' try: timestamp, userid, tokens, user_data = self.auth_tkt.parse_ticket( self.secret, cookie.value, remote_addr) except self.auth_tkt.BadTicket: return None now = self.now # service tests if now is None: now = time.time() if self.timeout and ( (timestamp + self.timeout) < now ): # the auth_tkt data has expired return None userid_typename = 'userid_type:' user_data_info = user_data.split('|') for datum in filter(None, user_data_info): if datum.startswith(userid_typename): userid_type = datum[len(userid_typename):] decoder = self.userid_type_decoders.get(userid_type) if decoder: userid = decoder(userid) reissue = self.reissue_time is not None if reissue and not hasattr(request, '_authtkt_reissued'): if ( (now - timestamp) > self.reissue_time ): # work around https://github.com/Pylons/pyramid/issues#issue/108 tokens = filter(None, tokens) headers = self.remember(request, userid, max_age=self.max_age, tokens=tokens) add_global_response_headers(request, headers) request._authtkt_reissued = True environ['REMOTE_USER_TOKENS'] = tokens environ['REMOTE_USER_DATA'] = user_data environ['AUTH_TYPE'] = 'cookie' identity = {} identity['timestamp'] = timestamp identity['userid'] = userid identity['tokens'] = tokens identity['userdata'] = user_data return identity
def identify(self, request): identity = {'uid': None, 'access_token': None} sr = self._key_from_request(request, 'signed_request') if sr: # Get the user from a signed_request if not self.check_signed_request(sr): return None user = self.get_user_from_signed_request(sr) if not user: return None identity['uid'] = user.get('user_id') identity['access_token'] = user.get('oauth_token') identity['signed_request'] = sr if 'signed_request' not in request.cookies or request.cookies.get('signed_request') != sr: add_global_response_headers(request, self.remember(request, identity['uid'], sr)) elif "fbs_" + self.app_id in request.cookies: # Try to get the user from fb cookie. user = self.get_user_from_cookie(request.cookies) if not user: return None identity['uid'] = user.get('uid') identity['access_token'] = user.get('access_token') else: # look for access_token access_token = self._key_from_request(request, 'access_token') identity = self.get_identity_via_access_token(access_token) if 'signed_request' in identity: add_global_response_headers(request, self.remember(request, identity['uid'], identity['signed_request'])) if not identity.get('uid'): identity = self._get_identity_from_code(request) return identity
def identify(self, request): environ = request.environ cookies = get_cookies(environ) cookie = cookies.get(self.cookie_name) if cookie is None or not cookie.value: return None if self.include_ip: remote_addr = environ["REMOTE_ADDR"] else: remote_addr = "0.0.0.0" try: timestamp, userid, tokens, user_data = self.auth_tkt.parse_ticket(self.secret, cookie.value, remote_addr) except self.auth_tkt.BadTicket: return None now = self.now # service tests if now is None: now = time.time() if self.timeout and ((timestamp + self.timeout) < now): return None userid_typename = "userid_type:" user_data_info = user_data.split("|") for datum in filter(None, user_data_info): if datum.startswith(userid_typename): userid_type = datum[len(userid_typename) :] decoder = self.userid_type_decoders.get(userid_type) if decoder: userid = decoder(userid) reissue = self.reissue_time is not None if not hasattr(request, "_authtkt_reissued"): if reissue and ((now - timestamp) > self.reissue_time): headers = self.remember(request, userid, max_age=self.max_age) add_global_response_headers(request, headers) request._authtkt_reissued = True environ["REMOTE_USER_TOKENS"] = tokens environ["REMOTE_USER_DATA"] = user_data environ["AUTH_TYPE"] = "cookie" identity = {} identity["timestamp"] = timestamp identity["userid"] = userid identity["tokens"] = tokens identity["userdata"] = user_data return identity
def identify(self, request): environ = request.environ cookies = get_cookies(environ) cookie = cookies.get(self.cookie_name) if cookie is None or not cookie.value: return None if self.include_ip: remote_addr = environ['REMOTE_ADDR'] else: remote_addr = '0.0.0.0' try: timestamp, userid, tokens, user_data = self.auth_tkt.parse_ticket( self.secret, cookie.value, remote_addr) except self.auth_tkt.BadTicket: return None now = time.time() if self.timeout and ( (timestamp + self.timeout) < now ): return None userid_typename = 'userid_type:' user_data_info = user_data.split('|') for datum in filter(None, user_data_info): if datum.startswith(userid_typename): userid_type = datum[len(userid_typename):] decoder = self.userid_type_decoders.get(userid_type) if decoder: userid = decoder(userid) reissue = self.reissue_time is not None if not hasattr(request, '_authtkt_reissued'): if reissue and ( (now - timestamp) > self.reissue_time): headers = self.remember(request, userid, max_age=self.max_age) add_global_response_headers(request, headers) request._authtkt_reissued = True environ['REMOTE_USER_TOKENS'] = tokens environ['REMOTE_USER_DATA'] = user_data environ['AUTH_TYPE'] = 'cookie' identity = {} identity['timestamp'] = timestamp identity['userid'] = userid identity['tokens'] = tokens identity['userdata'] = user_data return identity
def identify(self, request): identity = {'uid':None, 'access_token':None} sr = self._signed_request(request) if sr: # Get the user from a signed_request if not self.check_signed_request(sr): return None user = self.get_user_from_signed_request(sr) if not user: return None identity['uid'] = user.get('user_id') identity['access_token'] = user.get('oauth_token') identity['signed_request'] = sr if 'signed_request' not in request.cookies or request.cookies.get('signed_request') != sr: add_global_response_headers(request, self.remember(request, identity['uid'], sr)) else: # Try to get the user from fb cookie. user = self.get_user_from_cookie(request.cookies) if not user: return None identity['uid'] = user.get('uid') identity['access_token'] = user.get('access_token') return identity
def _callFUT(self, request, headerlist): from pyramid.request import add_global_response_headers return add_global_response_headers(request, headerlist)
def logout_now(request): headers = forget(request) add_global_response_headers(request, headers) request.user = None