X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fappauth%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fappauth%2Fauthorization%2FAuthorization.java;fp=opendaylight%2Fappauth%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fappauth%2Fauthorization%2FAuthorization.java;h=1992f5971120e37a83d3b6698732fecee2a64ee0;hb=8c8e6489429fadeef138a33cbd0880f60379c438;hp=b872f49130205d239f9ee9bfac647b09eb7a241e;hpb=16f4c17cc2312000039a05e670f487c8e3268189;p=controller.git diff --git a/opendaylight/appauth/src/main/java/org/opendaylight/controller/appauth/authorization/Authorization.java b/opendaylight/appauth/src/main/java/org/opendaylight/controller/appauth/authorization/Authorization.java index b872f49130..1992f59711 100644 --- a/opendaylight/appauth/src/main/java/org/opendaylight/controller/appauth/authorization/Authorization.java +++ b/opendaylight/appauth/src/main/java/org/opendaylight/controller/appauth/authorization/Authorization.java @@ -144,6 +144,7 @@ private static final Logger logger = LoggerFactory.getLogger(Authorization.class try { toBeAdded.add((T) obj); } catch (ClassCastException e) { + logger.debug("Attempt to add a resource with invalid type"); allAdded = false; } } @@ -152,23 +153,48 @@ private static final Logger logger = LoggerFactory.getLogger(Authorization.class new Status(StatusCode.SUCCESS, "One or more resources couldn't be added")); } - public Status addResourceToGroup(String groupName, T resource) { + @SuppressWarnings("unchecked") + @Override + public Status addResourceToGroup(String groupName, Object resource) { if (groupName == null || groupName.trim().isEmpty()) { return new Status(StatusCode.BADREQUEST, "Invalid group name"); } + if (resource == null) { + return new Status(StatusCode.BADREQUEST, "Null resource"); + } + + T castedResource = null; + try { + castedResource = (T) resource; + } catch (ClassCastException e) { + logger.debug("Attempt to add a resource with invalid type"); + return new Status(StatusCode.BADREQUEST, "Incompatible resource"); + } + Set group = resourceGroups.get(groupName); - if (group != null && resource != null) { - group.add(resource); - // Update cluster - resourceGroups.put(groupName, group); - return new Status(StatusCode.SUCCESS, "Resource added successfully"); + if (group == null) { + return new Status(StatusCode.NOTFOUND, "Group not found"); } - return new Status(StatusCode.NOTFOUND, "Group not found or incompatible resource"); + return addResourceToGroupInternal(groupName, castedResource); + } + + /* + * Method child classes can overload if they need application specific + * checks on the resource + */ + protected Status addResourceToGroupInternal(String groupName, T resource) { + Set group = resourceGroups.get(groupName); + // Update group and cluster + group.add(resource); + resourceGroups.put(groupName, group); + + return new Status(StatusCode.SUCCESS, "Resource added successfully"); + } - public Status removeRoleResourceGroupMapping(String groupName) { + private Status removeRoleResourceGroupMapping(String groupName) { List affectedRoles = new ArrayList(); Status result; for (Entry> pairs : groupsAuthorizations.entrySet()) { @@ -215,7 +241,8 @@ private static final Logger logger = LoggerFactory.getLogger(Authorization.class } - public Status removeResourceFromGroup(String groupName, T resource) { + @Override + public Status removeResourceFromGroup(String groupName, Object resource) { if (groupName == null || groupName.trim().isEmpty()) { return new Status(StatusCode.BADREQUEST, "Invalid group name"); } @@ -535,6 +562,24 @@ private static final Logger logger = LoggerFactory.getLogger(Authorization.class return roles.containsKey(roleName); } + @Override + public boolean isApplicationUser(String userName) { + IUserManager userManager = (IUserManager) ServiceHelper + .getGlobalInstance(IUserManager.class, this); + if (userManager == null) { + return false; + } + List roles = userManager.getUserRoles(userName); + if (roles != null && !roles.isEmpty()) { + for (String role : roles) { + if (isApplicationRole(role)) { + return true; + } + } + } + return false; + } + @Override public AppRoleLevel getApplicationRoleLevel(String roleName) { if (roleName == null || roleName.trim().isEmpty()) {