Skip to content
Snippets Groups Projects
Commit 6a037bbc authored by srosse's avatar srosse
Browse files

OO-1000: fix group rights in course

parent 5813c4c2
No related branches found
No related tags found
No related merge requests found
......@@ -194,6 +194,20 @@ public class GroupDAO {
return count == null ? false: count.intValue() > 0;
}
public List<String> getPermissions(IdentityRef identity, OLATResource resource) {
StringBuilder sb = new StringBuilder();
sb.append("select grant.permission from bgrant as grant")
.append(" inner join grant.group as baseGroup")
.append(" inner join baseGroup.members as membership")
.append(" where membership.identity.key=:identityKey and grant.resource.key=:resourceKey")
.append(" and membership.role=grant.role");
return dbInstance.getCurrentEntityManager()
.createQuery(sb.toString(), String.class)
.setParameter("identityKey", identity.getKey())
.setParameter("resourceKey", resource.getKey())
.getResultList();
}
public List<Grant> getGrants(Group group, String role) {
StringBuilder sb = new StringBuilder();
sb.append("select grant from bgrant as grant")
......
......@@ -123,15 +123,14 @@ public class PersistingCourseGroupManager extends BasicManager implements Course
* @see org.olat.course.groupsandrights.CourseGroupManager#hasRight(org.olat.core.id.Identity,
* java.lang.String)
*/
@Override
public boolean hasRight(Identity identity, String courseRight) {
boolean hasRight = rightManager.hasBGRight(courseRight, identity, getCourseResource());
return hasRight;
return rightManager.hasBGRight(courseRight, identity, getCourseResource());
}
@Override
public List<String> getRights(Identity identity) {
return Collections.emptyList();
//TODO groups securityManager.getIdentityPermissionOnresourceable(identity, getCourseResource());
return rightManager.getBGRights(identity, getCourseResource());
}
@Override
......
......@@ -196,10 +196,12 @@ public class CourseBusinessGroupListController extends AbstractBusinessGroupList
cmc.deactivate();
cleanUpPopups();
addGroupsToCourse(selectedGroups);
fireEvent(ureq, Event.CHANGED_EVENT);
} else if (source == confirmRemoveResource) {
if (DialogBoxUIFactory.isYesEvent(event)) { // yes case
BusinessGroup group = (BusinessGroup)confirmRemoveResource.getUserObject();
doRemoveBusinessGroups(Collections.singletonList(group));
fireEvent(ureq, Event.CHANGED_EVENT);
}
} else if (source == confirmRemoveMultiResource) {
if (DialogBoxUIFactory.isYesEvent(event)) { // yes case
......
......@@ -21,7 +21,6 @@ package org.olat.course.member;
import java.util.List;
import org.olat.core.CoreSpringFactory;
import org.olat.core.commons.fullWebApp.LayoutMain3ColsController;
import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.Component;
......@@ -52,6 +51,7 @@ import org.olat.resource.accesscontrol.ACService;
import org.olat.resource.accesscontrol.AccessControlModule;
import org.olat.resource.accesscontrol.ui.OrdersAdminController;
import org.olat.util.logging.activity.LoggingResourceable;
import org.springframework.beans.factory.annotation.Autowired;
/**
*
......@@ -73,16 +73,18 @@ public class MembersManagementMainController extends MainLayoutBasicController
private MembersOverviewController membersOverviewCtrl;
private GroupsAndRightsController rightsController;
private final ACService acService;
private final RepositoryEntry repoEntry;
private final AccessControlModule acModule;
private boolean membersDirty;
private RepositoryEntry repoEntry;
@Autowired
private ACService acService;
@Autowired
private AccessControlModule acModule;
public MembersManagementMainController(UserRequest ureq, WindowControl wControl, RepositoryEntry re) {
super(ureq, wControl);
this.repoEntry = re;
acModule = CoreSpringFactory.getImpl(AccessControlModule.class);
acService = CoreSpringFactory.getImpl(ACService.class);
//logging
getUserActivityLogger().setStickyActionType(ActionType.admin);
ICourse course = CourseFactory.loadCourse(re.getOlatResource());
......@@ -150,6 +152,16 @@ public class MembersManagementMainController extends MainLayoutBasicController
}
}
@Override
protected void event(UserRequest ureq, Controller source, Event event) {
if(groupsCtrl == source) {
if(event == Event.CHANGED_EVENT) {
membersDirty = true;
}
}
super.event(ureq, source, event);
}
@Override
public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
if(entries == null || entries.isEmpty()) return;
......@@ -174,6 +186,8 @@ public class MembersManagementMainController extends MainLayoutBasicController
if(membersOverviewCtrl == null) {
membersOverviewCtrl = new MembersOverviewController(ureq, bwControl, repoEntry);
listenTo(membersOverviewCtrl);
} else if(membersDirty) {
membersOverviewCtrl.reloadMembers();
}
mainVC.put("content", membersOverviewCtrl.getInitialComponent());
selectedCtrl = membersOverviewCtrl;
......
......@@ -236,6 +236,30 @@ public class MembersOverviewController extends BasicController implements Activa
dedupCtrl = null;
cmc = null;
}
protected void reloadMembers() {
if(allMemberListCtrl != null) {
allMemberListCtrl.reloadModel();
}
if(ownersCtrl != null) {
ownersCtrl.reloadModel();
}
if(tutorsCtrl != null) {
tutorsCtrl.reloadModel();
}
if(participantsCtrl != null) {
participantsCtrl.reloadModel();
}
if(waitingCtrl != null) {
waitingCtrl.reloadModel();
}
if(selectedCtrl != null) {
selectedCtrl.reloadModel();
}
if(searchCtrl != null) {
searchCtrl.reloadModel();
}
}
private void doChooseMembers(UserRequest ureq) {
removeAsListenerAndDispose(importMembersWizard);
......
......@@ -97,6 +97,14 @@ public interface BGRightManager {
* right in the given resource
*/
public boolean hasBGRight(String bgRight, IdentityRef identity, OLATResource resource);
/**
*
* @param identity
* @param resource
* @return
*/
public List<String> getBGRights(IdentityRef identity, OLATResource resource);
/**
* @param rightGroup
......
......@@ -122,6 +122,11 @@ public class BGRightManagerImpl extends BasicManager implements BGRightManager {
public boolean hasBGRight(String bgRight, IdentityRef identity, OLATResource resource) {
return groupDao.hasGrant(identity, bgRight, resource);
}
@Override
public List<String> getBGRights(IdentityRef identity, OLATResource resource) {
return groupDao.getPermissions(identity, resource);
}
/**
* @see org.olat.group.right.BGRightManager#findBGRights(org.olat.group.BusinessGroup)
......
......@@ -434,6 +434,7 @@ public abstract class AbstractBusinessGroupListController extends FormBasicContr
String businessPath = "[BusinessGroup:" + group.getKey() + "]";
NewControllerFactory.getInstance().launch(businessPath, ureq, getWindowControl());
}
fireEvent(ureq, Event.CHANGED_EVENT);
} else if (source == businessGroupWizard) {
if(event == Event.CANCELLED_EVENT || event == Event.DONE_EVENT || event == Event.CHANGED_EVENT) {
getWindowControl().pop();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment