/** * Returns direct privileges for member on group or stem * @param s * @param groupOrStem * @param member * @return Map keyed on name of privs which are directly assigned */ public static Map getImmediateHas(GrouperSession s,GroupOrStem groupOrStem,Member member) throws SchemaException{ Map map = getAllHas(s,groupOrStem,member); return (Map)map.get("subject"); }
/** * Returns indirect privileges for member on the group or stem - but not how derived * @param s * @param groupOrStem * @param member * @return Map keyed on name of privs which are indirectly assigned */ public static Map getEffectiveHas(GrouperSession s,GroupOrStem groupOrStem,Member member,Field field) throws SchemaException{ Map map =getAllHas(s,groupOrStem,member,field); return (Map)map.get("effectivePrivs"); }
/** * Returns direct privileges for member on group or stem * @param s * @param groupOrStem * @param member * @param field * @return Map keyed on name of privs which are directly assigned * @throws SchemaException */ public static Map getImmediateHas(GrouperSession s,GroupOrStem groupOrStem,Member member,Field field) throws SchemaException{ Map map = getAllHas(s,groupOrStem,member,field); return (Map)map.get("subject"); }
/** * Returns indirect privileges for member on the group or stem * @param s * @param groupOrStem * @param member * @return Map keyed on privilege name for indirect privileges for member on the group or stem, and how derived */ public static Map getExtendedHas(GrouperSession s,GroupOrStem groupOrStem,Member member,Field field) throws SchemaException{ Map map =getAllHas(s,groupOrStem,member,field); map.remove("subject"); map.remove("effectivePrivs"); return map; }
/** * Returns all privileges, direct and indirect, that member has for group or stem * @param s * @param groupOrStem * @param member * @return Map keyed on privilege names - whether direct or indirect * @throws SchemaException */ public static Map getAllHas(GrouperSession s,GroupOrStem groupOrStem,Member member) throws SchemaException{ return getAllHas(s,groupOrStem,member,FieldFinder.find("members")); }
/** * Supplement group maps with privilege info for provided subject * assuming subject has any privileges for this group * @param s * @param groups * @param subject * @return a List of embellished groups */ public static List embellishGroupMapsWithSubjectPrivs(GrouperSession s,List groups,Subject subject) throws Exception{ GroupAsMap group; Map privs=null; Member member = MemberFinder.findBySubject(s,subject); GroupOrStem gs = null; for (int i=0;i<groups.size();i++) { group = (GroupAsMap)groups.get(i); gs=GroupOrStem.findByGroup(s, (Group)group.getWrappedObject()); privs=getAllHas(s,gs,member); group.put("subjectPrivs", privs); group.put("privsSubject", subject.getId()); } return groups; }