mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-16 22:43:12 +00:00
[DS-88] Anonymous group don't works as subgroup - ID: 1688445
[DS-61] IP Authentication only works on logged in users - ID: 2088431 git-svn-id: http://scm.dspace.org/svn/repo/branches/dspace-1_5_x@3585 9c30dcfa-912a-0410-8fc2-9e0234be79fd
This commit is contained in:
@@ -350,7 +350,8 @@ public class Group extends DSpaceObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* check to see if an eperson is a member
|
* check to see if an eperson is a direct member.
|
||||||
|
* If the eperson is a member via a subgroup will be returned <code>false</code>
|
||||||
*
|
*
|
||||||
* @param e
|
* @param e
|
||||||
* eperson to check membership
|
* eperson to check membership
|
||||||
@@ -369,7 +370,8 @@ public class Group extends DSpaceObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* check to see if group is a member
|
* check to see if g is a direct group member.
|
||||||
|
* If g is a subgroup via another group will be returned <code>false</code>
|
||||||
*
|
*
|
||||||
* @param g
|
* @param g
|
||||||
* group to check
|
* group to check
|
||||||
@@ -400,23 +402,9 @@ public class Group extends DSpaceObject
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// first, check for membership if it's a special group
|
|
||||||
// (special groups can be set even if person isn't authenticated)
|
|
||||||
if (c.inSpecialGroup(groupid))
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
EPerson currentuser = c.getCurrentUser();
|
EPerson currentuser = c.getCurrentUser();
|
||||||
|
|
||||||
// only test for membership if context contains a user
|
return epersonInGroup(c, groupid, currentuser);
|
||||||
if (currentuser != null)
|
|
||||||
{
|
|
||||||
return epersonInGroup(c, groupid, currentuser);
|
|
||||||
}
|
|
||||||
|
|
||||||
// currentuser not set, return FALSE
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -455,39 +443,45 @@ public class Group extends DSpaceObject
|
|||||||
public static Set<Integer> allMemberGroupIDs(Context c, EPerson e)
|
public static Set<Integer> allMemberGroupIDs(Context c, EPerson e)
|
||||||
throws SQLException
|
throws SQLException
|
||||||
{
|
{
|
||||||
// two queries - first to get groups eperson is a member of
|
|
||||||
// second query gets parent groups for groups eperson is a member of
|
|
||||||
|
|
||||||
TableRowIterator tri = DatabaseManager.queryTable(c, "epersongroup2eperson",
|
|
||||||
"SELECT * FROM epersongroup2eperson WHERE eperson_id= ?",
|
|
||||||
e.getID());
|
|
||||||
|
|
||||||
Set<Integer> groupIDs = new HashSet<Integer>();
|
Set<Integer> groupIDs = new HashSet<Integer>();
|
||||||
|
|
||||||
try
|
if (e != null)
|
||||||
{
|
{
|
||||||
while (tri.hasNext())
|
// two queries - first to get groups eperson is a member of
|
||||||
|
// second query gets parent groups for groups eperson is a member of
|
||||||
|
|
||||||
|
TableRowIterator tri = DatabaseManager.queryTable(c,
|
||||||
|
"epersongroup2eperson",
|
||||||
|
"SELECT * FROM epersongroup2eperson WHERE eperson_id= ?", e
|
||||||
|
.getID());
|
||||||
|
|
||||||
|
try
|
||||||
{
|
{
|
||||||
TableRow row = tri.next();
|
while (tri.hasNext())
|
||||||
|
{
|
||||||
|
TableRow row = tri.next();
|
||||||
|
|
||||||
int childID = row.getIntColumn("eperson_group_id");
|
int childID = row.getIntColumn("eperson_group_id");
|
||||||
|
|
||||||
groupIDs.add(new Integer(childID));
|
groupIDs.add(new Integer(childID));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
// close the TableRowIterator to free up resources
|
||||||
|
if (tri != null)
|
||||||
|
tri.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
// close the TableRowIterator to free up resources
|
|
||||||
if (tri != null)
|
|
||||||
tri.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Also need to get all "Special Groups" user is a member of!
|
// Also need to get all "Special Groups" user is a member of!
|
||||||
// Otherwise, you're ignoring the user's membership to these groups!
|
// Otherwise, you're ignoring the user's membership to these groups!
|
||||||
Group[] specialGroups = c.getSpecialGroups();
|
Group[] specialGroups = c.getSpecialGroups();
|
||||||
for(int j=0; j<specialGroups.length;j++)
|
for(int j=0; j<specialGroups.length;j++)
|
||||||
groupIDs.add(new Integer(specialGroups[j].getID()));
|
groupIDs.add(new Integer(specialGroups[j].getID()));
|
||||||
|
|
||||||
|
// all the users are members of the anonymous group
|
||||||
|
groupIDs.add(new Integer(0));
|
||||||
|
|
||||||
// now we have all owning groups, also grab all parents of owning groups
|
// now we have all owning groups, also grab all parents of owning groups
|
||||||
// yes, I know this could have been done as one big query and a union,
|
// yes, I know this could have been done as one big query and a union,
|
||||||
// but doing the Oracle port taught me to keep to simple SQL!
|
// but doing the Oracle port taught me to keep to simple SQL!
|
||||||
@@ -510,16 +504,10 @@ public class Group extends DSpaceObject
|
|||||||
groupQuery += " OR ";
|
groupQuery += " OR ";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("".equals(groupQuery))
|
|
||||||
{
|
|
||||||
// don't do query, isn't member of any groups
|
|
||||||
return groupIDs;
|
|
||||||
}
|
|
||||||
|
|
||||||
// was member of at least one group
|
// was member of at least one group
|
||||||
// NOTE: even through the query is built dynamicaly all data is seperated into the
|
// NOTE: even through the query is built dynamicaly all data is seperated into the
|
||||||
// the parameters array.
|
// the parameters array.
|
||||||
tri = DatabaseManager.queryTable(c, "group2groupcache",
|
TableRowIterator tri = DatabaseManager.queryTable(c, "group2groupcache",
|
||||||
"SELECT * FROM group2groupcache WHERE " + groupQuery,
|
"SELECT * FROM group2groupcache WHERE " + groupQuery,
|
||||||
parameters);
|
parameters);
|
||||||
|
|
||||||
|
@@ -58,6 +58,8 @@
|
|||||||
|
|
||||||
<%@ page import="org.dspace.eperson.Group" %>
|
<%@ page import="org.dspace.eperson.Group" %>
|
||||||
|
|
||||||
|
<%@ page import="org.dspace.core.Utils" %>
|
||||||
|
|
||||||
|
|
||||||
<%
|
<%
|
||||||
int PAGESIZE = 50;
|
int PAGESIZE = 50;
|
||||||
@@ -212,7 +214,7 @@ function clearGroups()
|
|||||||
<td headers="t1" class="<%= row %>RowOddCol">
|
<td headers="t1" class="<%= row %>RowOddCol">
|
||||||
<input type="button" value="<%
|
<input type="button" value="<%
|
||||||
if (multiple) { %><fmt:message key="jsp.tools.general.add"/><% }
|
if (multiple) { %><fmt:message key="jsp.tools.general.add"/><% }
|
||||||
else { %><fmt:message key="jsp.tools.general.select"/><% } %>" onclick="javascript:<%= clearList %>addGroup(<%= g.getID() %>, '<%= fullname %>');<%= closeWindow %>"/></td>
|
else { %><fmt:message key="jsp.tools.general.select"/><% } %>" onclick="javascript:<%= clearList %>addGroup('<%= g.getID() %>', '<%= Utils.addEntities(fullname) %>');<%= closeWindow %>"/></td>
|
||||||
<td headers="t2" class="<%= row %>RowEvenCol"><%= g.getID() %></td>
|
<td headers="t2" class="<%= row %>RowEvenCol"><%= g.getID() %></td>
|
||||||
<td headers="t3" class="<%= row %>RowOddCol"> <%= g.getName()%></td>
|
<td headers="t3" class="<%= row %>RowOddCol"> <%= g.getName()%></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@@ -78,6 +78,8 @@
|
|||||||
- [DS-62] Not right encoding for license and extracted texts - ID: 2234532
|
- [DS-62] Not right encoding for license and extracted texts - ID: 2234532
|
||||||
- [DS-84] Improve API for "IgnoreAuthorization" blocks - ID: 1687783
|
- [DS-84] Improve API for "IgnoreAuthorization" blocks - ID: 1687783
|
||||||
- [DS-58] Double quote problem in some fields of JSPUI (continued) - ID: 2528065
|
- [DS-58] Double quote problem in some fields of JSPUI (continued) - ID: 2528065
|
||||||
|
- [DS-88] Anonymous group don't works as subgroup - ID: 1688445
|
||||||
|
- [DS-61] IP Authentication only works on logged in users - ID: 2088431
|
||||||
|
|
||||||
(Paulo Jobim)
|
(Paulo Jobim)
|
||||||
- SF Patch [2655052] Authors re-ordered when item edited (xmlui)
|
- SF Patch [2655052] Authors re-ordered when item edited (xmlui)
|
||||||
|
Reference in New Issue
Block a user