mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-06 21:45:43 +01:00
use GroupPermissions for DefaultGroupManager
This commit is contained in:
@@ -35,6 +35,7 @@ package sonia.scm.group;
|
|||||||
|
|
||||||
//~--- non-JDK imports --------------------------------------------------------
|
//~--- non-JDK imports --------------------------------------------------------
|
||||||
|
|
||||||
|
import com.github.sdorra.ssp.PermissionActionCheck;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
@@ -49,7 +50,6 @@ import sonia.scm.TransformFilter;
|
|||||||
import sonia.scm.search.SearchRequest;
|
import sonia.scm.search.SearchRequest;
|
||||||
import sonia.scm.search.SearchUtil;
|
import sonia.scm.search.SearchUtil;
|
||||||
import sonia.scm.util.CollectionAppender;
|
import sonia.scm.util.CollectionAppender;
|
||||||
import sonia.scm.util.SecurityUtil;
|
|
||||||
import sonia.scm.util.Util;
|
import sonia.scm.util.Util;
|
||||||
|
|
||||||
//~--- JDK imports ------------------------------------------------------------
|
//~--- JDK imports ------------------------------------------------------------
|
||||||
@@ -123,15 +123,17 @@ public class DefaultGroupManager extends AbstractGroupManager
|
|||||||
group.setType(groupDAO.getType());
|
group.setType(groupDAO.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String name = group.getName();
|
||||||
|
|
||||||
if (logger.isInfoEnabled())
|
if (logger.isInfoEnabled())
|
||||||
{
|
{
|
||||||
logger.info("create group {} of type {}", group.getName(),
|
logger.info("create group {} of type {}", name,
|
||||||
group.getType());
|
group.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
SecurityUtil.assertIsAdmin();
|
GroupPermissions.create().check();
|
||||||
|
|
||||||
if (groupDAO.contains(group.getName()))
|
if (groupDAO.contains(name))
|
||||||
{
|
{
|
||||||
throw new GroupAllreadyExistExeption();
|
throw new GroupAllreadyExistExeption();
|
||||||
}
|
}
|
||||||
@@ -161,9 +163,8 @@ public class DefaultGroupManager extends AbstractGroupManager
|
|||||||
group.getType());
|
group.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
SecurityUtil.assertIsAdmin();
|
|
||||||
|
|
||||||
String name = group.getName();
|
String name = group.getName();
|
||||||
|
GroupPermissions.delete().check(name);
|
||||||
|
|
||||||
if (groupDAO.contains(name))
|
if (groupDAO.contains(name))
|
||||||
{
|
{
|
||||||
@@ -204,9 +205,8 @@ public class DefaultGroupManager extends AbstractGroupManager
|
|||||||
group.getType());
|
group.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
SecurityUtil.assertIsAdmin();
|
|
||||||
|
|
||||||
String name = group.getName();
|
String name = group.getName();
|
||||||
|
GroupPermissions.modify().check(name);
|
||||||
|
|
||||||
Group oldGroup = groupDAO.get(name);
|
Group oldGroup = groupDAO.get(name);
|
||||||
|
|
||||||
@@ -236,15 +236,14 @@ public class DefaultGroupManager extends AbstractGroupManager
|
|||||||
@Override
|
@Override
|
||||||
public void refresh(Group group) throws GroupException, IOException
|
public void refresh(Group group) throws GroupException, IOException
|
||||||
{
|
{
|
||||||
|
String name = group.getName();
|
||||||
if (logger.isInfoEnabled())
|
if (logger.isInfoEnabled())
|
||||||
{
|
{
|
||||||
logger.info("refresh group {} of type {}", group.getName(),
|
logger.info("refresh group {} of type {}", name, group.getType());
|
||||||
group.getType());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SecurityUtil.assertIsAdmin();
|
GroupPermissions.read(name).check();
|
||||||
|
Group fresh = groupDAO.get(name);
|
||||||
Group fresh = groupDAO.get(group.getName());
|
|
||||||
|
|
||||||
if (fresh == null)
|
if (fresh == null)
|
||||||
{
|
{
|
||||||
@@ -270,6 +269,7 @@ public class DefaultGroupManager extends AbstractGroupManager
|
|||||||
logger.debug("search group with query {}", searchRequest.getQuery());
|
logger.debug("search group with query {}", searchRequest.getQuery());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final PermissionActionCheck<Group> check = GroupPermissions.read();
|
||||||
return SearchUtil.search(searchRequest, groupDAO.getAll(),
|
return SearchUtil.search(searchRequest, groupDAO.getAll(),
|
||||||
new TransformFilter<Group>()
|
new TransformFilter<Group>()
|
||||||
{
|
{
|
||||||
@@ -278,8 +278,7 @@ public class DefaultGroupManager extends AbstractGroupManager
|
|||||||
{
|
{
|
||||||
Group result = null;
|
Group result = null;
|
||||||
|
|
||||||
if (SearchUtil.matchesOne(searchRequest, group.getName(),
|
if (check.isPermitted(group) && matches(searchRequest, group))
|
||||||
group.getDescription()))
|
|
||||||
{
|
{
|
||||||
result = group.clone();
|
result = group.clone();
|
||||||
}
|
}
|
||||||
@@ -289,6 +288,10 @@ public class DefaultGroupManager extends AbstractGroupManager
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean matches(SearchRequest searchRequest, Group group) {
|
||||||
|
return SearchUtil.matchesOne(searchRequest, group.getName(), group.getDescription());
|
||||||
|
}
|
||||||
|
|
||||||
//~--- get methods ----------------------------------------------------------
|
//~--- get methods ----------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -302,6 +305,8 @@ public class DefaultGroupManager extends AbstractGroupManager
|
|||||||
@Override
|
@Override
|
||||||
public Group get(String id)
|
public Group get(String id)
|
||||||
{
|
{
|
||||||
|
GroupPermissions.read(id).check();
|
||||||
|
|
||||||
Group group = groupDAO.get(id);
|
Group group = groupDAO.get(id);
|
||||||
|
|
||||||
if (group != null)
|
if (group != null)
|
||||||
@@ -335,14 +340,15 @@ public class DefaultGroupManager extends AbstractGroupManager
|
|||||||
@Override
|
@Override
|
||||||
public Collection<Group> getAll(Comparator<Group> comparator)
|
public Collection<Group> getAll(Comparator<Group> comparator)
|
||||||
{
|
{
|
||||||
SecurityUtil.assertIsAdmin();
|
List<Group> groups = new ArrayList<>();
|
||||||
|
|
||||||
List<Group> groups = new ArrayList<Group>();
|
|
||||||
|
|
||||||
|
PermissionActionCheck<Group> check = GroupPermissions.read();
|
||||||
for (Group group : groupDAO.getAll())
|
for (Group group : groupDAO.getAll())
|
||||||
{
|
{
|
||||||
|
if (check.isPermitted(group)) {
|
||||||
groups.add(group.clone());
|
groups.add(group.clone());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (comparator != null)
|
if (comparator != null)
|
||||||
{
|
{
|
||||||
@@ -367,15 +373,17 @@ public class DefaultGroupManager extends AbstractGroupManager
|
|||||||
public Collection<Group> getAll(Comparator<Group> comparator, int start,
|
public Collection<Group> getAll(Comparator<Group> comparator, int start,
|
||||||
int limit)
|
int limit)
|
||||||
{
|
{
|
||||||
SecurityUtil.assertIsAdmin();
|
final PermissionActionCheck<Group> check = GroupPermissions.read();
|
||||||
|
|
||||||
return Util.createSubCollection(groupDAO.getAll(), comparator,
|
return Util.createSubCollection(groupDAO.getAll(), comparator,
|
||||||
new CollectionAppender<Group>()
|
new CollectionAppender<Group>()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public void append(Collection<Group> collection, Group item)
|
public void append(Collection<Group> collection, Group group)
|
||||||
{
|
{
|
||||||
collection.add(item.clone());
|
if (check.isPermitted(group)) {
|
||||||
|
collection.add(group.clone());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, start, limit);
|
}, start, limit);
|
||||||
}
|
}
|
||||||
@@ -406,7 +414,7 @@ public class DefaultGroupManager extends AbstractGroupManager
|
|||||||
@Override
|
@Override
|
||||||
public Collection<Group> getGroupsForMember(String member)
|
public Collection<Group> getGroupsForMember(String member)
|
||||||
{
|
{
|
||||||
LinkedList<Group> groups = new LinkedList<Group>();
|
LinkedList<Group> groups = new LinkedList<>();
|
||||||
|
|
||||||
for (Group group : groupDAO.getAll())
|
for (Group group : groupDAO.getAll())
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user