Commit fa0f6c76 authored by Brian Major's avatar Brian Major
Browse files

Merge branch 's1890' into s1885

parents 92fe98a0 110a1a5b
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -815,7 +815,7 @@ public class LdapUserDAO extends LdapDAO
        logger.debug("search filter: " + filter);
        logger.debug("search filter: " + filter);


        final String[] attributes = new String[]
        final String[] attributes = new String[]
            { LDAP_UID, LDAP_FIRST_NAME, LDAP_LAST_NAME };
            { LDAP_USER_NAME, LDAP_FIRST_NAME, LDAP_LAST_NAME };
        final SearchRequest searchRequest =
        final SearchRequest searchRequest =
            new SearchRequest(usersDN, SearchScope.ONE, filter, attributes);
            new SearchRequest(usersDN, SearchScope.ONE, filter, attributes);


@@ -831,10 +831,10 @@ public class LdapUserDAO extends LdapDAO
                    next.getAttributeValue(LDAP_FIRST_NAME);
                    next.getAttributeValue(LDAP_FIRST_NAME);
                final String lastName =
                final String lastName =
                    next.getAttributeValue(LDAP_LAST_NAME).trim();
                    next.getAttributeValue(LDAP_LAST_NAME).trim();
                final String uid = next.getAttributeValue(LDAP_UID);
                final String username = next.getAttributeValue(LDAP_USER_NAME);


                User user = new User();
                User user = new User();
                user.getIdentities().add(new HttpPrincipal(uid));
                user.getIdentities().add(new HttpPrincipal(username));


                // Only add Personal Details if it is relevant.
                // Only add Personal Details if it is relevant.
                if (StringUtil.hasLength(firstName) &&
                if (StringUtil.hasLength(firstName) &&
+1 −1
Original line number Original line Diff line number Diff line
@@ -107,7 +107,7 @@ public class CreateGroupAction extends AbstractGroupAction
            }
            }
            for (User usr : group.getUserMembers())
            for (User usr : group.getUserMembers())
            {
            {
                addedMembers.add(usr.getHttpPrincipal().getName());
                addedMembers.add(usr.getX500Principal().getName());
            }
            }
        }
        }
        logGroupInfo(group.getID(), null, addedMembers);
        logGroupInfo(group.getID(), null, addedMembers);
+7 −1
Original line number Original line Diff line number Diff line
@@ -78,6 +78,7 @@ import ca.nrc.cadc.ac.User;
import ca.nrc.cadc.ac.server.PluginFactory;
import ca.nrc.cadc.ac.server.PluginFactory;
import ca.nrc.cadc.ac.server.UserPersistence;
import ca.nrc.cadc.ac.server.UserPersistence;
import ca.nrc.cadc.auth.AuthenticationUtil;
import ca.nrc.cadc.auth.AuthenticationUtil;
import ca.nrc.cadc.util.ObjectUtil;


