def authenticate(self, environ, identity): if 'repoze.who.plugins.openid.userid' in identity: openid = identity['repoze.who.plugins.openid.userid'] user = User.by_openid(openid) if user is None or not user.is_active(): return None else: return user.name return None
def authenticate(self, environ, identity): if 'repoze.who.plugins.openid.userid' in identity: openid = identity.get('repoze.who.plugins.openid.userid') user = User.by_openid(openid) if user is None: return None else: return user.name return None
def authenticate(self, environ, identity): if 'repoze.who.plugins.openid.userid' in identity: openid = identity.get('repoze.who.plugins.openid.userid') user = User.by_openid(openid) if user is None: # TODO: Implement a mask to ask for an alternative user # name instead of just using the OpenID identifier. name = identity.get('repoze.who.plugins.openid.nickname') if not User.check_name_valid(name): name = openid if not User.check_name_available(name): name = openid user = User(openid=openid, name=name, fullname=identity.get('repoze.who.plugins.openid.fullname'), email=identity.get('repoze.who.plugins.openid.email')) Session.add(user) Session.commit() Session.remove() return user.name return None
def preauthenticate(self, environ, identity): # turn the oauth identity into a CKAN one; set it in our identity import oauth2 as oauth try: access_token = dict(urlparse.parse_qsl(identity['userdata'])) oauth_token = access_token['oauth_token'] oauth_token_secret = access_token['oauth_token_secret'] except KeyError: return None access_token = oauth.Token(oauth_token, oauth_token_secret) client = oauth.Client(self.consumer, access_token) resp, content = client.request(self.user_url, "GET") data = json.loads(content) user_id = data['id'] logging.info("Preauth: Got oauth user data for user %s" % user_id) user = User.by_openid(user_id) if user is None: user = User(openid=user_id, name=data['id'], fullname=data['name'], email=data['mail']) Session.add(user) else: user.fullname = data['name'] # if the name is updated Session.commit() Session.remove() logging.info("Preauth: Created new/updated user %s" % user_id) # deal with groups user_groups = data['groups'] _sync_auth_groups(user, user_groups) name = user.name.encode("utf8") logging.info("Preauth: Returning user identifier %s" % name) identity['repoze.who.userid'] = name return identity