use of org.hisp.dhis.user.UserGroup in project dhis2-core by dhis2.
the class DefaultSharingService method saveSharing.
@Override
public <T extends IdentifiableObject> ObjectReport saveSharing(@NotNull Class<T> entityClass, @NotNull T entity, @NotNull Sharing sharing) {
ObjectReport objectReport = new ObjectReport(Sharing.class, 0);
BaseIdentifiableObject object = (BaseIdentifiableObject) entity;
if ((object instanceof SystemDefaultMetadataObject) && ((SystemDefaultMetadataObject) object).isDefault()) {
objectReport.addErrorReport(new ErrorReport(Sharing.class, ErrorCode.E3013, entityClass.getSimpleName()).setErrorKlass(entityClass));
}
User user = currentUserService.getCurrentUser();
if (!aclService.canManage(user, object)) {
objectReport.addErrorReport(new ErrorReport(Sharing.class, ErrorCode.E3014).setErrorKlass(entityClass));
}
if (!AccessStringHelper.isValid(sharing.getPublicAccess())) {
objectReport.addErrorReport(new ErrorReport(Sharing.class, ErrorCode.E3015, sharing.getPublicAccess()).setErrorKlass(entityClass));
}
if (aclService.canMakeClassExternal(user, entityClass)) {
object.getSharing().setExternal(sharing.isExternal());
}
// ---------------------------------------------------------------------
// Ignore publicAccess if user is not allowed to make objects public
// ---------------------------------------------------------------------
Schema schema = schemaService.getDynamicSchema(entityClass);
if (aclService.canMakePublic(user, object)) {
object.setPublicAccess(sharing.getPublicAccess());
}
if (!schema.isDataShareable()) {
if (AccessStringHelper.hasDataSharing(object.getSharing().getPublicAccess())) {
objectReport.addErrorReport(new ErrorReport(Sharing.class, ErrorCode.E3016).setErrorKlass(entityClass));
}
}
object.getSharing().setOwner(sharing.getOwner());
// --------------------------------------
// Handle UserGroupAccesses
// --------------------------------------
object.getSharing().getUserGroups().clear();
if (sharing.hasUserGroupAccesses()) {
for (UserGroupAccess sharingUserGroupAccess : sharing.getUserGroups().values()) {
if (!AccessStringHelper.isValid(sharingUserGroupAccess.getAccess())) {
objectReport.addErrorReport(new ErrorReport(Sharing.class, ErrorCode.E3017, sharingUserGroupAccess.getAccess()).setErrorKlass(entityClass));
}
if (!schema.isDataShareable()) {
if (AccessStringHelper.hasDataSharing(sharingUserGroupAccess.getAccess())) {
objectReport.addErrorReport(new ErrorReport(Sharing.class, ErrorCode.E3016).setErrorKlass(entityClass));
}
}
UserGroup userGroup = userGroupService.getUserGroup(sharingUserGroupAccess.getId());
if (userGroup != null) {
object.getSharing().addUserGroupAccess(sharingUserGroupAccess);
}
}
}
// --------------------------------------
// Handle UserAccesses
// --------------------------------------
object.getSharing().getUsers().clear();
if (sharing.hasUserAccesses()) {
for (UserAccess sharingUserAccess : sharing.getUsers().values()) {
if (!AccessStringHelper.isValid(sharingUserAccess.getAccess())) {
objectReport.addErrorReport(new ErrorReport(Sharing.class, ErrorCode.E3018, sharingUserAccess.getAccess()).setErrorKlass(entityClass));
}
if (!schema.isDataShareable()) {
if (AccessStringHelper.hasDataSharing(sharingUserAccess.getAccess())) {
objectReport.addErrorReport(new ErrorReport(Sharing.class, ErrorCode.E3016).setErrorKlass(entityClass));
}
}
User sharingUser = userService.getUser(sharingUserAccess.getId());
if (sharingUser != null) {
object.getSharing().addUserAccess(sharingUserAccess);
}
}
}
manager.updateNoAcl(object);
if (Program.class.isInstance(object)) {
syncSharingForEventProgram((Program) object);
}
log.info(sharingToString(object));
return objectReport;
}
use of org.hisp.dhis.user.UserGroup in project dhis2-core by dhis2.
the class UserObjectBundleHook method preDelete.
@Override
public void preDelete(User user, ObjectBundle bundle) {
Set<UserGroup> groups = user.getGroups();
userGroupService.removeUserFromGroups(user, getUids(groups));
Set<UserAuthorityGroup> userRoles = user.getUserAuthorityGroups();
for (UserAuthorityGroup userRole : userRoles) {
userRole.removeUser(user);
sessionFactory.getCurrentSession().update(userRole);
}
}
use of org.hisp.dhis.user.UserGroup in project dhis2-core by dhis2.
the class UserGroupAccess method toDtoObject.
public org.hisp.dhis.user.UserGroupAccess toDtoObject() {
org.hisp.dhis.user.UserGroupAccess userGroupAccess = new org.hisp.dhis.user.UserGroupAccess();
userGroupAccess.setUid(getId());
userGroupAccess.setAccess(getAccess());
UserGroup userGroup = new UserGroup();
userGroup.setUid(getId());
userGroupAccess.setUserGroup(userGroup);
userGroupAccess.setUid(getId());
return userGroupAccess;
}
use of org.hisp.dhis.user.UserGroup in project dhis2-core by dhis2.
the class DefaultDataSetNotificationService method resolveInternalRecipients.
private Set<User> resolveInternalRecipients(DataSetNotificationTemplate template, CompleteDataSetRegistration registration) {
UserGroup userGroup = template.getRecipientUserGroup();
Set<User> users = Sets.newHashSet();
if (userGroup == null || registration == null) {
return users;
}
users = userGroup.getMembers().stream().filter(user -> organisationUnitService.isInUserHierarchy(registration.getSource().getUid(), user.getOrganisationUnits())).collect(Collectors.toSet());
return users;
}
use of org.hisp.dhis.user.UserGroup in project dhis2-core by dhis2.
the class SharingTest method setDtoUserGroupAccessClearsExisting.
@Test
void setDtoUserGroupAccessClearsExisting() {
Sharing actual = new Sharing();
UserGroup group1 = new UserGroup();
group1.setUid("id");
actual.setDtoUserGroupAccesses(singleton(new org.hisp.dhis.user.UserGroupAccess(group1, "rw------")));
UserGroup group2 = new UserGroup();
group2.setUid("uid");
actual.setDtoUserGroupAccesses(singleton(new org.hisp.dhis.user.UserGroupAccess(group2, "r-------")));
assertEquals(1, actual.getUserGroups().size());
UserGroupAccess userAccess = actual.getUserGroups().values().iterator().next();
assertEquals("r-------", userAccess.getAccess());
assertEquals("uid", userAccess.getId());
}
Aggregations