Esempio n. 1
0
 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
Esempio n. 2
0
    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
Esempio n. 3
0
 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
Esempio n. 4
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)
Esempio n. 5
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]))
Esempio n. 6
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]))
Esempio n. 7
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)
Esempio n. 8
0
    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
Esempio n. 9
0
 def _get_ldap_agent(self):
     return factories.agent_from_uf(
         self.context.restrictedTraverse("/acl_users"))
Esempio n. 10
0
 def _get_ldap_agent(self):
     return factories.agent_from_uf(
         self.context.restrictedTraverse("/acl_users"))
Esempio n. 11
0
 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)