Skip to content

Commit

Permalink
[342] code review changes - to be merged
Browse files Browse the repository at this point in the history
  • Loading branch information
JustinKyleJames committed Feb 10, 2025
1 parent 2933f57 commit fad284a
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import com.emc.metalnx.core.domain.exceptions.DataGridException;
import com.emc.metalnx.services.interfaces.CollectionService;
import com.emc.metalnx.services.interfaces.GroupService;
import com.emc.metalnx.services.interfaces.IRODSServices;
import com.emc.metalnx.services.interfaces.PermissionsService;
import com.emc.metalnx.services.interfaces.UserService;

Expand All @@ -55,6 +56,9 @@ public class PermissionsController {

@Autowired
private CollectionService cs;

@Autowired
private IRODSServices irodsServices;

private DataGridUser loggedUser;

Expand All @@ -66,6 +70,12 @@ public class PermissionsController {
private static final String[] PERMISSIONS_WITHOUT_NONE = {
"OWN", "DELETE_OBJECT", "MODIFY_OBJECT", "CREATE_OBJECT", "DELETE_METADATA", "MODIFY_METADATA", "CREATE_METADATA", "READ_OBJECT", "READ_METADATA" };

// for iRODS 4.2.x and before
private static final String[] LEGACY_PERMISSIONS = {
"OWN", "WRITE", "READ", "NONE" };
private static final String[] LEGACY_PERMISSIONS_WITHOUT_NONE = {
"OWN", "WRITE", "READ" };

private static final String REQUEST_OK = "OK";
private static final String REQUEST_ERROR = "ERROR";
private static final Logger logger = LoggerFactory.getLogger(PermissionsController.class);
Expand Down Expand Up @@ -112,6 +122,24 @@ public String getPermissionDetails(final Model model, @RequestParam("path") fina
throws DataGridException {

logger.info("Getting permission info for {}", path);

String version = irodsServices.findIRodsVersion();

int irods_major_version = 4;
int irods_minor_version = 3;
String[] version_parts = version.split("\\.");

if (version_parts.length >= 2) {
try {
irods_major_version = Integer.parseInt(version_parts[0]);
irods_minor_version = Integer.parseInt(version_parts[1]);
} catch (NumberFormatException e) {
// just leave the default
}
}

boolean irods_43_or_greater = irods_major_version > 4 ||
(irods_major_version == 4 && irods_minor_version >= 3);

DataGridCollectionAndDataObject obj = null;
List<DataGridFilePermission> permissions;
Expand All @@ -137,11 +165,39 @@ public String getPermissionDetails(final Model model, @RequestParam("path") fina
throw new DataGridException("error getting permissions", e);
}

// For 4.2.x we must convert the values we get back from Jargon
// MODIFY_OBJECT -> WRITE
// READ_OBJECT -> READ
if (!irods_43_or_greater) {
for (DataGridUserPermission userPermission : userPermissions) {
if (userPermission.getPermission().equals("MODIFY_OBJECT")) {
userPermission.setPermission("WRITE");
} else if (userPermission.getPermission().equals("READ_OBJECT")) {
userPermission.setPermission("READ");
}
}

for (DataGridGroupPermission groupPermission : groupPermissions) {
if (groupPermission.getPermission().equals("MODIFY_OBJECT")) {
groupPermission.setPermission("WRITE");
} else if (groupPermission.getPermission().equals("READ_OBJECT")) {
groupPermission.setPermission("READ");
}
}
}

model.addAttribute("groupPermissions", groupPermissions);
model.addAttribute("userPermissions", userPermissions);
model.addAttribute("userCanModify", userCanModify);
model.addAttribute("permissions", PERMISSIONS);
model.addAttribute("permissionsWithoutNone", PERMISSIONS_WITHOUT_NONE);

// The permission list differs between 4.2.x and 4.3.x
if (irods_43_or_greater) {
model.addAttribute("permissions", PERMISSIONS);
model.addAttribute("permissionsWithoutNone", PERMISSIONS_WITHOUT_NONE);
} else {
model.addAttribute("permissions", LEGACY_PERMISSIONS);
model.addAttribute("permissionsWithoutNone", LEGACY_PERMISSIONS_WITHOUT_NONE);
}
model.addAttribute("collectionAndDataObject", obj);
model.addAttribute("isCollection", isCollection);
model.addAttribute("permissionOnCurrentPath", cs.getPermissionsForPath(path));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,11 +97,6 @@ <h4 class="property-title pull-left"><i class="fa fa-lock"></i><span th:text="#{
</div>
</th:block>
</td>
<td th:unless="${userCanModify}">
<span aria-hidden="true"
th:class="${#sets.contains(usersWithBookmarks, userPermission.getUserName()) ? 'glyphicon glyphicon-ok' : 'glyphicon glyphicon-remove'}" >
</span>
</td>
</tr>
<tr th:each="groupPermission : ${groupPermissions}">
<td th:text="${groupPermission.getGroupName()}" th:id="${groupPermission.getGroupName()}"></td>
Expand Down

0 comments on commit fad284a

Please sign in to comment.