def _get_ldap_agent(self, bind=False): agent = factories.agent_from_uf( self.restrictedTraverse("/acl_users"), bind=bind ) agent._author = logged_in_user(self.REQUEST) return agent
def search_external_users(self, search_string=u''): ret = [] portal = self.getSite() acl_tool = portal.getAuthenticationTool() sources_info = self.get_sources_info(acl_tool) for source_id in sources_info.keys(): source = sources_info[source_id]['source'] individual_userids = sources_info[source_id]['user_roles'].keys() group_userids_map = self.get_group_userids_map(source_id, sources_info) group_userids = [] for group_users in group_userids_map.values(): group_userids.extend(group_users) userids = set(individual_userids + group_userids) if search_string.strip(): agent = agent_from_uf(source.getUserFolder()) users = agent.search_user(search_string) users = [user for user in users if user.get('uid', user.get('id', None)) and user.get('uid', user.get('id')) in userids] else: cache = ldap_cache.Cache() cache.update() users = [] for user_dn in cache.users: user = cache.get(user_dn) if user.has_key('uid') and user['uid'] in userids: users.append({ 'id': user['uid'], 'first_name': user['givenName'], 'last_name': user['sn'], 'full_name': user['cn'], 'email': user['mail'], 'organisation': user.get('o', 'N/A'), 'postal_address': user.get('postalAddress', 'N/A'), }) # precalculate user roles for performance user_roles_map = {} for user in users: user_id = user.get('uid', user.get('id')) user_roles = self.get_external_user_roles( source, user_id, sources_info, group_userids_map) user_roles_map[user_id] = user_roles user_info = [self.get_external_user_info( source, user, user_roles_map[user.get('uid', user.get('id'))]) for user in users] ret.extend(user_info) return ret
def get_ldap_user_groups(self, user_id): """ """ try: from eea.usersdb.factories import agent_from_uf except ImportError: return [] agent = agent_from_uf(self.restrictedTraverse("/acl_users")) ldap_roles = sorted(agent.member_roles_info("user", user_id, ("description",))) return ldap_roles
def sendEmail(self, p_content, p_to, p_from, p_subject, _immediately=False, p_cc=[], only_to=False, only_cc=False): """ Send email message on transaction commit. If the transaction fails, the message is discarded. """ from eea.usersdb.factories import agent_from_uf agent = None try: uf = self.restrictedTraverse("/acl_users") agent = agent_from_uf(uf, bind=True) except Exception, msg: log.debug("Could not get LDAP agent to check email availability: %s", msg)
def frame_view(context, request): # TODO unit tests # TODO documentation user = request.AUTHENTICATED_USER site = context.getSite() users_tool = site.getAuthenticationTool() first_name = '' last_name = '' email = '' phone_number = '' groups = [] try: if hasattr(site, "member_search"): user_ob = site.member_search._search_users(user.getId())[0] #ldap user_ob = users_tool.get_user_info(user_ob['userid']) # zope user else: user_ob = users_tool.search_users(user.getId(), all_users=True)[0] first_name = user_ob.first_name last_name = user_ob.last_name phone_number = user_ob.phone_number email = user_ob.email except: pass user_id = user.getId() if user_id is not None: # Get groups (Eionet Roles) sources = users_tool.getSources() if sources: try: from eea.usersdb.factories import agent_from_uf except ImportError, e: pass else: agent = agent_from_uf(sources[0].getUserFolder()) ldap_roles = sorted( agent.member_roles_info('user', user.getId(), ('description', ))) for (role_id, attrs) in ldap_roles: groups.append((role_id, attrs.get('description', ('', ))[0]))
def frame_view(context, request): # TODO unit tests # TODO documentation user = request.AUTHENTICATED_USER site = context.getSite() users_tool = site.getAuthenticationTool() first_name = "" last_name = "" email = "" phone_number = "" groups = [] try: if hasattr(site, "member_search"): user_ob = site.member_search._search_users(user.getId())[0] # ldap user_ob = users_tool.get_user_info(user_ob["userid"]) # zope user else: user_ob = users_tool.search_users(user.getId(), all_users=True)[0] first_name = user_ob.first_name last_name = user_ob.last_name phone_number = user_ob.phone_number email = user_ob.email except: pass user_id = user.getId() if user_id is not None: # Get groups (Eionet Roles) sources = users_tool.getSources() if sources: try: from eea.usersdb.factories import agent_from_uf except ImportError, e: pass else: agent = agent_from_uf(sources[0].getUserFolder()) ldap_roles = sorted(agent.member_roles_info("user", user.getId(), ("description",))) for (role_id, attrs) in ldap_roles: groups.append((role_id, attrs.get("description", ("",))[0]))
def sendEmail(self, p_content, p_to, p_from, p_subject, _immediately=False, p_cc=[], only_to=False, only_cc=False): """ Send email message on transaction commit. If the transaction fails, the message is discarded. """ from eea.usersdb.factories import agent_from_uf agent = None try: uf = self.restrictedTraverse('/acl_users') agent = agent_from_uf(uf, bind=True) except Exception, msg: log.debug( "Could not get LDAP agent to check email availability: %s", msg)
def search_external_users(self, search_string=u''): ret = [] portal = self.getSite() acl_tool = portal.getAuthenticationTool() sources_info = self.get_sources_info(acl_tool) for source_id in sources_info.keys(): source = sources_info[source_id]['source'] individual_userids = sources_info[source_id]['user_roles'].keys() group_userids_map = self.get_group_userids_map( source_id, sources_info) group_userids = [] for group_users in group_userids_map.values(): group_userids.extend(group_users) userids = set(individual_userids + group_userids) if search_string.strip(): agent = agent_from_uf(source.getUserFolder()) users = agent.search_user(search_string) users = [ user for user in users if user.get('uid', user.get('id', None)) and user.get('uid', user.get('id')) in userids ] else: cache = ldap_cache.Cache() cache.update() users = [] for user_dn in cache.users: user = cache.get(user_dn) if user.has_key('uid') and user['uid'] in userids: users.append({ 'id': user['uid'], 'first_name': user['givenName'], 'last_name': user['sn'], 'full_name': user['cn'], 'email': user.get('mail', ''), 'organisation': user.get('o', 'N/A'), 'postal_address': user.get('postalAddress', 'N/A'), }) # precalculate user roles for performance user_roles_map = {} for user in users: user_id = user.get('uid', user.get('id')) user_roles = self.get_external_user_roles( source, user_id, sources_info, group_userids_map) user_roles_map[user_id] = user_roles user_info = [ self.get_external_user_info( source, user, user_roles_map[user.get('uid', user.get('id'))]) for user in users ] ret.extend(user_info) return ret
def _get_ldap_agent(self): return factories.agent_from_uf( self.context.restrictedTraverse("/acl_users"))
def __init__(self, zope_app, user, **config): assert user is not None, "ProfileClient got `user` argument None" self.zope_app = zope_app self.ldap_folder = zope_app.acl_users self.user = user self.agent = agent_from_uf(self.ldap_folder, **config)