/** * Validates project ID. Project ID is valid if not null. * * @param handler validation and permission check handler * @param projectId project ID */ protected void validateProjectId(Handler handler, Long projectId) { if (projectId == null) { handler.addErrorKey(KEY_PROJECT_ID_NULL, null, ErrorCollection.Reason.VALIDATION_FAILED); } else { try { if (projectManager.getProjectObj(projectId) == null) { handler.addErrorKey(KEY_PROJECT_ID_NOT_FOUND, projectId.toString(), ErrorCollection.Reason.VALIDATION_FAILED); } } catch (DataAccessException e) { LOG.error("Error encountered while attempting to find project with the ID '" + projectId + "'.", e); handler.addErrorKey(KEY_PROJECT_ID_NOT_FOUND, projectId.toString(), ErrorCollection.Reason.SERVER_ERROR); } } }
/** * ************************************** * **** Permision Check Methods ***** * ************************************** */ // This is crap and should not take a handler thats why we have duplication below private void checkProjectAdminPermission(Handler handler, Long projectId, ApplicationUser user) { boolean hasProjectAdminPermission = permissionManager.hasPermission(Permissions.ADMINISTER, user) || permissionManager.hasPermission(ADMINISTER_PROJECTS, projectManager.getProjectObj(projectId), user); if (!hasProjectAdminPermission) { if (user != null) { handler.addErrorKey(KEY_USER_NO_PERMISSION_WITH_USER, user.getName(), ErrorCollection.Reason.FORBIDDEN); } else { handler.addErrorKey(KEY_USER_NO_PERMISSION, null, ErrorCollection.Reason.NOT_LOGGED_IN); } } }
/** * Validates newName. Name must be not null and unique. * * @param oldName old name * @param newName new name * @param projectId project ID * @param handler validation and permission check handler */ protected void validateName(Handler handler, String oldName, String newName, Long projectId) { if (StringUtils.isBlank(newName)) { // New component name cannot be null or empty string handler.addErrorKey(FIELD_NAME, KEY_NAME_NOT_SET, null, ErrorCollection.Reason.VALIDATION_FAILED); } else if (!newName.equalsIgnoreCase(oldName) && projectComponentManager.containsName(newName, projectId)) { // You must specify a UNIQUE newName for this component. New name is already being used handler.addErrorKey(FIELD_NAME, KEY_NAME_NOT_UNIQUE, newName, ErrorCollection.Reason.VALIDATION_FAILED); } }
public T run() { checkPermissions(); if (!simpleErrorCollection.hasAnyErrors()) { validateData(); if (!simpleErrorCollection.hasAnyErrors()) { executeOnSuccess(); } } return result; } }
/** * Verifies that the user with the name specified is a valid JIRA user. * * @param user user to verify * @throws IllegalArgumentException if user does not exist */ protected void verifyUserExists(Handler handler, String user) { if (userManager.getUserByKey(user) == null) { // The user does not exist handler.addErrorKey(FIELD_COMPONENT_LEAD, KEY_USER_DOES_NOT_EXIST, user, ErrorCollection.Reason.VALIDATION_FAILED); } }
private void checkCanAccessComponentPermission(Handler handler, Long projectId, ApplicationUser applicationUser) { final boolean hasBrowsePermission = permissionManager.hasPermission(BROWSE_PROJECTS, projectManager.getProjectObj(projectId), applicationUser) || permissionManager.hasPermission(ADMINISTER_PROJECTS, projectManager.getProjectObj(projectId), applicationUser) || permissionManager.hasPermission(CREATE_ISSUES, projectManager.getProjectObj(projectId), applicationUser) || permissionManager.hasPermission(EDIT_ISSUES, projectManager.getProjectObj(projectId), applicationUser) || permissionManager.hasPermission(Permissions.ADMINISTER, applicationUser); if (!hasBrowsePermission) { handler.addErrorKey(KEY_NO_SUCH_COMPONENT_WITH_ID, String.valueOf(projectId), ErrorCollection.Reason.NOT_FOUND); } }
protected void validateAssigneeType(Handler handler, Long assigneeType) { if (assigneeType != null && !ComponentAssigneeTypes.isProjectDefault(assigneeType) && !ComponentAssigneeTypes.isProjectLead(assigneeType) && !ComponentAssigneeTypes.isComponentLead(assigneeType) && !ComponentAssigneeTypes.isUnassigned(assigneeType)) { handler.addErrorKey(FIELD_ASSIGNEE_TYPE, KEY_ASSIGNEE_TYPE_INVALID, String.valueOf(assigneeType), ErrorCollection.Reason.VALIDATION_FAILED); } }
private void checkProjectAdminPermission(Handler handler, ProjectComponent component, ApplicationUser user) { if (component == null) { handler.addErrorKey(KEY_NO_SUCH_COMPONENT, null, ErrorCollection.Reason.FORBIDDEN); } else { Long projectId = component.getProjectId(); checkProjectAdminPermission(handler, projectId, user); } }