Untitled

 avatar
unknown
plain_text
a year ago
2.0 kB
17
Indexable
from plone import api
from zope.component import adapter
from Products.Five import BrowserView
from Products.PluggableAuthService.interfaces.plugins import IUserEnumerationPlugin
from zope.globalrequest import getRequest

class CustomSearchUsersView(BrowserView):
    """
    Override PAS search view to fetch all users with properties
    from LDAP and local Plone in bulk.
    """

def searchusers(self):
    portal = api.portal.get()
    request = getRequest()
    acl_users = portal.acl_users

    all_users = []

    # 1️⃣ Fetch local Plone users
    local_users = {u.getId(): u for u in acl_users.getUserObjects()}
    for user_id, user_obj in local_users.items():
        all_users.append({
            'id': user_id,
            'fullname': getattr(user_obj, 'fullname', ''),
            'email': getattr(user_obj, 'email', ''),
            'area': getattr(user_obj, 'area', ''),
            'cargo': getattr(user_obj, 'cargo', ''),
            'telefono': getattr(user_obj, 'telefono', ''),
            'pluginid': 'source_users',
            'portrait': f'/++api++/portrait/{user_id}',
        })

    # 2️⃣ Fetch LDAP users directly (bulk query)
    ldap_plugin = acl_users.get('pasldap')
    if ldap_plugin is not None:
        # This is Plone PAS LDAP plugin specific
        # get all users in bulk
        for user_obj in ldap_plugin.getUserObjects():
            user_id = user_obj.getId()
            if user_id in local_users:
                continue  # already added
            all_users.append({
                'id': user_id,
                'fullname': getattr(user_obj, 'fullname', ''),
                'email': getattr(user_obj, 'email', ''),
                'area': getattr(user_obj, 'area', ''),
                'cargo': getattr(user_obj, 'cargo', ''),
                'telefono': getattr(user_obj, 'telefono', ''),
                'pluginid': 'pasldap',
                'portrait': f'/++api++/portrait/{user_id}',
            })

    return all_users
Editor is loading...
Leave a Comment