Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,22 @@ public Map<String, String> getQualifiers(int userGroupId, int userId) {
UserGroup associatedGroup = loadById(userInGroup.getGroupId());
return associatedGroup.getQualifiersByName();
}

@Override
public Map<String, String> getAllApplicableQualifiers(int surveyUserGroupId, int mostSpecificUserGroupId) {
Map<String, String> qualifiers = new HashMap<String, String>();
Integer currentGroupId = mostSpecificUserGroupId;
while (currentGroupId != null) {
UserGroup group = loadById(currentGroupId);
Map<String, String> groupQualifiers = group.getQualifiersByName();
qualifiers.putAll(groupQualifiers);
if (currentGroupId == surveyUserGroupId) {
break;
}
currentGroupId = group.getParentId();
}
return qualifiers;
}

private List<UserGroup> fillLazyLoadedFields(List<UserGroup> groups) {
for (UserGroup group : groups) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ public interface UserGroupManager extends ItemManager<UserGroup, Integer> {

Map<String, String> getQualifiers(int userGroupId, int userId);

Map<String, String> getAllApplicableQualifiers(int surveyUserGroupId, int mostSpecificUserGroupId);

void associateResource(int userGroupId, String resourceType, String resourceId);

void disassociateResource(int userGroupId, String resourceType, String resourceId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,12 @@ public Map<String, String> getQualifiers(int groupId, int userId) {
return null;
}

@Override
public Map<String, String> getAllApplicableQualifiers(int surveyUserGroupId, int mostSpecificUserGroupId) {
// TODO Auto-generated method stub
return null;
}

@Override
public UserGroup findUserGroupByResource(String resourceType, String resourceId) {
@SuppressWarnings("unchecked")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,10 @@ public void createSessionState(HttpSession session) {
String sessionId = session.getId();
SessionState sessionState = new SessionState(sessionId);
if (CollectConfiguration.isDevelopmentMode()) {
sessionState.setUser(userManager.loadAdminUser());
// sessionState.setUser(userManager.loadAdminUser());
// sessionState.setUser(userManager.loadByUserName("view"));
// sessionState.setUser(userManager.loadByUserName("entry"));
// sessionState.setUser(userManager.loadByUserName("editor"));
sessionState.setUser(userManager.loadByUserName("cleanser"));
}
session.setAttribute(SessionState.SESSION_ATTRIBUTE_NAME, sessionState);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1073,7 +1073,8 @@ private static RecordFilter createRecordFilter(CollectSurvey survey, User user,
rootEntityId = survey.getSchema().getFirstRootEntityDefinition().getId();
}

UserInGroup userInGroup = userGroupManager.findUserInGroupOrDescendants(survey.getUserGroupId(), user.getId());
Integer surveyUserGroupId = survey.getUserGroupId();
UserInGroup userInGroup = userGroupManager.findUserInGroupOrDescendants(surveyUserGroupId, user.getId());

RecordFilter recordFilter = new RecordFilter(survey);
recordFilter.setRootEntityId(rootEntityId);
Expand All @@ -1083,7 +1084,8 @@ private static RecordFilter createRecordFilter(CollectSurvey survey, User user,
recordFilter.setOwnerId(user.getId());
}
if (user.getRole() != UserRole.ADMIN) {
Map<String, String> qualifiers = userGroupManager.getQualifiers(survey.getUserGroupId(), user.getId());
Integer mostSpecificGroupId = userInGroup.getGroupId();
Map<String, String> qualifiers = userGroupManager.getAllApplicableQualifiers(surveyUserGroupId, mostSpecificGroupId);
if (!qualifiers.isEmpty()) {
recordFilter.setQualifiersByName(qualifiers);
}
Expand Down
Loading