Skip to content
Snippets Groups Projects
Commit a679f8de authored by uhensler's avatar uhensler
Browse files

OO-3304: Define user rights in quality management module

parent 3259a454
No related branches found
No related tags found
No related merge requests found
......@@ -29,6 +29,8 @@ public interface QualitySecurityCallback {
public boolean canViewDataCollections();
public boolean canCreateDataCollections();
public boolean canEditDataCollections();
public boolean canUpdateBaseConfiguration(QualityDataCollectionLight dataCollection);
......@@ -41,17 +43,18 @@ public interface QualitySecurityCallback {
public boolean canSetFinished(QualityDataCollectionLight dataCollection);
public boolean canAddParticipants(QualityDataCollectionLight dataCollection);
public boolean canEditReminders();
public boolean canEditReminder(QualityDataCollectionLight dataCollection, QualityReminder reminder);
public boolean canDeleteDataCollections();
public boolean canDeleteDataCollection(QualityDataCollectionLight dataCollection);
public boolean canAddParticipants(QualityDataCollectionLight dataCollection);
public boolean canRevomeParticipation(QualityDataCollectionLight dataCollection);
public boolean canEditReminders();
public boolean canEditReminder(QualityDataCollectionLight dataCollection, QualityReminder reminder);
public boolean canExecute(QualityExecutorParticipation participation);
}
......@@ -63,6 +63,8 @@ class CurriculumElementQualityContextBuilder extends ForwardingQualityContextBui
private void initBuilder(EvaluationFormParticipation evaluationFormParticipation, CurriculumElement curriculumElement,
CurriculumRoles role) {
curriculumElement = curriculumService.getCurriculumElement(curriculumElement);
QualityContextRole contextRole = QualityContextRole.valueOf(role.name());
builder.withRole(contextRole);
builder.withAudiencCurriculumElement(curriculumElement);
......@@ -70,7 +72,6 @@ class CurriculumElementQualityContextBuilder extends ForwardingQualityContextBui
List<QualityContext> contextToDelete = qualityContextDao
.loadByAudienceCurriculumElement(evaluationFormParticipation, curriculumElement, contextRole);
contextToDelete.forEach(c -> builder.addToDelete(c));
builder.addCurriculumElement(curriculumElement);
Curriculum curriculum = curriculumElement.getCurriculum();
builder.addCurriculum(curriculum);
......
......@@ -108,7 +108,7 @@ public class DataCollectionListController extends FormBasicController implements
numParticipantsColumn.setAlignment(FlexiColumnModel.ALIGNMENT_RIGHT);
numParticipantsColumn.setHeaderAlignment(FlexiColumnModel.ALIGNMENT_RIGHT);
columnsModel.addFlexiColumnModel(numParticipantsColumn);
if (secCallback.canEditDataCollections()) {
if (secCallback.canEditDataCollections() || secCallback.canViewDataCollections()) {
DefaultFlexiColumnModel editColumn = new DefaultFlexiColumnModel(DataCollectionCols.edit.i18nHeaderKey(),
DataCollectionCols.edit.ordinal(), CMD_EDIT,
new BooleanCellRenderer(
......@@ -135,7 +135,7 @@ public class DataCollectionListController extends FormBasicController implements
@Override
public void initTools() {
if (secCallback.canEditDataCollections()) {
if (secCallback.canCreateDataCollections()) {
createDataCollectionLink = LinkFactory.createToolLink("data.collection.create", translate("data.collection.create"), this);
createDataCollectionLink.setIconLeftCSS("o_icon o_icon-lg o_icon_qual_dc_create");
stackPanel.addTool(createDataCollectionLink, Align.left);
......
......@@ -65,7 +65,7 @@ public class QualityMainController extends MainLayoutBasicController implements
public QualityMainController(UserRequest ureq, WindowControl wControl) {
super(ureq, wControl);
this.secCallback = new QualitySecurityCallbackImpl();
this.secCallback = new QualitySecurityCallbackImpl(ureq.getUserSession().getRoles());
mainVC = createVelocityContainer("main");
......
......@@ -23,6 +23,7 @@ import static org.olat.modules.quality.QualityDataCollectionStatus.FINISHED;
import static org.olat.modules.quality.QualityDataCollectionStatus.PREPARATION;
import static org.olat.modules.quality.QualityDataCollectionStatus.READY;
import org.olat.core.id.Roles;
import org.olat.modules.quality.QualityDataCollectionLight;
import org.olat.modules.quality.QualityDataCollectionStatus;
import org.olat.modules.quality.QualityExecutorParticipation;
......@@ -38,73 +39,84 @@ import org.olat.modules.quality.QualitySecurityCallback;
*/
public class QualitySecurityCallbackImpl implements QualitySecurityCallback {
private final Roles roles;
public QualitySecurityCallbackImpl(Roles roles) {
this.roles = roles;
}
@Override
public boolean canViewDataCollections() {
return true;
return canEditDataCollections() || roles.isPrincipal();
}
@Override
public boolean canEditDataCollections() {
return true;
return roles.isQualityManager() || roles.isAdministrator();
}
@Override
public boolean canCreateDataCollections() {
return canEditDataCollections();
}
@Override
public boolean canUpdateBaseConfiguration(QualityDataCollectionLight dataCollection) {
return PREPARATION.equals(dataCollection.getStatus());
return canEditDataCollections() && PREPARATION.equals(dataCollection.getStatus());
}
@Override
public boolean canSetPreparation(QualityDataCollectionLight dataCollection) {
return READY.equals(dataCollection.getStatus());
return canEditDataCollections() && READY.equals(dataCollection.getStatus());
}
@Override
public boolean canSetReady(QualityDataCollectionLight dataCollection) {
return PREPARATION.equals(dataCollection.getStatus());
return canEditDataCollections() && PREPARATION.equals(dataCollection.getStatus());
}
@Override
public boolean canSetRunning(QualityDataCollectionLight dataCollection) {
return isNotStarted(dataCollection);
return canEditDataCollections() && isNotRunning(dataCollection);
}
@Override
public boolean canSetFinished(QualityDataCollectionLight dataCollection) {
return isNotFinished(dataCollection);
return canEditDataCollections() && isNotFinished(dataCollection);
}
@Override
public boolean canAddParticipants(QualityDataCollectionLight dataCollection) {
return isNotFinished(dataCollection);
public boolean canDeleteDataCollections() {
return canEditDataCollections();
}
@Override
public boolean canEditReminders() {
return true;
public boolean canDeleteDataCollection(QualityDataCollectionLight dataCollection) {
return canEditDataCollections() && isNotRunning(dataCollection);
}
@Override
public boolean canEditReminder(QualityDataCollectionLight dataCollection, QualityReminder reminder) {
return canEditReminders() && isNotSent(reminder) && isNotFinished(dataCollection);
public boolean canAddParticipants(QualityDataCollectionLight dataCollection) {
return canEditDataCollections() && isNotFinished(dataCollection);
}
private boolean isNotSent(QualityReminder reminder) {
return reminder == null || !reminder.isSent();
@Override
public boolean canRevomeParticipation(QualityDataCollectionLight dataCollection) {
return canEditDataCollections() && isNotRunning(dataCollection);
}
@Override
public boolean canDeleteDataCollections() {
return true;
public boolean canEditReminders() {
return canEditDataCollections();
}
@Override
public boolean canDeleteDataCollection(QualityDataCollectionLight dataCollection) {
return isNotStarted(dataCollection);
public boolean canEditReminder(QualityDataCollectionLight dataCollection, QualityReminder reminder) {
return canEditReminders() && isNotSent(reminder) && isNotFinished(dataCollection);
}
@Override
public boolean canRevomeParticipation(QualityDataCollectionLight dataCollection) {
return isNotStarted(dataCollection);
private boolean isNotSent(QualityReminder reminder) {
return reminder == null || !reminder.isSent();
}
@Override
......@@ -114,7 +126,7 @@ public class QualitySecurityCallbackImpl implements QualitySecurityCallback {
|| QualityExecutorParticipationStatus.PARTICIPATING.equals(status);
}
private boolean isNotStarted(QualityDataCollectionLight dataCollection) {
private boolean isNotRunning(QualityDataCollectionLight dataCollection) {
QualityDataCollectionStatus status = dataCollection.getStatus();
return PREPARATION.equals(status) || READY.equals(status);
}
......@@ -122,5 +134,4 @@ public class QualitySecurityCallbackImpl implements QualitySecurityCallback {
private boolean isNotFinished(QualityDataCollectionLight dataCollection) {
return !FINISHED.equals(dataCollection.getStatus());
}
}
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