Package org.apache.jackrabbit.api.security.user

Examples of org.apache.jackrabbit.api.security.user.Group


     *        modifications must be detected upon save.
     */
    @Ignore("OAK-615")
    @Test
    public void testDetectCyclicMembership() throws Exception {
        Group group1 = null;
        Group group2 = null;
        Group group3 = null;
       
        UserManager userMgr = getUserManager(root);
        try {
            group1 = userMgr.createGroup("group1");
            group2 = userMgr.createGroup("group2");
            group3 = userMgr.createGroup("group3");

            group1.addMember(group2);
            group2.addMember(group3);
           
            assertFalse(group3.addMember(group1));
           
            Tree group3Tree = root.getTree(group3.getPath());
            Set<String> values = Collections.singleton(root.getTree(group1.getPath()).getProperty(JcrConstants.JCR_UUID).getValue(Type.STRING));
            PropertyState prop = PropertyStates.createProperty(REP_MEMBERS, values, Type.WEAKREFERENCES);
            group3Tree.setProperty(prop);
            root.commit();
            fail("Cyclic group membership must be detected");
        } catch (CommitFailedException e) {
            // success
        } finally {
            root.refresh();
            if (group1 != null) group1.remove();
            if (group2 != null) group2.remove();
            if (group3 != null) group3.remove();
            root.commit();
        }
    }
View Full Code Here


            Authorizable a = userManager.getAuthorizable(groupId);
            if (a == null || !a.isGroup()) {
                throw new RepositoryException(groupId + " does not represent a valid group.");
            }

            Group gr = (Group) a;
            // 1. collect members to add and to remove.
            Map<String, Authorizable> toRemove = new HashMap<String, Authorizable>();
            for (Iterator<Authorizable> declMembers = gr.getDeclaredMembers(); declMembers.hasNext(); ) {
                Authorizable dm = declMembers.next();
                toRemove.put(dm.getID(), dm);
            }

            List<Authorizable> toAdd = new ArrayList<Authorizable>();
            List<Membership.Member> nonExisting = new ArrayList<Membership.Member>();

            for (Membership.Member memberEntry : members) {
                String remapped = referenceTracker.get(memberEntry.contentId);
                String memberContentId = (remapped == null) ? memberEntry.contentId : remapped;

                Authorizable member = null;
                try {
                    Tree n = getIdentifierManager().getTree(memberContentId);
                    member = userManager.getAuthorizable(n);
                } catch (RepositoryException e) {
                    // no such node or failed to retrieve authorizable
                    // warning is logged below.
                }
                if (member != null) {
                    if (toRemove.remove(member.getID()) == null) {
                        toAdd.add(member);
                    } // else: no need to remove from rep:members
                } else {
                    handleFailure("New member of " + gr + ": No such authorizable (NodeID = " + memberContentId + ')');
                    if (importBehavior == ImportBehavior.BESTEFFORT) {
                        log.info("ImportBehavior.BESTEFFORT: Remember non-existing member for processing.");
                        nonExisting.add(memberEntry);
                    }
                }
            }

            // 2. adjust members of the group
            for (Authorizable m : toRemove.values()) {
                if (!gr.removeMember(m)) {
                    handleFailure("Failed remove existing member (" + m + ") from " + gr);
                }
            }
            for (Authorizable m : toAdd) {
                if (!gr.addMember(m)) {
                    handleFailure("Failed add member (" + m + ") to " + gr);
                }
            }

            // handling non-existing members in case of best-effort
            if (!nonExisting.isEmpty()) {
                log.info("ImportBehavior.BESTEFFORT: Found " + nonExisting.size() + " entries of rep:members pointing to non-existing authorizables. Adding to rep:members.");
                Tree groupTree = root.getTree(gr.getPath());

                MembershipProvider membershipProvider = userManager.getMembershipProvider();
                for (Membership.Member member : nonExisting) {
                    membershipProvider.addMember(groupTree, member.name, member.contentId);
                }
View Full Code Here

    }

    @Test
    public void testAccessControlAction() throws Exception {
        UserManager userMgr = getUserManager(root);
        Group gr = null;
        try {
            gr = userMgr.createGroup("actionTestGroup");
            root.commit();

            assertAcAction(gr, PrivilegeConstants.JCR_READ);
        } finally {
            root.refresh();
            if (gr != null) {
                gr.remove();
            }
            root.commit();
        }
    }
View Full Code Here

    }

    protected void createPrincipals() throws Exception {
        if (principals.isEmpty()) {
            for (int i = 0; i < 10; i++) {
                Group gr = getUserManager(root).createGroup("testGroup" + i);
                principals.add(gr.getPrincipal());
            }
            root.commit();
        }
    }
View Full Code Here

        }
        Value[] refs = node.getProperty(P_GROUPS).getValues();
        for (int i = 0; i < refs.length; i++) {
            try {
                NodeImpl groupNode = (NodeImpl) getSession().getNodeByUUID(refs[i].getString());
                Group group = GroupImpl.create(groupNode, userManager);
                if (groups.add(group) && includedIndirect) {
                    ((AuthorizableImpl) group).collectMembership(groups, true);
                }
            } catch (ItemNotFoundException e) {
                // groupNode doesn't exist any more
View Full Code Here

     */
    private static void createSystemUsers(UserManager userManager,
                                          String adminId,
                                          String anonymousId) throws RepositoryException {
        Principal pr = new PrincipalImpl(SecurityConstants.ADMINISTRATORS_NAME);
        Group admins = (Group) userManager.getAuthorizable(pr);
        if (admins == null) {
            admins = userManager.createGroup(new PrincipalImpl(SecurityConstants.ADMINISTRATORS_NAME));
            log.debug("...created administrators group with name '"+SecurityConstants.ADMINISTRATORS_NAME+"'");
        }

        if (adminId != null) {
            Authorizable admin = userManager.getAuthorizable(adminId);
            if (admin == null) {
                admin = userManager.createUser(adminId, adminId);
                log.info("...created admin-user with id \'" + adminId + "\' ...");
                admins.addMember(admin);
                log.info("...added admin \'" + adminId + "\' as member of the administrators group.");
            }
        }

        if (anonymousId != null) {
View Full Code Here

           
            if (principal != null) {
              setPrincipal(groupNode, principal);
            }

            Group group = createGroup(groupNode);
            onCreate(group);
            if (isAutoSave()) {
                session.save();
            }
View Full Code Here

                    Authorizable a = userManager.getAuthorizable(((Membership) reference).groupId);
                    if (a == null || !a.isGroup()) {
                        throw new RepositoryException(((Membership) reference).groupId + " does not represent a valid group.");
                    }

                    final Group gr = (Group) a;
                    // 1. collect members to add and to remove.
                    Map<String, Authorizable> toRemove = new HashMap<String, Authorizable>();
                    for (Iterator<Authorizable> declMembers = gr.getDeclaredMembers(); declMembers.hasNext();) {
                        Authorizable dm = declMembers.next();
                        toRemove.put(dm.getID(), dm);
                    }

                    List<Authorizable> toAdd = new ArrayList<Authorizable>();
                    final List<Membership.Member> nonExisting = new ArrayList<Membership.Member>();

                    for (Membership.Member member : ((Membership) reference).members) {
                        NodeId remapped = referenceTracker.getMappedId(member.id);
                        NodeId id = (remapped == null) ? member.id : remapped;

                        Authorizable authorz = null;
                        try {
                            NodeImpl n = ((SessionImpl) session).getNodeById(id);
                            authorz = userManager.getAuthorizable(n);
                        } catch (RepositoryException e) {
                            // no such node or failed to retrieve authorizable
                            // warning is logged below.
                        }
                        if (authorz != null) {
                            if (toRemove.remove(authorz.getID()) == null) {
                                toAdd.add(authorz);
                            } // else: no need to remove from rep:members
                        } else {
                            handleFailure("New member of " + gr + ": No such authorizable (NodeID = " + id + ")");
                            if (importBehavior == ImportBehavior.BESTEFFORT) {
                                log.info("ImportBehavior.BESTEFFORT: Remember non-existing member for processing.");
                                nonExisting.add(member);
                            }
                        }
                    }

                    // 2. adjust members of the group
                    for (Authorizable m : toRemove.values()) {
                        if (!gr.removeMember(m)) {
                            handleFailure("Failed remove existing member (" + m + ") from " + gr);
                        }
                    }
                    for (Authorizable m : toAdd) {
                        if (!gr.addMember(m)) {
                            handleFailure("Failed add member (" + m + ") to " + gr);
                        }
                    }

                    // handling non-existing members in case of best-effort
View Full Code Here

     * @param groupNode
     * @return
     * @throws RepositoryException
     */
    Group createGroup(NodeImpl groupNode) throws RepositoryException {
        Group group = GroupImpl.create(groupNode, this);
        idPathMap.put(group.getID(), groupNode.getPath());
        return group;
    }
View Full Code Here

        PropertyIterator itr = getNode().getWeakReferences(getSession().getJCRName(P_GROUPS));
        Collection members = new HashSet((int) itr.getSize());
        while (itr.hasNext()) {
            NodeImpl n = (NodeImpl) itr.nextProperty().getParent();
            if (n.isNodeType(NT_REP_GROUP)) {
                Group group = userManager.createGroup(n);
                // only retrieve indirect group-members if the group is not
                // yet present (detected eventual circular membership).
                if (members.add(group) && includeIndirect) {
                    members.addAll(((GroupImpl) group).getMembers(true));
                }
View Full Code Here

TOP

Related Classes of org.apache.jackrabbit.api.security.user.Group

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.