Move role related views to FAB Auth manager:

- List roles
- Edit role
- Create role
- View role
log.debug(
            "LDAP search for %r with fields %s in scope %r", filter_str, request_fields, self.auth_ldap_search
        )
        raw_search_result = con.search_s(
            self.auth_ldap_search, ldap.SCOPE_SUBTREE, filter_str, request_fields
        )
        log.debug("LDAP search returned: %s", raw_search_result)
        
        search_result = [
            (dn, attrs) for dn, attrs in raw_search_result if dn is not None and isinstance(attrs, dict)
        ]
        
        if len(search_result) > 1:
            log.error(
                "LDAP search for %r in scope '%a' returned multiple results",
                self.auth_ldap_search,
                filter_str,
            )
            return None, None
        try:
            
            user_dn = search_result[0][0]
            
            user_info = search_result[0][1]
            
            return user_dn, user_info
        except (IndexError, NameError):
            return None, None
    def _ldap_calculate_user_roles(self, user_attributes: dict[str, list[bytes]]) -> list[str]: