diff --git a/src/main/angular/package-lock.json b/src/main/angular/package-lock.json index 18703ab58d7ee45a16dfc50e009637bf36e7c17d..231878bd52076ca9e9f31815c4c1e0c6ee8e97f4 100644 --- a/src/main/angular/package-lock.json +++ b/src/main/angular/package-lock.json @@ -1,6 +1,6 @@ { "name": "daa-example", - "version": "0.2.0-alpha.12", + "version": "0.2.0-alpha.13", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/main/angular/package.json b/src/main/angular/package.json index ca8a3955966dd4027f32e8e6df212dbf46975925..fc96ff893c90b04d229ae7538700b5e89684afaf 100644 --- a/src/main/angular/package.json +++ b/src/main/angular/package.json @@ -1,6 +1,6 @@ { "name": "daa-example", - "version": "0.2.0-alpha.12", + "version": "0.2.0-alpha.13", "scripts": { "ng": "./node_modules/.bin/ng", "start": "./node_modules/.bin/ng serve", diff --git a/src/test/java/es/uvigo/esei/daa/filters/AuthorizationFilter.java b/src/test/java/es/uvigo/esei/daa/filters/AuthorizationFilter.java index b2144df2ce1c5c1aaebd61932c0334430991cddc..40400f7a873791dddbcb3f6e0b18dad524f1f7cf 100644 --- a/src/test/java/es/uvigo/esei/daa/filters/AuthorizationFilter.java +++ b/src/test/java/es/uvigo/esei/daa/filters/AuthorizationFilter.java @@ -2,6 +2,7 @@ package es.uvigo.esei.daa.filters; import java.io.IOException; import java.security.Principal; +import java.util.Arrays; import java.util.Base64; import java.util.List; @@ -29,6 +30,9 @@ import es.uvigo.esei.daa.entities.User; @Provider @Priority(Priorities.AUTHENTICATION) public class AuthorizationFilter implements ContainerRequestFilter { + // Add here the list of REST paths that an administrator can access. + private final static List ADMIN_PATHS = Arrays.asList("people"); + private final UsersDAO dao; public AuthorizationFilter() { @@ -54,7 +58,7 @@ public class AuthorizationFilter implements ContainerRequestFilter { if (this.dao.checkLogin(userPass[0], userPass[1])) { final User user = this.dao.get(userPass[0]); - if (isPeoplePath(requestContext) && !user.getRole().equals("ADMIN")) { + if (isAdminPath(requestContext) && !user.getRole().equals("ADMIN")) { requestContext.abortWith(createResponse()); } else { requestContext.setSecurityContext(new UserSecurityContext(user)); @@ -71,9 +75,15 @@ public class AuthorizationFilter implements ContainerRequestFilter { } } - private static boolean isPeoplePath(ContainerRequestContext context) { + private static boolean isAdminPath(ContainerRequestContext context) { final List pathSegments = context.getUriInfo().getPathSegments(); - return !pathSegments.isEmpty() && pathSegments.get(0).getPath().equals("people"); + + if (pathSegments.isEmpty()) { + return false; + } else { + final String path = pathSegments.get(0).getPath(); + return ADMIN_PATHS.contains(path); + } } private static Response createResponse() {