Commit 2cc6dc2f authored by Jeff Burke's avatar Jeff Burke
Browse files

Merge branch 's1734' of ssh://gimli2/srv/cadc/git/wopencadc into s1734

parents 27cb2f56 13206cf1
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -68,14 +68,16 @@
 */
package ca.nrc.cadc.ac.server;

import java.security.AccessControlException;
import java.security.Principal;
import java.util.Collection;

import ca.nrc.cadc.ac.User;
import ca.nrc.cadc.ac.UserNotFoundException;
import ca.nrc.cadc.ac.UserRequest;
import ca.nrc.cadc.net.TransientException;

import com.unboundid.ldap.sdk.DN;
import java.security.AccessControlException;
import java.security.Principal;
import java.util.Collection;

public abstract interface UserPersistence<T extends Principal>
{
+49 −1
Original line number Diff line number Diff line
@@ -96,7 +96,6 @@ import java.util.Map;
import javax.security.auth.x500.X500Principal;
import org.apache.log4j.Logger;


public class LdapUserDAO<T extends Principal> extends LdapDAO
{
    private static final Logger logger = Logger.getLogger(LdapUserDAO.class);
@@ -161,6 +160,55 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO
        memberAttribs = tmp;
    }
    
    /**
     * 
     * @return
     * @throws TransientException 
     */
    public Collection<HttpPrincipal> getCadcIDs() throws TransientException
    {
        try
        {
            Filter filter = Filter.createPresenceFilter("uid");
            String [] attributes = new String[] {"uid"};
            
            SearchRequest searchRequest = 
                    new SearchRequest(config.getUsersDN(), 
                                      SearchScope.SUB, filter, attributes);
    
            SearchResult searchResult = null;
            try
            {
                searchResult = getConnection().search(searchRequest);
            }
            catch (LDAPSearchException e)
            {
                if (e.getResultCode() == ResultCode.NO_SUCH_OBJECT)
                {
                    logger.debug("Could not find users root", e);
                    throw new IllegalStateException("Could not find users root");
                }
            }
            
            LdapDAO.checkLdapResult(searchResult.getResultCode());
            Collection<HttpPrincipal> userIDs = new HashSet<HttpPrincipal>();
            for (SearchResultEntry next : searchResult.getSearchEntries())
            {
                userIDs.add(new HttpPrincipal(next.getAttributeValue("uid")));
            }
            
            return userIDs;
        }
        catch (LDAPException e1)
        {
            logger.debug("getCadcIDs Exception: " + e1, e1);
            LdapDAO.checkLdapResult(e1.getResultCode());
            throw new IllegalStateException("Unexpected exception: " + 
                    e1.getMatchedDN(), e1);
        }
        
    }


    /**
     * Add the specified user..
+1 −0
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@ import ca.nrc.cadc.ac.User;
import ca.nrc.cadc.ac.UserNotFoundException;
import ca.nrc.cadc.ac.UserRequest;
import ca.nrc.cadc.ac.server.UserPersistence;
import ca.nrc.cadc.auth.HttpPrincipal;
import ca.nrc.cadc.net.TransientException;
import com.unboundid.ldap.sdk.DN;
import java.security.AccessControlException;
+0 −1
Original line number Diff line number Diff line
@@ -68,7 +68,6 @@
 */
package ca.nrc.cadc.ac.server.web.users;


import ca.nrc.cadc.log.ServletLogInfo;
import javax.servlet.http.HttpServletRequest;

+10 −1
Original line number Diff line number Diff line
@@ -82,6 +82,15 @@ import javax.security.auth.x500.X500Principal;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;

import ca.nrc.cadc.ac.server.web.AddGroupMemberAction;
import ca.nrc.cadc.ac.server.web.AddUserMemberAction;
import ca.nrc.cadc.ac.server.web.DeleteGroupAction;
import ca.nrc.cadc.ac.server.web.GetGroupAction;
import ca.nrc.cadc.ac.server.web.ModifyGroupAction;
import ca.nrc.cadc.ac.server.web.RemoveGroupMemberAction;
import ca.nrc.cadc.ac.server.web.RemoveUserMemberAction;
import ca.nrc.cadc.util.StringUtil;

public class UsersActionFactory
{
    private static final Logger log = Logger.getLogger(UsersActionFactory.class);
@@ -128,7 +137,7 @@ public class UsersActionFactory
            }

        }
        else if (segments.length == 1)
        else
        {
            User user = getUser(segments[0], request.getParameter("idType"),
                                method, path);
Loading