diff --git a/lvl-project/lvl-bundle/src/main/ui/js/apps/collection/submit/collection_submit_view.js b/lvl-project/lvl-bundle/src/main/ui/js/apps/collection/submit/collection_submit_view.js index b43285a9..4f92b0a5 100644 --- a/lvl-project/lvl-bundle/src/main/ui/js/apps/collection/submit/collection_submit_view.js +++ b/lvl-project/lvl-bundle/src/main/ui/js/apps/collection/submit/collection_submit_view.js @@ -161,8 +161,8 @@ define([ 'app', 'tpl!apps/collection/submit/tpls/collection_submit', 'chance', ' message : 'The origin is required to be a minimum of 60 characters in length' }, regexp: { - regexp: /^[ACTG]+$/i, - message: 'The origin can consist of A, C, T and G only' + regexp: /^[ACTGN\-]+$/i, + message: 'The origin can consist of A, C, T, G, N and - only' } } }, diff --git a/lvl-project/lvl-bundle/src/main/ui/js/apps/header/show/tpls/header_workspace.html b/lvl-project/lvl-bundle/src/main/ui/js/apps/header/show/tpls/header_workspace.html index bd31c810..89cd8908 100644 --- a/lvl-project/lvl-bundle/src/main/ui/js/apps/header/show/tpls/header_workspace.html +++ b/lvl-project/lvl-bundle/src/main/ui/js/apps/header/show/tpls/header_workspace.html @@ -62,6 +62,11 @@ + diff --git a/lvl-project/lvl-storage/src/main/java/eu/eubrazilcc/lvl/storage/security/BaseSecurityManager.java b/lvl-project/lvl-storage/src/main/java/eu/eubrazilcc/lvl/storage/security/BaseSecurityManager.java index 577ad63c..5de6ab17 100644 --- a/lvl-project/lvl-storage/src/main/java/eu/eubrazilcc/lvl/storage/security/BaseSecurityManager.java +++ b/lvl-project/lvl-storage/src/main/java/eu/eubrazilcc/lvl/storage/security/BaseSecurityManager.java @@ -25,7 +25,9 @@ import static eu.eubrazilcc.lvl.storage.oauth2.dao.ResourceOwnerDAO.RESOURCE_OWNER_DAO; import static eu.eubrazilcc.lvl.storage.security.el.PermissionElBuilder.EL_PARAMETER_PATTERN; import static eu.eubrazilcc.lvl.storage.security.el.PermissionElBuilder.buildPermission; +import static org.slf4j.LoggerFactory.getLogger; +import java.util.Arrays; import java.util.Collection; import javax.annotation.Nullable; @@ -34,6 +36,7 @@ import org.apache.shiro.subject.Subject; import eu.eubrazilcc.lvl.storage.oauth2.ResourceOwner; +import eu.eubrazilcc.lvl.storage.oauth2.security.OAuth2SecurityManager; import eu.eubrazilcc.lvl.storage.security.shiro.AccessTokenToken; /** diff --git a/lvl-project/lvl-storage/src/test/java/eu/eubrazilcc/lvl/storage/SecurityManagerTest.java b/lvl-project/lvl-storage/src/test/java/eu/eubrazilcc/lvl/storage/SecurityManagerTest.java index 01cc70d8..5b2d91f8 100644 --- a/lvl-project/lvl-storage/src/test/java/eu/eubrazilcc/lvl/storage/SecurityManagerTest.java +++ b/lvl-project/lvl-storage/src/test/java/eu/eubrazilcc/lvl/storage/SecurityManagerTest.java @@ -194,6 +194,7 @@ public void test01AuthX() { assertThat("expected role is present", currentUser.hasRole("user"), equalTo(true)); assertThat("unexpected role is not present", currentUser.hasRole("admin"), equalTo(false)); assertThat("expected permission is present", currentUser.isPermitted("sequences:leishmania:public:item1:view"), equalTo(true)); + assertThat("expected permission is present", currentUser.isPermitted("samples:leishmania:public:item1:view"), equalTo(true)); assertThat("expected permissions are present", currentUser.isPermittedAll("sequences:sandflies:meremortal@lvl:*:create", "sequences:sandflies:meremortal@lvl:item34:edit"), equalTo(true)); assertThat("expected permissions (using EL expressions) are present", currentUser .isPermittedAll("sequences:sandflies:" + OWNERID_EL_TEMPLATE + ":*:create", "sequences:sandflies:" + OWNERID_EL_TEMPLATE + ":item34:edit"), equalTo(true)); @@ -221,6 +222,7 @@ public void test01AuthX() { assertThat("expected role is present", currentUser.hasRole("user"), equalTo(true)); assertThat("unexpected role is not present", currentUser.hasRole("admin"), equalTo(false)); assertThat("expected permission is present", currentUser.isPermitted("sequences:leishmania:public:item1:view"), equalTo(true)); + assertThat("expected permission is present", currentUser.isPermitted("samples:leishmania:public:item1:view"), equalTo(true)); assertThat("expected permissions are present", currentUser.isPermittedAll("sequences:sandflies:meremortal@lvl:*:create", "sequences:sandflies:meremortal@lvl:item34:edit"), equalTo(true)); assertThat("unexpected permission is not present", currentUser.isPermitted("sequences:sandflies:meremortal2@lvl:item1:view"), equalTo(false)); assertThat("unexpected permissions are not present", currentUser.isPermittedAll("lightsaber:weild"), equalTo(false)); @@ -307,6 +309,11 @@ public void test02Permissions() { currentUser.isPermitted("sequences:*:public:*:view"), equalTo(true)); assertThat("User own sequences are fully accessible from user profile", currentUser.isPermittedAll("sequences:*:" + meremortalOwnerid + ":*:view,edit,create"), equalTo(true)); + + assertThat("Public samples are accessible for reading from user profile", + currentUser.isPermitted("samples:*:public:*:view"), equalTo(true)); + assertThat("Public sandfly samples are accessible for reading from user profile", + currentUser.isPermitted("samples:sandflies:public:*:view"), equalTo(true)); assertThat("Publications are not accessible for reading from user profile", currentUser.isPermitted("citations:*:*:*:view"), equalTo(false));