public class RemoveUserMemberAction extends AbstractGroupAction
public class RemoveUserMemberAction extends AbstractGroupAction
{
{
@@ -99,7 +100,12 @@ public class RemoveUserMemberAction extends AbstractGroupAction
        Group group = groupPersistence.getGroup(this.groupName);
        Group group = groupPersistence.getGroup(this.groupName);


        Principal userPrincipal = AuthenticationUtil.createPrincipal(this.userID, this.userIDType);
        Principal userPrincipal = AuthenticationUtil.createPrincipal(this.userID, this.userIDType);
        User toRemove = getUserPersistence().getUser(userPrincipal);

        User user = getUserPersistence().getAugmentedUser(userPrincipal);
        User toRemove = new User();
        ObjectUtil.setField(toRemove, user.getID(), "id");
        toRemove.getIdentities().addAll(user.getIdentities());

        if (!group.getUserMembers().remove(toRemove))
        if (!group.getUserMembers().remove(toRemove))
        {
        {
            throw new MemberNotFoundException();
            throw new MemberNotFoundException();
+17 −6
Original line number Original line Diff line number Diff line
@@ -71,11 +71,16 @@ package ca.nrc.cadc.ac.server.web.groups;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.createMock;
import static org.junit.Assert.fail;
import static org.junit.Assert.fail;


import java.net.URI;
import java.security.Principal;
import java.security.Principal;
import java.util.UUID;


import javax.security.auth.x500.X500Principal;
import javax.security.auth.x500.X500Principal;


import ca.nrc.cadc.ac.AC;
import ca.nrc.cadc.ac.InternalID;
import ca.nrc.cadc.auth.HttpPrincipal;
import ca.nrc.cadc.auth.HttpPrincipal;
import ca.nrc.cadc.util.ObjectUtil;
import org.apache.log4j.Level;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.Logger;
import org.easymock.EasyMock;
import org.easymock.EasyMock;
@@ -111,11 +116,14 @@ public class RemoveUserMemberActionTest
    {
    {
        try
        try
        {
        {
            User user = new User();
            InternalID internalID = new InternalID(new URI(AC.USER_URI + "?" + UUID.randomUUID()));
            ObjectUtil.setField(user, internalID, "id");

            String userID = "cn=foo,c=ca";
            String userID = "cn=foo,c=ca";
            String userIDType = IdentityType.X500.getValue();
            String userIDType = IdentityType.X500.getValue();
            Principal userPrincipal = AuthenticationUtil.createPrincipal(userID, userIDType);
            Principal x500Principal = AuthenticationUtil.createPrincipal(userID, userIDType);
            User user = new User();
            user.getIdentities().add(x500Principal);
            user.getIdentities().add(userPrincipal);


            Group group = new Group("group");
            Group group = new Group("group");
            User member = new User();
            User member = new User();
@@ -126,7 +134,7 @@ public class RemoveUserMemberActionTest
            EasyMock.expect(mockGroupPersistence.getGroup("group")).andReturn(group);
            EasyMock.expect(mockGroupPersistence.getGroup("group")).andReturn(group);


            final UserPersistence mockUserPersistence = EasyMock.createMock(UserPersistence.class);
            final UserPersistence mockUserPersistence = EasyMock.createMock(UserPersistence.class);
            EasyMock.expect(mockUserPersistence.getUser(userPrincipal)).andReturn(user);
            EasyMock.expect(mockUserPersistence.getAugmentedUser(x500Principal)).andReturn(user);


            EasyMock.replay(mockGroupPersistence, mockUserPersistence);
            EasyMock.replay(mockGroupPersistence, mockUserPersistence);


@@ -160,10 +168,13 @@ public class RemoveUserMemberActionTest
    {
    {
        try
        try
        {
        {
            User user = new User();
            InternalID internalID = new InternalID(new URI(AC.USER_URI + "?" + UUID.randomUUID()));
            ObjectUtil.setField(user, internalID, "id");

            String userID = "cn=foo,c=ca";
            String userID = "cn=foo,c=ca";
            String userIDType = IdentityType.X500.getValue();
            String userIDType = IdentityType.X500.getValue();
            Principal userPrincipal = AuthenticationUtil.createPrincipal(userID, userIDType);
            Principal userPrincipal = AuthenticationUtil.createPrincipal(userID, userIDType);
            User user = new User();
            user.getIdentities().add(new X500Principal(userID));
            user.getIdentities().add(new X500Principal(userID));
            user.getIdentities().add(new HttpPrincipal("foo"));
            user.getIdentities().add(new HttpPrincipal("foo"));


@@ -176,7 +187,7 @@ public class RemoveUserMemberActionTest
            EasyMock.expectLastCall();
            EasyMock.expectLastCall();


            final UserPersistence mockUserPersistence = EasyMock.createMock(UserPersistence.class);
            final UserPersistence mockUserPersistence = EasyMock.createMock(UserPersistence.class);
            EasyMock.expect(mockUserPersistence.getUser(userPrincipal)).andReturn(user);
            EasyMock.expect(mockUserPersistence.getAugmentedUser(userPrincipal)).andReturn(user);


            EasyMock.replay(mockGroupPersistence, mockUserPersistence);
            EasyMock.replay(mockGroupPersistence, mockUserPersistence);


+13 −0
Original line number Original line Diff line number Diff line
@@ -68,6 +68,7 @@
 */
 */
package ca.nrc.cadc.ac;
package ca.nrc.cadc.ac;


import java.io.PrintWriter;
import java.security.Principal;
import java.security.Principal;
import java.util.Comparator;
import java.util.Comparator;
import java.util.Date;
import java.util.Date;
@@ -77,8 +78,12 @@ import java.util.TreeSet;


import ca.nrc.cadc.auth.HttpPrincipal;
import ca.nrc.cadc.auth.HttpPrincipal;


import javax.security.auth.x500.X500Principal;

public class User
public class User
{
{
    // How on God's green earth is this used?  Where is it set?
    // jenkinsd 2016.03.24
    private InternalID id;
    private InternalID id;


    private Set<Principal> identities = new TreeSet<Principal>(new PrincipalComparator());
    private Set<Principal> identities = new TreeSet<Principal>(new PrincipalComparator());
@@ -141,6 +146,14 @@ public class User
        return null;
        return null;
    }
    }


    public X500Principal getX500Principal()
    {
        final Set<X500Principal> identities =
                getIdentities(X500Principal.class);
        return identities.isEmpty() ? null : identities.iterator().next();
    }


    /**
    /**
     * A User is considered consistent if the User's set of identities are a superset
     * A User is considered consistent if the User's set of identities are a superset
     * of this Users set of identities.
     * of this Users set of identities.
Loading