java/code/src/com/redhat/rhn/frontend/xmlrpc/PermissionCheckFailureException.java | 10 ++++++++++ java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java | 2 +- java/code/src/com/redhat/rhn/manager/rhnpackage/PackageManager.java | 7 ++++--- 3 files changed, 15 insertions(+), 4 deletions(-)
New commits: commit 422e43146ee29c4afaeb20819fee2ce1ce124d71 Author: Tomas Lestach tlestach@redhat.com Date: Fri Mar 11 10:38:56 2011 +0100
644880 - fix permission check to packages
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/PermissionCheckFailureException.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/PermissionCheckFailureException.java index 1bed558..017b901 100644 --- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/PermissionCheckFailureException.java +++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/PermissionCheckFailureException.java @@ -94,6 +94,16 @@ public class PermissionCheckFailureException extends FaultException { "perform this action for system id[" + server.getId() + "]"); // begin member variable initialization } + + /** + * Contructor + * @param message use it as exception message + */ + public PermissionCheckFailureException(String message) { + super(-23, "permissionCheckFailure" , message); + } + + ///////////////////////// // Getters/Setters ///////////////////////// diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java index 7f0a7d1..6863d6e 100644 --- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java +++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java @@ -1125,7 +1125,7 @@ public class ChannelSoftwareHandler extends BaseHandler { ChannelEditor.getInstance().addPackages(loggedInUser, channel, longPackageIds); } catch (PermissionException e) { - throw new PermissionCheckFailureException(); + throw new PermissionCheckFailureException(e.getMessage()); } catch (LookupException le) { //This shouldn't happen, but if it does, it is because one of the packages diff --git a/java/code/src/com/redhat/rhn/manager/rhnpackage/PackageManager.java b/java/code/src/com/redhat/rhn/manager/rhnpackage/PackageManager.java index 5bc0e60..b217d17 100644 --- a/java/code/src/com/redhat/rhn/manager/rhnpackage/PackageManager.java +++ b/java/code/src/com/redhat/rhn/manager/rhnpackage/PackageManager.java @@ -1376,8 +1376,9 @@ public class PackageManager extends BaseManager { */ public static void verifyPackagesChannelArchCompatAndOrgAccess( User user, Channel channel, List<Long> packageIds, boolean checkArchCompat) { + Long orgId = user.getOrg().getId(); DataResult dr = PackageFactory.getPackagesChannelArchCompatAndOrgAccess( - user.getOrg().getId(), channel.getId(), packageIds); + orgId, channel.getId(), packageIds); List<Long> archNonCompat = new ArrayList<Long>(); List<Long> orgNoAccess = new ArrayList<Long>(); for (Iterator i = dr.iterator(); i.hasNext();) { @@ -1385,10 +1386,10 @@ public class PackageManager extends BaseManager { if (m.get("package_arch_id") == null) { archNonCompat.add((Long)m.get("id")); } - if (m.get("org_package") == null && + if (m.get("org_package") != orgId && m.get("org_access") == null && m.get("shared_access") == null) { - archNonCompat.add((Long)m.get("id")); + orgNoAccess.add((Long)m.get("id")); } } if (!orgNoAccess.isEmpty()) {
spacewalk-commits@lists.fedorahosted.org