cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From GitBox <...@apache.org>
Subject [GitHub] [cloudstack] nvazquez commented on a change in pull request #3694: Ldap fixes
Date Tue, 17 Dec 2019 18:03:32 GMT
nvazquez commented on a change in pull request #3694: Ldap fixes
URL: https://github.com/apache/cloudstack/pull/3694#discussion_r358927359
 
 

 ##########
 File path: plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/api/command/LdapListUsersCmd.java
 ##########
 @@ -66,34 +122,115 @@ public LdapListUsersCmd(final LdapManager ldapManager, final QueryService
queryS
         _queryService = queryService;
     }
 
+    /**
+     * (as a check for isACloudstackUser is done) only non cloudstack users should be shown
+     * @param users a list of {@code LdapUser}s
+     * @return a (filtered?) list of user response objects
+     */
     private List<LdapUserResponse> createLdapUserResponse(final List<LdapUser>
users) {
         final List<LdapUserResponse> ldapResponses = new ArrayList<LdapUserResponse>();
         for (final LdapUser user : users) {
-            if (getListType().equals("all") || !isACloudstackUser(user)) {
-                final LdapUserResponse ldapResponse = _ldapManager.createLdapUserResponse(user);
-                ldapResponse.setObjectName("LdapUser");
-                ldapResponses.add(ldapResponse);
-            }
+            final LdapUserResponse ldapResponse = _ldapManager.createLdapUserResponse(user);
+            ldapResponse.setObjectName("LdapUser");
+            ldapResponses.add(ldapResponse);
         }
         return ldapResponses;
     }
 
+    private List<UserResponse> cloudstackUsers = null;
+
     @Override
     public void execute() throws ServerApiException {
-        List<LdapUserResponse> ldapResponses = null;
+        cloudstackUsers = null;
+        List<LdapUserResponse> ldapResponses = new ArrayList<LdapUserResponse>();
         final ListResponse<LdapUserResponse> response = new ListResponse<LdapUserResponse>();
         try {
-            final List<LdapUser> users = _ldapManager.getUsers(null);
+            final List<LdapUser> users = _ldapManager.getUsers(domainId);
             ldapResponses = createLdapUserResponse(users);
+//            now filter and annotate
+            ldapResponses = applyUserFilter(ldapResponses);
         } catch (final NoLdapUserMatchingQueryException ex) {
-            ldapResponses = new ArrayList<LdapUserResponse>();
+            // ok, we'll make do with the empty list ldapResponses = new ArrayList<LdapUserResponse>();
         } finally {
             response.setResponses(ldapResponses);
             response.setResponseName(getCommandName());
             setResponseObject(response);
         }
     }
 
+    private List<UserResponse> getCloudstackUsers() {
+        // get a list of relevant cloudstack users, meaning
+        // if we are filtering for local domain, only get users for the current domain
+        // if we are filtering for any domain, get recursive all users for the root domain
+        // if we are filtering for potential imports,
+        //    we are only looking for users in the linked domains/accounts,
+        //    which is only relevant if we ask ldap users for this domain.
+        //    So we are asking for all users in the current domain as well
+        // in case of no filter we should find all users in the current domain for annotation.
+        if (cloudstackUsers == null) {
+            ListResponse<UserResponse> cloudstackUsersresponse;
+            switch (getUserFilter()) {
+            case ANY_DOMAIN:
+                // get the user domain so if the calling user is a root admin ....
+                cloudstackUsersresponse = _queryService.searchForUsers(CallContext.current().getCallingAccount().getDomainId(),
true);
+                break;
+            case NO_FILTER:
+                cloudstackUsersresponse = _queryService.searchForUsers(this.domainId,true);
+                break;
+            case POTENTIAL_IMPORT:
+            case LOCAL_DOMAIN:
+                cloudstackUsersresponse = _queryService.searchForUsers(this.domainId,false);
+                break;
+            default:
+                throw new CloudRuntimeException("error in program login; we are not filtering
but still querying users to filter???");
+            }
+            cloudstackUsers = cloudstackUsersresponse.getResponses();
 
 Review comment:
   Null check?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

Mime
View raw message