From: Sanjay Dalal Date: Tue, 8 Jun 2010 00:23:27 +0000 (+0000) Subject: CSPACE-595 first pass at the side-by-side tenant test, although not used concurrently yet X-Git-Url: https://git.aero2k.de/?a=commitdiff_plain;h=d3e026818bd2cd1b3d5c6ac6ec098e9804df1ddc;p=tmp%2Fjakarta-migration.git CSPACE-595 first pass at the side-by-side tenant test, although not used concurrently yet CSPACE-1035 nuxeo domain (for each tenant) is created at the startup time if it does not already exist - added pahma-domain (hearstmuseum.berkeley.edu) to the tenant bindings in addition to the default-domain (movingimages.us) that is currently used. both bindings are similar in this first pass, i.e. both tenants use the same set of services with same service object bindings as well. - each tenant binding now specifies repository domain(s) used - each repository domain embodies information about the repository client needed - tenantrepository uses repository javaclient instead of using nuxeo connector directly - each service binding now specifies the repository domain used - account factory on the client side now takes tenant id from new property cspace.tenant that is added to collection-space-client.properties - removed deadwood from test-xxx.sql scripts - role and permissions doc handlers now utilize tenant id if provided by the consumer at the time of creation, if not, they continue to use logged in user's tenant id - !!ATTENTION!! -ant create_db from the trunk (to verify nuxeo domain is created) -ant import from the trunk (no need to checkin import-*.xml files) -ant undeploy deploy from the trunk M trunk/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/storage/PermissionDocumentHandler.java M trunk/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/storage/RoleDocumentHandler.java M trunk/services/authorization-mgt/import/src/main/java/org/collectionspace/services/authorization/importer/AuthorizationSeed.java M trunk/services/authorization-mgt/import/src/main/resources/import-data/import-permissions.xml M trunk/services/authorization-mgt/import/src/main/resources/import-data/import-permissions-roles.xml M trunk/services/authorization-mgt/import/src/main/resources/import-data/import-roles.xml M trunk/services/authorization-mgt/import/src/main/resources/log4j.properties M trunk/services/authorization-mgt/client/src/test/java/org/collectionspace/services/authorization/client/test/RoleServiceTest.java M trunk/services/authorization-mgt/client/src/test/java/org/collectionspace/services/authorization/client/test/PermissionServiceTest.java M trunk/services/authorization/pstore/src/main/resources/db/mysql/test_authorization.sql M trunk/services/authentication/pstore/src/main/resources/db/mysql/test_authentication.sql M trunk/services/common/src/main/java/org/collectionspace/services/common/repository/RepositoryClient.java M trunk/services/common/src/main/java/org/collectionspace/services/common/context/AbstractServiceContextImpl.java M trunk/services/common/src/main/java/org/collectionspace/services/common/ServiceMain.java M trunk/services/common/src/main/java/org/collectionspace/services/common/config/TenantBindingConfigReaderImpl.java M trunk/services/common/src/main/java/org/collectionspace/services/common/document/JaxbUtils.java M trunk/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RepositoryJavaClientImpl.java M trunk/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/TenantRepository.java M trunk/services/common/src/main/config/services/service-config.xml M trunk/services/common/src/main/config/services/tenant-bindings.xml M trunk/services/common/src/main/resources/tenant.xsd M trunk/services/common/src/main/resources/service.xsd M trunk/services/account/pstore/src/main/resources/db/mysql/test_account.sql M trunk/services/account/client/src/test/java/org/collectionspace/services/account/client/test/AccountRoleServiceTest.java M trunk/services/account/client/src/test/java/org/collectionspace/services/account/client/test/AccountServiceTest.java M trunk/services/account/client/src/main/java/org/collectionspace/services/client/AccountFactory.java M trunk/services/account/client/src/main/java/org/collectionspace/services/client/AccountClient.java M trunk/services/security/client/src/test/java/org/collectionspace/services/security/client/test/AuthenticationServiceTest.java M trunk/services/security/client/src/test/java/org/collectionspace/services/security/client/test/AuthorizationServiceTest.java M trunk/services/client/src/main/java/org/collectionspace/services/client/AbstractServiceClientImpl.java M trunk/services/client/src/main/java/org/collectionspace/services/client/CollectionSpaceClient.java M trunk/services/client/src/main/resources/collectionspace-client.properties D trunk/src/main/resources/db/mysql/service-dump.sql --- diff --git a/services/account/client/src/main/java/org/collectionspace/services/client/AccountClient.java b/services/account/client/src/main/java/org/collectionspace/services/client/AccountClient.java index ade53c128..efad64555 100644 --- a/services/account/client/src/main/java/org/collectionspace/services/client/AccountClient.java +++ b/services/account/client/src/main/java/org/collectionspace/services/client/AccountClient.java @@ -69,9 +69,9 @@ public class AccountClient extends AbstractServiceClientImpl { @Override public CollectionSpaceProxy getProxy() { - return this.accountProxy; + return this.accountProxy; } - + /** * allow to reset proxy as per security needs */ @@ -135,7 +135,12 @@ public class AccountClient extends AbstractServiceClientImpl { * @see org.collectionspace.hello.client.AccountProxy#deleteAccount(java.lang.Long) */ @Override - public ClientResponse delete(String csid) { + public ClientResponse delete(String csid) { return accountProxy.delete(csid); } + + + public String getTenantId() { + return getProperty(AccountClient.TENANT_PROPERTY); + } } diff --git a/services/account/client/src/main/java/org/collectionspace/services/client/AccountFactory.java b/services/account/client/src/main/java/org/collectionspace/services/client/AccountFactory.java index 9b251c4ff..e464c8ff4 100644 --- a/services/account/client/src/main/java/org/collectionspace/services/client/AccountFactory.java +++ b/services/account/client/src/main/java/org/collectionspace/services/client/AccountFactory.java @@ -45,16 +45,17 @@ public class AccountFactory { * @param userName * @param passwd * @param email + * @param tenantId add non-null tenant id else let service take tenant id of + * the authenticated user * @param useScreenName - * @param addTenant * @param invalidTenant * @param useUser * @param usePassword * @return */ public static AccountsCommon createAccountInstance(String screenName, - String userName, String passwd, String email, - boolean useScreenName, boolean addTenant, boolean invalidTenant, + String userName, String passwd, String email, String tenantId, + boolean useScreenName, boolean invalidTenant, boolean useUser, boolean usePassword) { AccountsCommon account = new AccountsCommon(); @@ -86,11 +87,10 @@ public class AccountFactory { if (!invalidTenant) { //tenant is not required to be added during create, service layer //picks up tenant from security context if needed - if (addTenant) { - at.setTenantId("1"); + if (tenantId != null) { + at.setTenantId(tenantId); atList.add(at); account.setTenants(atList); - addTenant = !addTenant; } } else { //use invalid tenant id...called from validation test diff --git a/services/account/client/src/test/java/org/collectionspace/services/account/client/test/AccountRoleServiceTest.java b/services/account/client/src/test/java/org/collectionspace/services/account/client/test/AccountRoleServiceTest.java index dfb538e0f..fb5ec8114 100644 --- a/services/account/client/src/test/java/org/collectionspace/services/account/client/test/AccountRoleServiceTest.java +++ b/services/account/client/src/test/java/org/collectionspace/services/account/client/test/AccountRoleServiceTest.java @@ -580,8 +580,8 @@ public class AccountRoleServiceTest extends AbstractServiceTestImpl { AccountClient accClient = new AccountClient(); AccountsCommon account = AccountFactory.createAccountInstance( - userName, userName, userName, email, - true, true, false, true, true); + userName, userName, userName, email, accClient.getTenantId(), + true, false, true, true); ClientResponse res = accClient.create(account); int statusCode = res.getStatus(); if (logger.isDebugEnabled()) { diff --git a/services/account/client/src/test/java/org/collectionspace/services/account/client/test/AccountServiceTest.java b/services/account/client/src/test/java/org/collectionspace/services/account/client/test/AccountServiceTest.java index 94ed4c9a6..f49a4db3e 100644 --- a/services/account/client/src/test/java/org/collectionspace/services/account/client/test/AccountServiceTest.java +++ b/services/account/client/src/test/java/org/collectionspace/services/account/client/test/AccountServiceTest.java @@ -56,11 +56,9 @@ public class AccountServiceTest extends AbstractServiceTestImpl { /** The Constant logger. */ private final String CLASS_NAME = AccountServiceTest.class.getName(); private final Logger logger = LoggerFactory.getLogger(CLASS_NAME); - // Instance variables specific to this test. /** The known resource id. */ private String knownResourceId = null; - /** The add tenant. */ static boolean addTenant = true; @@ -80,28 +78,28 @@ public class AccountServiceTest extends AbstractServiceTestImpl { */ @Override protected CollectionSpaceClient getClientInstance() { - return new AccountClient(); + return new AccountClient(); } - + /* (non-Javadoc) * @see org.collectionspace.services.client.test.BaseServiceTest#getAbstractCommonList(org.jboss.resteasy.client.ClientResponse) */ @Override - protected AbstractCommonList getAbstractCommonList( - ClientResponse response) { - //FIXME: http://issues.collectionspace.org/browse/CSPACE-1697 - throw new UnsupportedOperationException(); + protected AbstractCommonList getAbstractCommonList( + ClientResponse response) { + //FIXME: http://issues.collectionspace.org/browse/CSPACE-1697 + throw new UnsupportedOperationException(); } - - /* (non-Javadoc) - * @see org.collectionspace.services.client.test.AbstractServiceTestImpl#readPaginatedList(java.lang.String) - */ - @Test(dataProvider = "testName") - @Override + + /* (non-Javadoc) + * @see org.collectionspace.services.client.test.AbstractServiceTestImpl#readPaginatedList(java.lang.String) + */ + @Test(dataProvider = "testName") + @Override public void readPaginatedList(String testName) throws Exception { - //FIXME: http://issues.collectionspace.org/browse/CSPACE-1697 - } - + //FIXME: http://issues.collectionspace.org/browse/CSPACE-1697 + } + // --------------------------------------------------------------- // CRUD tests : CREATE tests // --------------------------------------------------------------- @@ -121,11 +119,11 @@ public class AccountServiceTest extends AbstractServiceTestImpl { // its associated HTTP method name (e.g. POST, DELETE). setupCreate(); + AccountClient client = new AccountClient(); // Submit the request to the service and store the response. AccountsCommon account = createAccountInstance("barney", "barney", "hithere08", "barney@dinoland.com", - true, false, true, true); - AccountClient client = new AccountClient(); + client.getTenantId(), true, false, true, true); ClientResponse res = client.create(account); int statusCode = res.getStatus(); @@ -166,10 +164,11 @@ public class AccountServiceTest extends AbstractServiceTestImpl { setupCreate(); // Submit the request to the service and store the response. + AccountClient client = new AccountClient(); AccountsCommon account = createAccountInstance("barney1", "barney", "hithere08", "barney@dinoland.com", - true, false, true, true); - AccountClient client = new AccountClient(); + client.getTenantId(), true, false, true, true); + ClientResponse res = client.create(account); int statusCode = res.getStatus(); if (logger.isDebugEnabled()) { @@ -196,10 +195,10 @@ public class AccountServiceTest extends AbstractServiceTestImpl { setupCreate(); // Submit the request to the service and store the response. + AccountClient client = new AccountClient(); AccountsCommon account = createAccountInstance("babybop", "babybop", "hithere08", "babybop@dinoland.com", - true, true, true, true); - AccountClient client = new AccountClient(); + client.getTenantId(), true, true, true, true); ClientResponse res = client.create(account); int statusCode = res.getStatus(); // Does it exactly match the expected status code? @@ -228,10 +227,10 @@ public class AccountServiceTest extends AbstractServiceTestImpl { setupCreate(); // Submit the request to the service and store the response. + AccountClient client = new AccountClient(); AccountsCommon account = createAccountInstance("babybop", "babybop", "hithere08", "babybop@dinoland.com", - true, false, false, true); - AccountClient client = new AccountClient(); + client.getTenantId(), true, false, false, true); ClientResponse res = client.create(account); int statusCode = res.getStatus(); // Does it exactly match the expected status code? @@ -259,10 +258,10 @@ public class AccountServiceTest extends AbstractServiceTestImpl { setupCreate(); // Submit the request to the service and store the response. + AccountClient client = new AccountClient(); AccountsCommon account = createAccountInstance("babybop", "babybop", "hithere08", "babybop.dinoland.com", - true, false, true, true); - AccountClient client = new AccountClient(); + client.getTenantId(), true, false, true, true); ClientResponse res = client.create(account); int statusCode = res.getStatus(); // Does it exactly match the expected status code? @@ -290,10 +289,10 @@ public class AccountServiceTest extends AbstractServiceTestImpl { setupCreate(); // Submit the request to the service and store the response. + AccountClient client = new AccountClient(); AccountsCommon account = createAccountInstance("babybop", "babybop", "hithere08", "babybop@dinoland.com", - false, false, true, true); - AccountClient client = new AccountClient(); + client.getTenantId(), false, false, true, true); ClientResponse res = client.create(account); int statusCode = res.getStatus(); // Does it exactly match the expected status code? @@ -321,10 +320,10 @@ public class AccountServiceTest extends AbstractServiceTestImpl { setupCreate(); // Submit the request to the service and store the response. + AccountClient client = new AccountClient(); AccountsCommon account = createAccountInstance("babybop", "babybop", "shpswd", "babybop@dinoland.com", - true, false, true, true); - AccountClient client = new AccountClient(); + client.getTenantId(), true, false, true, true); ClientResponse res = client.create(account); int statusCode = res.getStatus(); // Does it exactly match the expected status code? @@ -336,13 +335,13 @@ public class AccountServiceTest extends AbstractServiceTestImpl { Assert.assertEquals(statusCode, Response.Status.BAD_REQUEST.getStatusCode()); } - /** - * Creates the with most invalid. - * - * @param testName the test name - * @throws Exception the exception - */ - @Test(dataProvider = "testName", dataProviderClass = AbstractServiceTestImpl.class, + /** + * Creates the with most invalid. + * + * @param testName the test name + * @throws Exception the exception + */ + @Test(dataProvider = "testName", dataProviderClass = AbstractServiceTestImpl.class, dependsOnMethods = {"create"}) public void createWithMostInvalid(String testName) throws Exception { @@ -352,10 +351,10 @@ public class AccountServiceTest extends AbstractServiceTestImpl { setupCreate(); // Submit the request to the service and store the response. + AccountClient client = new AccountClient(); AccountsCommon account = createAccountInstance("babybop", "babybop", "hithere08", "babybop/dinoland.com", - false, true, false, false); - AccountClient client = new AccountClient(); + client.getTenantId(), false, true, false, false); ClientResponse res = client.create(account); int statusCode = res.getStatus(); // Does it exactly match the expected status code? @@ -381,10 +380,10 @@ public class AccountServiceTest extends AbstractServiceTestImpl { } setupCreate(); // Submit the request to the service and store the response. + AccountClient client = new AccountClient(); AccountsCommon account1 = createAccountInstance("curious", "curious", "hithere08", "curious@george.com", - true, false, true, true); - AccountClient client = new AccountClient(); + client.getTenantId(), true, false, true, true); ClientResponse res = client.create(account1); int statusCode = res.getStatus(); Assert.assertTrue(REQUEST_TYPE.isValidStatusCode(statusCode), @@ -394,7 +393,7 @@ public class AccountServiceTest extends AbstractServiceTestImpl { AccountsCommon account2 = createAccountInstance("tom", "tom", "hithere09", "tom@jerry.com", - true, false, true, true); + client.getTenantId(), true, false, true, true); res = client.create(account2); statusCode = res.getStatus(); Assert.assertTrue(REQUEST_TYPE.isValidStatusCode(statusCode), @@ -405,7 +404,7 @@ public class AccountServiceTest extends AbstractServiceTestImpl { AccountsCommon account3 = createAccountInstance("mj", "mj", "hithere10", "mj@dinoland.com", - true, false, true, true); + client.getTenantId(), true, false, true, true); res = client.create(account3); statusCode = res.getStatus(); Assert.assertTrue(REQUEST_TYPE.isValidStatusCode(statusCode), @@ -423,7 +422,7 @@ public class AccountServiceTest extends AbstractServiceTestImpl { */ @Override public void createWithEmptyEntityBody(String testName) throws Exception { - //FIXME: Should this test really be empty? If so, please comment accordingly. + //FIXME: Should this test really be empty? If so, please comment accordingly. } /* (non-Javadoc) @@ -431,7 +430,7 @@ public class AccountServiceTest extends AbstractServiceTestImpl { */ @Override public void createWithMalformedXml(String testName) throws Exception { - //FIXME: Should this test really be empty? If so, please comment accordingly. + //FIXME: Should this test really be empty? If so, please comment accordingly. } /* (non-Javadoc) @@ -439,7 +438,7 @@ public class AccountServiceTest extends AbstractServiceTestImpl { */ @Override public void createWithWrongXmlSchema(String testName) throws Exception { - //FIXME: Should this test really be empty? If so, please comment accordingly. + //FIXME: Should this test really be empty? If so, please comment accordingly. } // --------------------------------------------------------------- @@ -994,7 +993,7 @@ public class AccountServiceTest extends AbstractServiceTestImpl { */ @Override public void updateWithEmptyEntityBody(String testName) throws Exception { - //FIXME: Should this test really be empty? If so, please comment accordingly. + //FIXME: Should this test really be empty? If so, please comment accordingly. } /* (non-Javadoc) @@ -1002,7 +1001,7 @@ public class AccountServiceTest extends AbstractServiceTestImpl { */ @Override public void updateWithMalformedXml(String testName) throws Exception { - //FIXME: Should this test really be empty? If so, please comment accordingly. + //FIXME: Should this test really be empty? If so, please comment accordingly. } /* (non-Javadoc) @@ -1010,7 +1009,7 @@ public class AccountServiceTest extends AbstractServiceTestImpl { */ @Override public void updateWithWrongXmlSchema(String testName) throws Exception { - //FIXME: Should this test really be empty? If so, please comment accordingly. + //FIXME: Should this test really be empty? If so, please comment accordingly. } /* (non-Javadoc) @@ -1034,7 +1033,7 @@ public class AccountServiceTest extends AbstractServiceTestImpl { AccountClient client = new AccountClient(); AccountsCommon account = createAccountInstance("simba", "simba", "tiger", "simba@lionking.com", - true, false, true, true); + client.getTenantId(), true, false, true, true); ClientResponse res = client.update(NON_EXISTENT_ID, account); int statusCode = res.getStatus(); @@ -1209,13 +1208,12 @@ public class AccountServiceTest extends AbstractServiceTestImpl { * @return */ AccountsCommon createAccountInstance(String screenName, - String userName, String passwd, String email, + String userName, String passwd, String email, String tenantId, boolean useScreenName, boolean invalidTenant, boolean useUser, boolean usePassword) { AccountsCommon account = AccountFactory.createAccountInstance(screenName, - userName, passwd, email, useScreenName, - addTenant, invalidTenant, useUser, usePassword); - + userName, passwd, email, tenantId, useScreenName, + invalidTenant, useUser, usePassword); if (logger.isDebugEnabled()) { logger.debug("to be created, account common"); logger.debug(objectAsXmlString(account, @@ -1225,6 +1223,7 @@ public class AccountServiceTest extends AbstractServiceTestImpl { } + /** * Prints the list. * diff --git a/services/account/pstore/src/main/resources/db/mysql/test_account.sql b/services/account/pstore/src/main/resources/db/mysql/test_account.sql index 52f5f4318..8d85d4bc9 100644 --- a/services/account/pstore/src/main/resources/db/mysql/test_account.sql +++ b/services/account/pstore/src/main/resources/db/mysql/test_account.sql @@ -6,13 +6,20 @@ use cspace; -- Tenants -INSERT INTO `cspace`.`tenants` (`id`, `name`, `created_at`) VALUES ('1','movingimages.us', '2010-02-17 16:31:48'); +-- movingimages -- +INSERT INTO `cspace`.`tenants` (`id`, `name`, `created_at`) VALUES ('1','movingimages.us', now()); +-- pahma -- +INSERT INTO `cspace`.`tenants` (`id`, `name`, `created_at`) VALUES ('2','hearstmuseum.berkeley.edu', now()); -- Accounts -INSERT INTO `cspace`.`accounts_common` (`csid`, `email`, `phone`, `mobile`, `userid`, `status`, `screen_name`, `created_at`) VALUES ('eeca40d7-dc77-4cc5-b489-16a53c75525a','test.test@berkeley.edu',NULL,NULL,'test','ACTIVE','test', '2010-02-17 16:31:48'); +-- default test account -- +INSERT INTO `cspace`.`accounts_common` (`csid`, `email`, `phone`, `mobile`, `userid`, `status`, `screen_name`, `created_at`) VALUES ('eeca40d7-dc77-4cc5-b489-16a53c75525a','test.test@berkeley.edu',NULL,NULL,'test','ACTIVE','test', now()); -- Additional account introduced during integration on release 0.6, and currently relied upon by the Application Layer. -INSERT INTO `cspace`.`accounts_common` (`csid`, `email`, `phone`, `mobile`, `userid`, `status`, `screen_name`, `created_at`) VALUES ('251f98f3-0292-4f3e-aa95-455314050e1b','test@collectionspace.org',NULL,NULL,'test@collectionspace.org','ACTIVE','test@collectionspace.org', '2010-05-03 12:35:00'); +INSERT INTO `cspace`.`accounts_common` (`csid`, `email`, `phone`, `mobile`, `userid`, `status`, `screen_name`, `created_at`) VALUES ('251f98f3-0292-4f3e-aa95-455314050e1b','test@collectionspace.org',NULL,NULL,'test@collectionspace.org','ACTIVE','test@collectionspace.org', now()); +-- PAHMA test account -- +INSERT INTO `cspace`.`accounts_common` (`csid`, `email`, `phone`, `mobile`, `userid`, `status`, `screen_name`, `created_at`) VALUES ('ff2b4440-ed0d-4892-adb4-b6999eba3ae7','test@hearstmuseum.berkeley.edu',NULL,NULL,'test-pahma','ACTIVE','test-pahma', now()); -- Association of accounts with tenants INSERT INTO `cspace`.`accounts_tenants` (`TENANTS_ACCOUNTSCOMMON_CSID`, `tenant_id`) VALUES ('eeca40d7-dc77-4cc5-b489-16a53c75525a', '1'); -INSERT INTO `cspace`.`accounts_tenants` (`TENANTS_ACCOUNTSCOMMON_CSID`, `tenant_id`) VALUES ('251f98f3-0292-4f3e-aa95-455314050e1b', '1'); \ No newline at end of file +INSERT INTO `cspace`.`accounts_tenants` (`TENANTS_ACCOUNTSCOMMON_CSID`, `tenant_id`) VALUES ('251f98f3-0292-4f3e-aa95-455314050e1b', '1'); +INSERT INTO `cspace`.`accounts_tenants` (`TENANTS_ACCOUNTSCOMMON_CSID`, `tenant_id`) VALUES ('ff2b4440-ed0d-4892-adb4-b6999eba3ae7', '2'); \ No newline at end of file diff --git a/services/authentication/pstore/src/main/resources/db/mysql/test_authentication.sql b/services/authentication/pstore/src/main/resources/db/mysql/test_authentication.sql index 63ce9d3a3..26bb0bb16 100644 --- a/services/authentication/pstore/src/main/resources/db/mysql/test_authentication.sql +++ b/services/authentication/pstore/src/main/resources/db/mysql/test_authentication.sql @@ -5,6 +5,9 @@ -- use cspace; -insert into `users` (`username`,`passwd`, `created_at`) VALUES ('test','n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=', '2010-02-17 16:31:48'); +-- default test user -- +insert into `users` (`username`,`passwd`, `created_at`) VALUES ('test','n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=', now()); -- Additional account introduced during integration on release 0.6, and currently relied upon by the Application Layer. -insert into `users` (`username`,`passwd`, `created_at`) VALUES ('test@collectionspace.org','NyaDNd1pMQRb3N+SYj/4GaZCRLU9DnRtQ4eXNJ1NpXg=', '2010-05-03 12:35:00'); +insert into `users` (`username`,`passwd`, `created_at`) VALUES ('test@collectionspace.org','NyaDNd1pMQRb3N+SYj/4GaZCRLU9DnRtQ4eXNJ1NpXg=', now()); +-- user for testing pahma deployment -- +insert into `users` (`username`,`passwd`, `created_at`) VALUES ('test-pahma','n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=', now()); diff --git a/services/authorization-mgt/client/src/test/java/org/collectionspace/services/authorization/client/test/PermissionServiceTest.java b/services/authorization-mgt/client/src/test/java/org/collectionspace/services/authorization/client/test/PermissionServiceTest.java index 167e5d41f..0923f22d0 100644 --- a/services/authorization-mgt/client/src/test/java/org/collectionspace/services/authorization/client/test/PermissionServiceTest.java +++ b/services/authorization-mgt/client/src/test/java/org/collectionspace/services/authorization/client/test/PermissionServiceTest.java @@ -62,8 +62,6 @@ public class PermissionServiceTest extends AbstractServiceTestImpl { /** The known resource id. */ private String knownResourceId = null; private String knownResource = "accounts-test"; - /** The add tenant. */ - boolean addTenant = true; /* * This method is called only by the parent class, AbstractServiceTestImpl */ @@ -413,7 +411,7 @@ public class PermissionServiceTest extends AbstractServiceTestImpl { Assert.assertTrue(REQUEST_TYPE.isValidStatusCode(statusCode), invalidStatusCodeMessage(REQUEST_TYPE, statusCode)); Assert.assertEquals(statusCode, EXPECTED_STATUS_CODE); - int EXPECTED_ITEMS = 5; //seeded permissions + int EXPECTED_ITEMS = 9; //seeded permissions if (logger.isDebugEnabled()) { logger.debug(testName + ": received = " + list.getPermissions().size() + " expected=" + EXPECTED_ITEMS); diff --git a/services/authorization-mgt/client/src/test/java/org/collectionspace/services/authorization/client/test/RoleServiceTest.java b/services/authorization-mgt/client/src/test/java/org/collectionspace/services/authorization/client/test/RoleServiceTest.java index 9818eda81..41dfe1800 100644 --- a/services/authorization-mgt/client/src/test/java/org/collectionspace/services/authorization/client/test/RoleServiceTest.java +++ b/services/authorization-mgt/client/src/test/java/org/collectionspace/services/authorization/client/test/RoleServiceTest.java @@ -62,8 +62,7 @@ public class RoleServiceTest extends AbstractServiceTestImpl { private String verifyResourceId = null; private String verifyRoleName = "collections_manager_test"; // private List allResourceIdsCreated = new ArrayList(); - /** The add tenant. */ - boolean addTenant = true; + /* * This method is called only by the parent class, AbstractServiceTestImpl */ @@ -168,7 +167,7 @@ public class RoleServiceTest extends AbstractServiceTestImpl { // Submit the request to the service and store the response. RoleClient client = new RoleClient(); - Role role = createRoleInstance("ROLE_USERS", + Role role = createRoleInstance(knownRoleName, "role users", true); ClientResponse res = client.create(role); @@ -199,7 +198,7 @@ public class RoleServiceTest extends AbstractServiceTestImpl { // Submit the request to the service and store the response. RoleClient client = new RoleClient(); - Role role = createRoleInstance("ROLE_USERS", + Role role = createRoleInstance("", "role for users", false); ClientResponse res = client.create(role); @@ -301,7 +300,7 @@ public class RoleServiceTest extends AbstractServiceTestImpl { */ @Override @Test(dataProvider = "testName", dataProviderClass = AbstractServiceTestImpl.class, - dependsOnMethods = {"create"}) + dependsOnMethods = {"createForUniqueRole"}) public void read(String testName) throws Exception { if (logger.isDebugEnabled()) { diff --git a/services/authorization-mgt/import/src/main/java/org/collectionspace/services/authorization/importer/AuthorizationSeed.java b/services/authorization-mgt/import/src/main/java/org/collectionspace/services/authorization/importer/AuthorizationSeed.java index 8954b3e87..895b1162b 100644 --- a/services/authorization-mgt/import/src/main/java/org/collectionspace/services/authorization/importer/AuthorizationSeed.java +++ b/services/authorization-mgt/import/src/main/java/org/collectionspace/services/authorization/importer/AuthorizationSeed.java @@ -86,7 +86,8 @@ public class AuthorizationSeed { throws Exception { for (Permission p : permList.getPermissions()) { if (logger.isDebugEnabled()) { - logger.debug("adding permission for res=" + p.getResourceName()); + logger.debug("adding permission for res=" + p.getResourceName() + + " for tenant=" + p.getTenantId()); } for (PermissionRole pr : permRoleList.getPermissionRoles()) { if (pr.getPermissions().get(0).getPermissionId().equals(p.getCsid())) { diff --git a/services/authorization-mgt/import/src/main/resources/import-data/import-permissions-roles.xml b/services/authorization-mgt/import/src/main/resources/import-data/import-permissions-roles.xml index 5f10e8ba1..b9254aa3c 100644 --- a/services/authorization-mgt/import/src/main/resources/import-data/import-permissions-roles.xml +++ b/services/authorization-mgt/import/src/main/resources/import-data/import-permissions-roles.xml @@ -3,18 +3,22 @@ ROLE - de3657a1-99f8-46b6-b4bb-2e28f9def87f + d44f77d4-52cd-4025-b292-c227aa73d6fc idgenerators - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - de3657a1-99f8-46b6-b4bb-2e28f9def87f + d44f77d4-52cd-4025-b292-c227aa73d6fc idgenerators @@ -25,18 +29,22 @@ ROLE - b6644980-aeef-4d8f-a048-338057f9d973 + 89231998-14d1-440e-a402-38f2f53a1e57 id - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - b6644980-aeef-4d8f-a048-338057f9d973 + 89231998-14d1-440e-a402-38f2f53a1e57 id @@ -47,20 +55,24 @@ ROLE - ddcdcc15-7f5a-49d8-8354-82c2e52d4727 + ada701c6-649f-481f-afd5-2d192c483b6a /idgenerators/*/ids - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - ddcdcc15-7f5a-49d8-8354-82c2e52d4727 + ada701c6-649f-481f-afd5-2d192c483b6a /idgenerators/*/ids @@ -73,18 +85,22 @@ ROLE - b203fb49-56c3-4662-b4bd-4008a6462364 + ad4921b1-6968-4028-99e1-7edbfed46ead collectionobjects - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - b203fb49-56c3-4662-b4bd-4008a6462364 + ad4921b1-6968-4028-99e1-7edbfed46ead collectionobjects @@ -95,20 +111,24 @@ ROLE - 2dde10d0-2ce9-471b-9c66-c67a6e7c511f + dbd45393-f610-4a0d-81ed-03475aeacde3 /collectionobjects/*/authorityrefs/ - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 2dde10d0-2ce9-471b-9c66-c67a6e7c511f + dbd45393-f610-4a0d-81ed-03475aeacde3 /collectionobjects/*/authorityrefs/ @@ -121,18 +141,22 @@ ROLE - b8323642-cd0a-491f-a952-cf36d2b32134 + 3185e6b7-7248-4bfa-afeb-1e14b206afeb intakes - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - b8323642-cd0a-491f-a952-cf36d2b32134 + 3185e6b7-7248-4bfa-afeb-1e14b206afeb intakes @@ -143,20 +167,24 @@ ROLE - 3c3e7ff6-7ecd-4643-b662-3fcb54e62abe + 9f067bc0-0aaf-4499-986e-424b112f6ef2 /intakes/*/authorityrefs/ - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 3c3e7ff6-7ecd-4643-b662-3fcb54e62abe + 9f067bc0-0aaf-4499-986e-424b112f6ef2 /intakes/*/authorityrefs/ @@ -169,18 +197,22 @@ ROLE - e248b5af-6eb3-4063-8816-6c2b0c55537c + 021de06c-f386-42ad-b18e-fdd32496d521 loansin - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - e248b5af-6eb3-4063-8816-6c2b0c55537c + 021de06c-f386-42ad-b18e-fdd32496d521 loansin @@ -191,20 +223,24 @@ ROLE - 6529cf6d-34ae-4bab-a6e2-ab19973620fb + 7339e77d-638e-4d78-a707-e094c9af29b5 /loansin/*/authorityrefs/ - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 6529cf6d-34ae-4bab-a6e2-ab19973620fb + 7339e77d-638e-4d78-a707-e094c9af29b5 /loansin/*/authorityrefs/ @@ -217,18 +253,22 @@ ROLE - 1145d28d-269a-41fd-806f-b0d6511cf273 + 4ce5feca-958e-47e2-a1f5-7a3dbd28bcd9 loansout - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 1145d28d-269a-41fd-806f-b0d6511cf273 + 4ce5feca-958e-47e2-a1f5-7a3dbd28bcd9 loansout @@ -239,20 +279,24 @@ ROLE - 8773ed3b-9432-44e8-900e-1bc3908e7911 + 871a9263-bf27-4aee-a287-e489e3421e98 /loansout/*/authorityrefs/ - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 8773ed3b-9432-44e8-900e-1bc3908e7911 + 871a9263-bf27-4aee-a287-e489e3421e98 /loansout/*/authorityrefs/ @@ -265,18 +309,22 @@ ROLE - 21786a64-02e0-4359-9c61-47cf821f2362 + 907f0d70-294f-42a3-b433-b084cdd800e5 movements - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 21786a64-02e0-4359-9c61-47cf821f2362 + 907f0d70-294f-42a3-b433-b084cdd800e5 movements @@ -287,20 +335,24 @@ ROLE - d501423e-9425-4c99-bf6f-478a2a9f971e + 959f2186-4279-4828-9850-f2bf8939324b /movements/*/authorityrefs/ - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - d501423e-9425-4c99-bf6f-478a2a9f971e + 959f2186-4279-4828-9850-f2bf8939324b /movements/*/authorityrefs/ @@ -313,18 +365,22 @@ ROLE - 88075c4c-d5ed-420a-a767-1ab662066feb + 4e9fe80c-1751-4f71-9ba4-9befdf0d6afb vocabularies - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 88075c4c-d5ed-420a-a767-1ab662066feb + 4e9fe80c-1751-4f71-9ba4-9befdf0d6afb vocabularies @@ -335,18 +391,22 @@ ROLE - 2444d28d-883f-4566-a378-f03b95d100b9 + 2bf629ea-66c7-4974-802e-852d9ce04a57 vocabularyitems - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 2444d28d-883f-4566-a378-f03b95d100b9 + 2bf629ea-66c7-4974-802e-852d9ce04a57 vocabularyitems @@ -357,20 +417,24 @@ ROLE - 80a57584-6438-4df3-95df-bba1d7d9a275 + 00ffa49c-d778-45a0-b504-35bdd4ffc24f /vocabularies/*/items/ - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 80a57584-6438-4df3-95df-bba1d7d9a275 + 00ffa49c-d778-45a0-b504-35bdd4ffc24f /vocabularies/*/items/ @@ -383,18 +447,22 @@ ROLE - 812a71ed-0dfe-4371-a390-4776ab5519f2 + 8d50e134-45a3-4b27-aee2-c3df1c073008 orgauthorities - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 812a71ed-0dfe-4371-a390-4776ab5519f2 + 8d50e134-45a3-4b27-aee2-c3df1c073008 orgauthorities @@ -405,20 +473,24 @@ ROLE - a9aeff96-179f-4b1d-8e74-25358185fdae + b8131f3c-ac19-49ad-8301-3fc588e31dfb /orgauthorities/*/items/*/authorityrefs/ - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - a9aeff96-179f-4b1d-8e74-25358185fdae + b8131f3c-ac19-49ad-8301-3fc588e31dfb /orgauthorities/*/items/*/authorityrefs/ @@ -431,18 +503,22 @@ ROLE - 23897bf4-c727-4737-a70c-dc446519e1d5 + e35cc564-b021-4ad2-8075-e8f7b53c1ee2 organizations - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 23897bf4-c727-4737-a70c-dc446519e1d5 + e35cc564-b021-4ad2-8075-e8f7b53c1ee2 organizations @@ -453,20 +529,24 @@ ROLE - 64f48448-c5ed-4096-acc8-17daebf2924f + 4ca834a1-834b-46d1-ab17-8e313c3a9980 /orgauthorities/*/items/ - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 64f48448-c5ed-4096-acc8-17daebf2924f + 4ca834a1-834b-46d1-ab17-8e313c3a9980 /orgauthorities/*/items/ @@ -479,20 +559,24 @@ ROLE - 90bea796-bf38-46a6-8a9e-fc9a1eed157d + 57b32d7b-db0e-48db-980f-2c4ff1e1476b /orgauthorities/*/items/*/refobjs - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 90bea796-bf38-46a6-8a9e-fc9a1eed157d + 57b32d7b-db0e-48db-980f-2c4ff1e1476b /orgauthorities/*/items/*/refobjs @@ -505,18 +589,22 @@ ROLE - e61b8b12-3db0-499a-b074-79afec3f141a + 04d87e96-d1a1-4891-beca-5be5929dffbe personauthorities - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - e61b8b12-3db0-499a-b074-79afec3f141a + 04d87e96-d1a1-4891-beca-5be5929dffbe personauthorities @@ -527,20 +615,24 @@ ROLE - ce34076c-83b0-409c-b2b8-2d3805af9056 + 1caacc4d-b5a8-464f-b9bf-8638511f7999 /personauthorities/*/items/ - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - ce34076c-83b0-409c-b2b8-2d3805af9056 + 1caacc4d-b5a8-464f-b9bf-8638511f7999 /personauthorities/*/items/ @@ -553,20 +645,24 @@ ROLE - acac0886-627b-43e6-810c-f62c928b99bf + 52ab1350-8a01-478a-b459-ddc29ac4edbb /personauthorities/*/items/*/refobjs - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - acac0886-627b-43e6-810c-f62c928b99bf + 52ab1350-8a01-478a-b459-ddc29ac4edbb /personauthorities/*/items/*/refobjs @@ -579,18 +675,22 @@ ROLE - 1aa13e33-4b21-4e6f-b670-2fc13f8fd2b4 + efbfc241-02a4-4758-b546-2e10e44a88c2 persons - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 1aa13e33-4b21-4e6f-b670-2fc13f8fd2b4 + efbfc241-02a4-4758-b546-2e10e44a88c2 persons @@ -601,20 +701,24 @@ ROLE - cbb98b91-25ed-4e8b-af4d-48f11e981e19 + d15b3fd7-ee37-4490-bc4d-2701ffbdedb7 /personauthorities/*/items/ - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - cbb98b91-25ed-4e8b-af4d-48f11e981e19 + d15b3fd7-ee37-4490-bc4d-2701ffbdedb7 /personauthorities/*/items/ @@ -627,18 +731,22 @@ ROLE - 7c9e5c9a-8eb7-4579-ad94-e6d4f90c9ae8 + 9b19311b-b3b4-42a4-9fd1-592998f0ca88 locationauthorities - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 7c9e5c9a-8eb7-4579-ad94-e6d4f90c9ae8 + 9b19311b-b3b4-42a4-9fd1-592998f0ca88 locationauthorities @@ -649,20 +757,24 @@ ROLE - ce653183-2722-46c9-8f19-2e719c9cb06c + 9b6f3483-3c36-412e-8ed4-19d48597313d /locationauthorities/*/items/ - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - ce653183-2722-46c9-8f19-2e719c9cb06c + 9b6f3483-3c36-412e-8ed4-19d48597313d /locationauthorities/*/items/ @@ -675,18 +787,22 @@ ROLE - 59b8de3a-9b1d-4e82-9aa5-0d28dd5a46ac + a26945bf-9e2e-41a0-967b-febb4c33aa2e locations - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 59b8de3a-9b1d-4e82-9aa5-0d28dd5a46ac + a26945bf-9e2e-41a0-967b-febb4c33aa2e locations @@ -697,18 +813,22 @@ ROLE - 37e00906-0fa5-4d20-be21-739f66bcac52 + 983bff7f-8ba2-4d6e-98d6-b8de4724249e acquisitions - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 37e00906-0fa5-4d20-be21-739f66bcac52 + 983bff7f-8ba2-4d6e-98d6-b8de4724249e acquisitions @@ -719,20 +839,24 @@ ROLE - 1ebea466-ab70-4368-8965-aa9305661d50 + b3418175-6fd0-448f-82c3-d52714b83c17 /acquisitions/*/authorityrefs/ - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 1ebea466-ab70-4368-8965-aa9305661d50 + b3418175-6fd0-448f-82c3-d52714b83c17 /acquisitions/*/authorityrefs/ @@ -745,18 +869,22 @@ ROLE - c48e8d4a-7972-469f-a2bc-1bca201cd772 + 20b460ef-b528-46a9-8975-8f7e34437696 relations - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - c48e8d4a-7972-469f-a2bc-1bca201cd772 + 20b460ef-b528-46a9-8975-8f7e34437696 relations @@ -767,20 +895,24 @@ ROLE - b2f182cb-61d7-4016-a2e2-075c13afefd0 + e9c3b077-4384-4349-bb4c-b5e21e2b4aef relations/subject/*/type/*/object/* - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - b2f182cb-61d7-4016-a2e2-075c13afefd0 + e9c3b077-4384-4349-bb4c-b5e21e2b4aef relations/subject/*/type/*/object/* @@ -793,18 +925,22 @@ ROLE - 6ba014c0-80e1-456f-9c3c-de339391d254 + f5b2e004-16f3-4b6b-882c-82bf101a864e accounts - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 6ba014c0-80e1-456f-9c3c-de339391d254 + f5b2e004-16f3-4b6b-882c-82bf101a864e accounts @@ -815,18 +951,22 @@ ROLE - ee04f607-8e32-46dd-b5c9-b7657cdd290c + b4a69d0e-cedf-4218-91fa-d4e38f125207 dimensions - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - ee04f607-8e32-46dd-b5c9-b7657cdd290c + b4a69d0e-cedf-4218-91fa-d4e38f125207 dimensions @@ -837,18 +977,22 @@ ROLE - 828327fc-7b3d-4bde-b6d6-e48c74c3f4fd + 516ec6a0-0f75-48c9-8efe-6c3a409f0a0d contacts - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 828327fc-7b3d-4bde-b6d6-e48c74c3f4fd + 516ec6a0-0f75-48c9-8efe-6c3a409f0a0d contacts @@ -859,20 +1003,24 @@ ROLE - 2d48d7a3-faba-4e8d-93a3-0863de7d92da + a4ec2332-0f57-4cc1-b48c-e500f329a8c2 /personauthorities/*/items/*/contacts - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 2d48d7a3-faba-4e8d-93a3-0863de7d92da + a4ec2332-0f57-4cc1-b48c-e500f329a8c2 /personauthorities/*/items/*/contacts @@ -885,20 +1033,24 @@ ROLE - 7d8f835d-d9c0-4508-b279-eef890db247a + efcc4e68-5f2f-43cf-aa86-c3df54af8f44 /orgauthorities/*/items/*/contacts - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 7d8f835d-d9c0-4508-b279-eef890db247a + efcc4e68-5f2f-43cf-aa86-c3df54af8f44 /orgauthorities/*/items/*/contacts @@ -911,18 +1063,22 @@ ROLE - ab92d994-29eb-4d64-bd49-b3cafd8f0a5b + e01bc5b4-c359-42ba-80a8-6920c704622b notes - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - ab92d994-29eb-4d64-bd49-b3cafd8f0a5b + e01bc5b4-c359-42ba-80a8-6920c704622b notes @@ -933,18 +1089,22 @@ ROLE - db65825c-50c3-49a8-af5f-68115f16537b + 41df9971-887c-4686-aec7-94fd86079a93 authorization/roles - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - db65825c-50c3-49a8-af5f-68115f16537b + 41df9971-887c-4686-aec7-94fd86079a93 authorization/roles @@ -955,18 +1115,22 @@ ROLE - f7f41db6-f85f-4cd3-a2d6-d9185b6dd8e9 + d2a4b854-3123-4cb1-a109-f1a519a7b2a4 authorization/permissions - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - f7f41db6-f85f-4cd3-a2d6-d9185b6dd8e9 + d2a4b854-3123-4cb1-a109-f1a519a7b2a4 authorization/permissions @@ -977,18 +1141,22 @@ ROLE - 074e7f98-2580-48d3-969d-4043f156eaa2 + 24e6142e-56d7-4312-ac0d-d68f1deb21b8 authorization/permissions/permroles - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 074e7f98-2580-48d3-969d-4043f156eaa2 + 24e6142e-56d7-4312-ac0d-d68f1deb21b8 authorization/permissions/permroles @@ -999,20 +1167,24 @@ ROLE - 0cdd6f4e-58b6-4c11-bbbd-0984c30d6dbd + 6ce06e7f-e471-410c-a7a9-ec50b0bc11be /authorization/permissions/*/permroles/ - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 0cdd6f4e-58b6-4c11-bbbd-0984c30d6dbd + 6ce06e7f-e471-410c-a7a9-ec50b0bc11be /authorization/permissions/*/permroles/ @@ -1025,18 +1197,22 @@ ROLE - 361c4bed-bd81-4f22-82df-f462111663a9 + 22059d92-f298-49fc-80c0-55c34d966836 accounts/accountroles - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 361c4bed-bd81-4f22-82df-f462111663a9 + 22059d92-f298-49fc-80c0-55c34d966836 accounts/accountroles @@ -1047,20 +1223,24 @@ ROLE - e272da20-719c-49d1-9584-c21cedcd3a65 + ca0acf6a-fc55-426b-8717-b5da0e764cd3 /accounts/*/accountroles/ - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - e272da20-719c-49d1-9584-c21cedcd3a65 + ca0acf6a-fc55-426b-8717-b5da0e764cd3 /accounts/*/accountroles/ @@ -1073,18 +1253,22 @@ ROLE - d7618a4f-d8be-45f6-b0f3-2816ecdca341 + 0d7965c9-559f-4a31-ac20-fabca081247b authorization/roles/permroles - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - d7618a4f-d8be-45f6-b0f3-2816ecdca341 + 0d7965c9-559f-4a31-ac20-fabca081247b authorization/roles/permroles @@ -1095,20 +1279,24 @@ ROLE - 3b6b0755-9044-46ee-8a85-4e44ac68dd0a + df29890b-f7dd-4cb2-bf20-4873915ec149 /authorization/roles/*/permroles/ - ad3a2b4c-ef74-47f0-bdb0-f6a906acd370 + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 ROLE_TENANT_ADMINISTRATOR ROLE - 3b6b0755-9044-46ee-8a85-4e44ac68dd0a + df29890b-f7dd-4cb2-bf20-4873915ec149 /authorization/roles/*/permroles/ @@ -1121,559 +1309,2800 @@ ROLE - da5253a4-471f-4ada-9d7d-8f1a9a747647 + 24ca9b10-db58-4f83-9270-48d31e439930 idgenerators - 25f537c9-a213-41de-97f0-18524d5f4eb2 - ROLE_TENANT_READER + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR ROLE - 4d524373-a5df-45e2-aec6-2e214f08431e - id + 24ca9b10-db58-4f83-9270-48d31e439930 + idgenerators - 25f537c9-a213-41de-97f0-18524d5f4eb2 - ROLE_TENANT_READER + 0 + ROLE_ADMINISTRATOR ROLE - c757f1c4-3282-4055-b0e1-2c818fec709b - - /idgenerators/*/ids - + cce6d084-4686-4786-90cb-bc816ef7f489 + id - 25f537c9-a213-41de-97f0-18524d5f4eb2 - ROLE_TENANT_READER + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR ROLE - e383a971-0335-41da-88e6-f7625303f186 - collectionobjects + cce6d084-4686-4786-90cb-bc816ef7f489 + id - 25f537c9-a213-41de-97f0-18524d5f4eb2 - ROLE_TENANT_READER + 0 + ROLE_ADMINISTRATOR ROLE - b2c49fb3-fb34-4425-86c7-73c48873a983 + 43b43275-7ef5-4f3f-a549-acaae5a26ef7 - /collectionobjects/*/authorityrefs/ + /idgenerators/*/ids - 25f537c9-a213-41de-97f0-18524d5f4eb2 - ROLE_TENANT_READER + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR - - - ROLE - - 2ac4ace4-20f8-4a5f-b984-4753e5452a87 - intakes - - 25f537c9-a213-41de-97f0-18524d5f4eb2 - ROLE_TENANT_READER + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR ROLE - 64af5fcc-a57d-4fa6-820c-4ab857a46590 + 43b43275-7ef5-4f3f-a549-acaae5a26ef7 - /intakes/*/authorityrefs/ + /idgenerators/*/ids - 25f537c9-a213-41de-97f0-18524d5f4eb2 - ROLE_TENANT_READER + 0 + ROLE_ADMINISTRATOR ROLE - 0258eabe-02d3-494c-b405-30e3463a2feb - loansin + 122cbe8f-076c-4803-b1b0-7c493c444215 + collectionobjects - 25f537c9-a213-41de-97f0-18524d5f4eb2 - ROLE_TENANT_READER + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR - - - ROLE - - ae5f5fab-7205-4b92-932f-857b68c5d4b5 - - /loansin/*/authorityrefs/ - - - 25f537c9-a213-41de-97f0-18524d5f4eb2 - ROLE_TENANT_READER + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR ROLE - 9e8b0907-e262-42f9-a4da-6e0bf6493e5a - loansout + 122cbe8f-076c-4803-b1b0-7c493c444215 + collectionobjects - 25f537c9-a213-41de-97f0-18524d5f4eb2 - ROLE_TENANT_READER + 0 + ROLE_ADMINISTRATOR ROLE - b46b29bc-1795-4e3e-a247-59e23742b705 + 4ba3ee15-f527-4b11-9341-771ef3af24a3 - /loansout/*/authorityrefs/ + /collectionobjects/*/authorityrefs/ - 25f537c9-a213-41de-97f0-18524d5f4eb2 - ROLE_TENANT_READER + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR - - - ROLE - - f90c5454-58e9-4b32-a8e4-03b80ed6f58e - movements - - 25f537c9-a213-41de-97f0-18524d5f4eb2 - ROLE_TENANT_READER + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR ROLE - e7c31362-9bb7-48a4-a324-63e84401df30 + 4ba3ee15-f527-4b11-9341-771ef3af24a3 - /movements/*/authorityrefs/ + /collectionobjects/*/authorityrefs/ - 25f537c9-a213-41de-97f0-18524d5f4eb2 - ROLE_TENANT_READER + 0 + ROLE_ADMINISTRATOR ROLE - 90f3a12c-0ac1-417b-942e-88f2b11383b7 - vocabularies + df4c1540-5210-4b41-a735-18b8f71ad14b + intakes - 25f537c9-a213-41de-97f0-18524d5f4eb2 - ROLE_TENANT_READER + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR ROLE - c961fc05-1a2c-4890-88b4-42757378e323 - vocabularyitems + df4c1540-5210-4b41-a735-18b8f71ad14b + intakes - 25f537c9-a213-41de-97f0-18524d5f4eb2 - ROLE_TENANT_READER + 0 + ROLE_ADMINISTRATOR ROLE - 4d13ef59-1443-40ee-8e45-9892c83ec9a1 + 43af6eab-fc37-4c48-8f87-2e6f80afda7d - /vocabularies/*/items/ + /intakes/*/authorityrefs/ - 25f537c9-a213-41de-97f0-18524d5f4eb2 - ROLE_TENANT_READER + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR - - - ROLE - - 6caa049b-25cc-486c-935f-bf215d550bcd - orgauthorities - - 25f537c9-a213-41de-97f0-18524d5f4eb2 - ROLE_TENANT_READER + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR ROLE - 08c36f8b-2432-44c4-a1dd-cba8c8ea53e5 + 43af6eab-fc37-4c48-8f87-2e6f80afda7d - /orgauthorities/*/items/*/authorityrefs/ + /intakes/*/authorityrefs/ - 25f537c9-a213-41de-97f0-18524d5f4eb2 - ROLE_TENANT_READER + 0 + ROLE_ADMINISTRATOR ROLE - c0149cbb-a984-4e32-8302-c045a3e82bf2 - organizations + 29953599-287c-4b67-826d-df72d1c1266d + loansin - 25f537c9-a213-41de-97f0-18524d5f4eb2 - ROLE_TENANT_READER + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR ROLE - b2e0c247-9e3b-4bf3-a956-8b98a8505263 - - /orgauthorities/*/items/ + 29953599-287c-4b67-826d-df72d1c1266d + loansin + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 447f5a41-46a4-4e9d-9b15-62d7fc2466c7 + + /loansin/*/authorityrefs/ + + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 447f5a41-46a4-4e9d-9b15-62d7fc2466c7 + + /loansin/*/authorityrefs/ + + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 62a72a0a-d028-46c4-8fa5-951746e4c4a5 + loansout + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 62a72a0a-d028-46c4-8fa5-951746e4c4a5 + loansout + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 6da07854-0d46-493b-b6cf-47af8fef81b4 + + /loansout/*/authorityrefs/ + + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 6da07854-0d46-493b-b6cf-47af8fef81b4 + + /loansout/*/authorityrefs/ + + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 9807f421-1587-4720-9f60-60087a974302 + movements + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 9807f421-1587-4720-9f60-60087a974302 + movements + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 041f517a-b58b-4df6-ab7e-57fe6bbbaef5 + + /movements/*/authorityrefs/ + + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 041f517a-b58b-4df6-ab7e-57fe6bbbaef5 + + /movements/*/authorityrefs/ + + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 3580ae91-4035-49cd-89a7-0eeeb2cb6b7c + vocabularies + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 3580ae91-4035-49cd-89a7-0eeeb2cb6b7c + vocabularies + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 8e936e74-7dcb-4508-b727-0a33344b5453 + vocabularyitems + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 8e936e74-7dcb-4508-b727-0a33344b5453 + vocabularyitems + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + e450ee2f-35eb-45bc-b718-caddbcf4dc98 + + /vocabularies/*/items/ + + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + e450ee2f-35eb-45bc-b718-caddbcf4dc98 + + /vocabularies/*/items/ + + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + dba4f5cb-4647-4c5f-a4ae-22ffa2cd441c + orgauthorities + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + dba4f5cb-4647-4c5f-a4ae-22ffa2cd441c + orgauthorities + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 3832f8d9-6d84-4e38-9f4a-8aa6a7bf3999 + + /orgauthorities/*/items/*/authorityrefs/ + + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 3832f8d9-6d84-4e38-9f4a-8aa6a7bf3999 + + /orgauthorities/*/items/*/authorityrefs/ + + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 0e6e1b2c-5b85-4d20-ab17-e31924e97927 + organizations + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 0e6e1b2c-5b85-4d20-ab17-e31924e97927 + organizations + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + aae5e62b-5841-4a85-b90a-f65f06d61f04 + + /orgauthorities/*/items/ + + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + aae5e62b-5841-4a85-b90a-f65f06d61f04 + + /orgauthorities/*/items/ + + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 34ab8a6c-3b92-4faf-891b-01686eb7c71d + + /orgauthorities/*/items/*/refobjs + + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 34ab8a6c-3b92-4faf-891b-01686eb7c71d + + /orgauthorities/*/items/*/refobjs + + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 679509a8-4d68-4ba6-a11f-1411b82d417f + personauthorities + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 679509a8-4d68-4ba6-a11f-1411b82d417f + personauthorities + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 5a1dab9b-fea0-4b2d-b141-a64bbf01658f + + /personauthorities/*/items/ + + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 5a1dab9b-fea0-4b2d-b141-a64bbf01658f + + /personauthorities/*/items/ + + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + e714cf45-5e1d-4b5f-86bb-5f9ec4f39eaf + + /personauthorities/*/items/*/refobjs + + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + e714cf45-5e1d-4b5f-86bb-5f9ec4f39eaf + + /personauthorities/*/items/*/refobjs + + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 0349216f-65cd-4a68-8907-66dc151c5911 + persons + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 0349216f-65cd-4a68-8907-66dc151c5911 + persons + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 38a54418-3ca7-4e65-8373-f1822c2f808f + + /personauthorities/*/items/ + + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 38a54418-3ca7-4e65-8373-f1822c2f808f + + /personauthorities/*/items/ + + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 1b0e6e9e-a65e-4d08-92e8-dc38408d2f27 + locationauthorities + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 1b0e6e9e-a65e-4d08-92e8-dc38408d2f27 + locationauthorities + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 6584ed70-b21e-47be-b244-ff844f872780 + + /locationauthorities/*/items/ + + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 6584ed70-b21e-47be-b244-ff844f872780 + + /locationauthorities/*/items/ + + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 7e350767-a7d7-4105-b1c8-934e3f8daa1a + locations + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 7e350767-a7d7-4105-b1c8-934e3f8daa1a + locations + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 689c4855-d032-4cef-8960-f42ff2994ef4 + acquisitions + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 689c4855-d032-4cef-8960-f42ff2994ef4 + acquisitions + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 92cfdc09-dd6a-45cd-a2c3-1de5cb1f336b + + /acquisitions/*/authorityrefs/ + + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 92cfdc09-dd6a-45cd-a2c3-1de5cb1f336b + + /acquisitions/*/authorityrefs/ + + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 754b4802-19b1-4185-a6fb-83ecadabff06 + relations + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 754b4802-19b1-4185-a6fb-83ecadabff06 + relations + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 628b4acf-bd52-4a77-824c-5b657da3608a + + relations/subject/*/type/*/object/* + + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 628b4acf-bd52-4a77-824c-5b657da3608a + + relations/subject/*/type/*/object/* + + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 7de123a3-8e10-4fa7-b8ae-74a684acd569 + accounts + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 7de123a3-8e10-4fa7-b8ae-74a684acd569 + accounts + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + cb5f541b-c592-4fb5-9e0a-c88dfc3f9301 + dimensions + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + cb5f541b-c592-4fb5-9e0a-c88dfc3f9301 + dimensions + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 80a53f0e-6571-4195-ad9f-18cc5ba65b0c + contacts + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 80a53f0e-6571-4195-ad9f-18cc5ba65b0c + contacts + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 90fee1ba-1706-4500-8222-17614b69b4cb + + /personauthorities/*/items/*/contacts + + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 90fee1ba-1706-4500-8222-17614b69b4cb + + /personauthorities/*/items/*/contacts + + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + f56cd470-75fb-4994-9172-2244e139c9db + + /orgauthorities/*/items/*/contacts + + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + f56cd470-75fb-4994-9172-2244e139c9db + + /orgauthorities/*/items/*/contacts + + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 47b4dd62-3247-4414-b19a-4624ba7c5228 + notes + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 47b4dd62-3247-4414-b19a-4624ba7c5228 + notes + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + c2aee301-5540-4e56-ad1f-03e5ce0d28a8 + authorization/roles + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + c2aee301-5540-4e56-ad1f-03e5ce0d28a8 + authorization/roles + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 1ad9339c-200e-4d0c-af7f-394d578a45ca + authorization/permissions + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 1ad9339c-200e-4d0c-af7f-394d578a45ca + authorization/permissions + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 3b4cf91b-3851-44ad-97c1-b23f3788d617 + authorization/permissions/permroles + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 3b4cf91b-3851-44ad-97c1-b23f3788d617 + authorization/permissions/permroles + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 417f1755-0645-4508-b9f1-f7380b897146 + + /authorization/permissions/*/permroles/ + + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 417f1755-0645-4508-b9f1-f7380b897146 + + /authorization/permissions/*/permroles/ + + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 7817cfa9-bdd5-4cf2-bc6b-e0ff102cd434 + accounts/accountroles + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 7817cfa9-bdd5-4cf2-bc6b-e0ff102cd434 + accounts/accountroles + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + fe176181-6e43-4525-8c5e-f43b16f7132e + + /accounts/*/accountroles/ + + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + fe176181-6e43-4525-8c5e-f43b16f7132e + + /accounts/*/accountroles/ + + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 4a7d9a48-2dc7-41ee-8af3-b2965eb25afb + authorization/roles/permroles + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + 4a7d9a48-2dc7-41ee-8af3-b2965eb25afb + authorization/roles/permroles + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + eac699a7-e863-4798-bb19-6718d6faa36c + + /authorization/roles/*/permroles/ + + + + 01b70ec2-e1f7-4700-91a4-0c425585031a + ROLE_TENANT_ADMINISTRATOR + + + 5addeec3-3206-43db-a164-9e529471cf91 + ROLE_TENANT_ADMINISTRATOR + + + + ROLE + + eac699a7-e863-4798-bb19-6718d6faa36c + + /authorization/roles/*/permroles/ + + + + 0 + ROLE_ADMINISTRATOR + + + + ROLE + + 497b6528-fe1e-4fec-89cf-7b17c499bbac + idgenerators + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + d5a2400d-f7fd-4eff-ab5e-fbc1457fce32 + id + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 62181818-1275-4861-9251-a9c172add296 + + /idgenerators/*/ids + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + eb6dff1c-d73d-4874-ac31-e379f246b09a + collectionobjects + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 0ce7c405-9c9d-424e-b72e-51d9b88db92c + + /collectionobjects/*/authorityrefs/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 37586285-faf9-4bc6-8518-2481d242a22c + intakes + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 22a4e320-9bbc-4922-9244-dc418d813e03 + + /intakes/*/authorityrefs/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + e31f96b3-c694-4981-8b05-6ed69c508161 + loansin + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 084aff5f-82b8-499c-ad77-4a169fd80138 + + /loansin/*/authorityrefs/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + e9b1bed8-1f2e-49dd-97be-2094688485ec + loansout + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + ff9c7503-8d0a-434c-8e16-7b6511211648 + + /loansout/*/authorityrefs/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + cabb3eda-b0e7-4255-b25c-193f79e191f2 + movements + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 1d7067d4-f229-4ea9-9fce-a661bd324ebf + + /movements/*/authorityrefs/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 37b90e54-ae34-49ed-b790-4da18077ceb7 + vocabularies + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 3dec89f9-179c-4537-bdd7-913ed431b97b + vocabularyitems + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + b98c1deb-f425-432e-b5e0-53612e6ef4d6 + + /vocabularies/*/items/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 6080c67c-32ab-4245-8b75-ad42bba6dcb6 + orgauthorities + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 5b4d0845-ef49-46eb-b451-13cdae375b73 + + /orgauthorities/*/items/*/authorityrefs/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 3242d512-b992-4721-8717-a88947d54afc + organizations + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 7ff3a896-37b9-4cd8-9011-eb168d192446 + + /orgauthorities/*/items/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 638f36e9-0f9c-4961-98ee-2e7fb710efae + + /orgauthorities/*/items/*/refobjs + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 809a5cba-379b-41fe-aaf5-d61301ec4fe7 + personauthorities + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + c69b057d-230a-466d-8038-e4b1324d41c2 + + /personauthorities/*/items/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + bcbb0602-6e00-4518-9960-3e36f9ac6094 + + /personauthorities/*/items/*/refobjs + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 801faebf-e2f2-4717-a525-fa4dfa63caf8 + persons + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + c0bef2ce-625f-4bea-b337-1269af2fdea8 + + /personauthorities/*/items/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + eba34232-cdac-42ad-9b88-2aa9492ec802 + locationauthorities + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + b9ae3884-8b18-467b-8caf-aaddfe87f968 + + /locationauthorities/*/items/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 6401c854-599a-4564-8097-d0ec9c58af3b + locations + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + e505a806-30fd-48e4-a1b0-3345291561a3 + acquisitions + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 236a919f-8e24-43bd-b3d5-f58640f24490 + + /acquisitions/*/authorityrefs/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 6701f7a9-5021-43e2-a5ca-62ccf523809c + relations + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 62ca97b4-15e6-4008-b656-c0d92126d6d8 + + relations/subject/*/type/*/object/* + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + dbc19509-8d72-4f1b-8532-9d81969c2f3a + accounts + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + cf88e815-051d-42ca-b443-5fbc3e3e8e65 + dimensions + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + bf943992-5e0f-48c8-848d-b024452b69c7 + contacts + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 89db9711-8197-48ec-9355-560263b01863 + + /personauthorities/*/items/*/contacts + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + ce012cfd-51a2-4f4b-a26e-8fcc9da79ee4 + + /orgauthorities/*/items/*/contacts + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 790576d7-7870-4989-8084-b2e7acfe568b + notes + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 63d9ee17-a98e-455a-9bc6-c8f4e3237850 + authorization/roles + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 14696853-077b-4396-a27d-7fdf229f2848 + authorization/permissions + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + b0b79cce-a76b-441d-ba79-eaea8793e1eb + authorization/permissions/permroles + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + b6e31c70-cf71-429a-b286-5c5f331dce8d + + /authorization/permissions/*/permroles/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 6c232793-eb79-4144-a7b6-a3a817777406 + accounts/accountroles + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 08714948-5e03-412b-8ad6-01cbf422dc67 + + /accounts/*/accountroles/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 7ca1de99-c776-4f7a-a111-474d97dc6a7d + authorization/roles/permroles + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + d4b21996-d23a-4311-9058-f9fab6295dcf + + /authorization/roles/*/permroles/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + f57b3714-0f15-49c6-8f9c-5d6546aed9fe + idgenerators + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + feb6a75f-e192-4a8f-9104-f66feabece26 + id + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 868d985f-ffed-4696-a617-633a4deff71d + + /idgenerators/*/ids + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + e0410bfd-8d52-4a84-a095-52dcc3dc0c3b + collectionobjects + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 6520ad4c-8684-4e00-878b-6df751a3c7bd + + /collectionobjects/*/authorityrefs/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + c193854c-7f5f-42ea-ada1-4a2b2e3e2ff1 + intakes + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 135ad3f1-723a-44b6-9944-7bc05b3f11bf + + /intakes/*/authorityrefs/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 9e1d52c2-655d-412d-a596-071bd1ebab23 + loansin + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 8232653e-e330-4761-b1af-b29feb4c15c9 + + /loansin/*/authorityrefs/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + d2673bf9-f3f5-419f-b317-a7b6198fe397 + loansout + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + cd7ffe2f-c0c2-4b56-87ed-4bb48816af01 + + /loansout/*/authorityrefs/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 82ac6bf4-2477-4e40-acef-86437520cb0c + movements + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 6740393d-3d35-4563-9a57-841b5d34d71e + + /movements/*/authorityrefs/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 8542668f-4e4c-41c2-abb3-49c5ae219e7e + vocabularies + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 18e6b306-3777-4a5e-a7a6-c22f3c5cb4a4 + vocabularyitems + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 67a1bca5-1ba1-48a9-8687-78fe37c9d1aa + + /vocabularies/*/items/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 318a9d0c-56c7-43fc-8813-bf365fe05a3e + orgauthorities + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + b40ab1e0-b3bc-4508-9876-4d6cf749c015 + + /orgauthorities/*/items/*/authorityrefs/ + + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 8cd27f28-e78d-426c-8de3-13c1c094e233 + organizations + + + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 + ROLE_TENANT_READER + + + + ROLE + + 5db30553-7d72-486a-bd40-81300ea9a2c4 + + /orgauthorities/*/items/ - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - 35cb8d8b-4309-4177-9c1c-157dbeb36f5d + 36f8ae51-bf94-4e83-8f32-d6d1e4c9bb8d /orgauthorities/*/items/*/refobjs - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - c890f437-7356-4bcd-b5b1-0e36b13e6358 + 478f0ebb-3a5f-489d-91b0-aa1f55a40a39 personauthorities - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - 778904e1-8b67-4ace-af24-8b756385ce80 + 5e3e98ed-61bb-41f5-abee-ad71c019f5bc /personauthorities/*/items/ - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - d531417d-b61b-471c-90ff-f21969f00e4c + ede401ec-4976-4304-a1ba-d79e87fc37eb /personauthorities/*/items/*/refobjs - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - 46581f00-1338-417d-9ff5-1250a8eb5e3c + 837272f1-c53e-4c92-b27d-3c669b054bbd persons - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - b707073a-6c2f-4bc5-b8b2-800be7cc17ec + bf13ee0d-09fa-4311-9ccf-9a353577fe8b /personauthorities/*/items/ - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - 88832e9b-0f62-406e-8a64-ea61d53153ed + e8679b1f-857a-463f-a1f3-4cc8c4103061 locationauthorities - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - 5b8c3d7d-f027-4675-9edf-1f7733ce360d + 8d56f355-564d-432a-8bda-82bebb55e55a /locationauthorities/*/items/ - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - a73bebb8-d109-4fbd-aa29-f71766eac61a + 39530279-1540-4768-8def-6a3b1cee4990 locations - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - 7d6dcff6-167f-4634-a35d-ec635e34fc60 + 06cca12d-2a18-4303-a972-e4ce3d094d30 acquisitions - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - 2007cc99-7208-4238-9792-bceb5df78733 + 65b4803b-8697-4669-995b-d1f5eba17a86 /acquisitions/*/authorityrefs/ - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - 94594f80-9ae2-4f51-b1f1-21e49bca2f5e + 1d87e6a3-d770-4f63-8e29-ecb312f91157 relations - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - e75b9dd6-737a-43cd-b847-c8effa3d6055 + 39ed698e-3474-4f7d-83d5-0105078cb21f relations/subject/*/type/*/object/* - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - da6da169-41d0-4f7f-a246-e7a9c96967de + d4b62feb-53f4-4aac-bc50-e30e5130ec98 accounts - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - 8b1fc4c6-1610-490d-8972-17ac113b36d9 + 0a047c4c-1c78-47fb-b951-70912934cab7 dimensions - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - 97455f0e-2064-4667-9bfe-540a05b571ae + 50ee8add-45ef-4643-8aa7-1d144d0d4cb9 contacts - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - 10655b0e-d168-4ac5-96fc-5ff88621aaee + b015754f-2d5d-454a-8403-b3e49f51cc5b /personauthorities/*/items/*/contacts - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - 1209a058-b37e-438d-906a-03bc49a4928c + 430e88e1-cae6-4dea-82bd-34b17fda7ae3 /orgauthorities/*/items/*/contacts - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - eb97ccdf-daaa-436e-bd40-f86e3d7dc8d0 + fc1db1b6-1fd9-439e-871d-bcb6f41bb5ca notes - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - 655fb068-d229-47e0-b636-48e53217d070 + beea8fd0-de64-40ab-a620-f8fb571e39b4 authorization/roles - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - 556204b7-df13-40fe-8185-ac4e9924a033 + 87eb9947-f5e7-47fd-8972-dc24cf9d2ae1 authorization/permissions - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - 3d5ecccd-37a5-4185-88b3-66aa1def43b5 + 38b681d4-1090-474a-addc-43b03f2fdd1b authorization/permissions/permroles - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - 049d792a-f1c7-42de-8d88-c09a1143340f + dd6497fb-e4af-4732-b39e-27c8f8cf5b89 /authorization/permissions/*/permroles/ - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - b85355db-2c33-4469-bb27-bf4fb1ac4039 + 538889df-13ce-4df5-a204-a0c58db6a544 accounts/accountroles - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - ce37cf6c-a550-49de-9bdf-0ede7cafb617 + 7f9ba507-8419-4227-86af-9819a568a56b /accounts/*/accountroles/ - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - e1af00a3-a7c9-441f-a48c-f9698f47298a + c3e42f4f-a2f5-4cd8-afb5-7872f218fa18 authorization/roles/permroles - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER ROLE - 8fc74578-d253-4eb7-a0e3-43bc70a88a62 + 17df84a4-d06d-4b57-bb75-15e84a04bf10 /authorization/roles/*/permroles/ - 25f537c9-a213-41de-97f0-18524d5f4eb2 + 5ef01b97-7fe0-4c8d-a3e9-a8db8f530ec6 + ROLE_TENANT_READER + + + 73eb01c2-fde2-46c3-8032-1803db242575 ROLE_TENANT_READER diff --git a/services/authorization-mgt/import/src/main/resources/import-data/import-permissions.xml b/services/authorization-mgt/import/src/main/resources/import-data/import-permissions.xml index 29cf9465a..2ceed9cc6 100644 --- a/services/authorization-mgt/import/src/main/resources/import-data/import-permissions.xml +++ b/services/authorization-mgt/import/src/main/resources/import-data/import-permissions.xml @@ -1,6 +1,6 @@ - + generated admin permission idgenerators @@ -19,10 +19,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.388 + 2 + 2010-06-07T16:22:53.559 - + generated admin permission id @@ -41,10 +41,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.390 + 2 + 2010-06-07T16:22:53.561 - + generated admin permission /idgenerators/*/ids @@ -65,10 +65,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.390 + 2 + 2010-06-07T16:22:53.561 - + generated admin permission collectionobjects @@ -87,10 +87,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.391 + 2 + 2010-06-07T16:22:53.561 - + generated admin permission /collectionobjects/*/authorityrefs/ @@ -111,10 +111,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.391 + 2 + 2010-06-07T16:22:53.562 - + generated admin permission intakes @@ -133,10 +133,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.391 + 2 + 2010-06-07T16:22:53.562 - + generated admin permission /intakes/*/authorityrefs/ @@ -157,10 +157,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.392 + 2 + 2010-06-07T16:22:53.562 - + generated admin permission loansin @@ -179,10 +179,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.392 + 2 + 2010-06-07T16:22:53.562 - + generated admin permission /loansin/*/authorityrefs/ @@ -203,10 +203,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.393 + 2 + 2010-06-07T16:22:53.563 - + generated admin permission loansout @@ -225,10 +225,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.393 + 2 + 2010-06-07T16:22:53.563 - + generated admin permission /loansout/*/authorityrefs/ @@ -249,10 +249,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.393 + 2 + 2010-06-07T16:22:53.564 - + generated admin permission movements @@ -271,10 +271,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.394 + 2 + 2010-06-07T16:22:53.564 - + generated admin permission /movements/*/authorityrefs/ @@ -295,10 +295,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.394 + 2 + 2010-06-07T16:22:53.565 - + generated admin permission vocabularies @@ -317,10 +317,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.395 + 2 + 2010-06-07T16:22:53.565 - + generated admin permission vocabularyitems @@ -339,10 +339,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.395 + 2 + 2010-06-07T16:22:53.565 - + generated admin permission /vocabularies/*/items/ @@ -363,10 +363,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.396 + 2 + 2010-06-07T16:22:53.566 - + generated admin permission orgauthorities @@ -385,10 +385,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.396 + 2 + 2010-06-07T16:22:53.566 - + generated admin permission /orgauthorities/*/items/*/authorityrefs/ @@ -409,10 +409,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.397 + 2 + 2010-06-07T16:22:53.566 - + generated admin permission organizations @@ -431,10 +431,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.397 + 2 + 2010-06-07T16:22:53.567 - + generated admin permission /orgauthorities/*/items/ @@ -455,10 +455,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.397 + 2 + 2010-06-07T16:22:53.567 - + generated admin permission /orgauthorities/*/items/*/refobjs @@ -479,10 +479,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.398 + 2 + 2010-06-07T16:22:53.567 - + generated admin permission personauthorities @@ -501,10 +501,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.398 + 2 + 2010-06-07T16:22:53.567 - + generated admin permission /personauthorities/*/items/ @@ -525,10 +525,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.398 + 2 + 2010-06-07T16:22:53.568 - + generated admin permission /personauthorities/*/items/*/refobjs @@ -549,10 +549,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.399 + 2 + 2010-06-07T16:22:53.568 - + generated admin permission persons @@ -571,10 +571,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.399 + 2 + 2010-06-07T16:22:53.568 - + generated admin permission /personauthorities/*/items/ @@ -595,10 +595,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.400 + 2 + 2010-06-07T16:22:53.568 - + generated admin permission locationauthorities @@ -617,10 +617,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.400 + 2 + 2010-06-07T16:22:53.569 - + generated admin permission /locationauthorities/*/items/ @@ -641,10 +641,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.401 + 2 + 2010-06-07T16:22:53.569 - + generated admin permission locations @@ -663,10 +663,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.401 + 2 + 2010-06-07T16:22:53.569 - + generated admin permission acquisitions @@ -685,10 +685,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.401 + 2 + 2010-06-07T16:22:53.570 - + generated admin permission /acquisitions/*/authorityrefs/ @@ -709,10 +709,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.402 + 2 + 2010-06-07T16:22:53.570 - + generated admin permission relations @@ -731,10 +731,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.402 + 2 + 2010-06-07T16:22:53.570 - + generated admin permission relations/subject/*/type/*/object/* @@ -755,10 +755,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.402 + 2 + 2010-06-07T16:22:53.571 - + generated admin permission accounts @@ -777,10 +777,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.403 + 2 + 2010-06-07T16:22:53.571 - + generated admin permission dimensions @@ -799,10 +799,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.403 + 2 + 2010-06-07T16:22:53.571 - + generated admin permission contacts @@ -821,10 +821,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.404 + 2 + 2010-06-07T16:22:53.571 - + generated admin permission /personauthorities/*/items/*/contacts @@ -845,10 +845,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.404 + 2 + 2010-06-07T16:22:53.574 - + generated admin permission /orgauthorities/*/items/*/contacts @@ -869,10 +869,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.404 + 2 + 2010-06-07T16:22:53.574 - + generated admin permission notes @@ -891,10 +891,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.405 + 2 + 2010-06-07T16:22:53.575 - + generated admin permission authorization/roles @@ -913,10 +913,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.405 + 2 + 2010-06-07T16:22:53.575 - + generated admin permission authorization/permissions @@ -935,10 +935,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.405 + 2 + 2010-06-07T16:22:53.575 - + generated admin permission authorization/permissions/permroles @@ -957,10 +957,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.406 + 2 + 2010-06-07T16:22:53.575 - + generated admin permission /authorization/permissions/*/permroles/ @@ -981,10 +981,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.406 + 2 + 2010-06-07T16:22:53.576 - + generated admin permission accounts/accountroles @@ -1003,10 +1003,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.407 + 2 + 2010-06-07T16:22:53.576 - + generated admin permission /accounts/*/accountroles/ @@ -1027,10 +1027,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.407 + 2 + 2010-06-07T16:22:53.576 - + generated admin permission authorization/roles/permroles @@ -1049,10 +1049,10 @@ SEARCH PERMIT - 1 - 2010-06-04T14:14:37.407 + 2 + 2010-06-07T16:22:53.577 - + generated admin permission /authorization/roles/*/permroles/ @@ -1073,10 +1073,1739 @@ SEARCH PERMIT + 2 + 2010-06-07T16:22:53.577 + + + generated admin permission + idgenerators + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.591 + + + generated admin permission + id + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.591 + + + generated admin permission + + /idgenerators/*/ids + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.591 + + + generated admin permission + collectionobjects + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.592 + + + generated admin permission + + /collectionobjects/*/authorityrefs/ + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.592 + + + generated admin permission + intakes + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.592 + + + generated admin permission + + /intakes/*/authorityrefs/ + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.593 + + + generated admin permission + loansin + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.593 + + + generated admin permission + + /loansin/*/authorityrefs/ + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.593 + + + generated admin permission + loansout + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT 1 - 2010-06-04T14:14:37.408 + 2010-06-07T16:22:53.594 + + + generated admin permission + + /loansout/*/authorityrefs/ + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.594 + + + generated admin permission + movements + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.594 + + + generated admin permission + + /movements/*/authorityrefs/ + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.594 + + + generated admin permission + vocabularies + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.595 + + + generated admin permission + vocabularyitems + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.595 + + + generated admin permission + + /vocabularies/*/items/ + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.595 + + + generated admin permission + orgauthorities + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.595 + + + generated admin permission + + /orgauthorities/*/items/*/authorityrefs/ + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.596 + + + generated admin permission + organizations + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.596 + + + generated admin permission + + /orgauthorities/*/items/ + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.596 + + + generated admin permission + + /orgauthorities/*/items/*/refobjs + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.596 + + + generated admin permission + personauthorities + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.597 + + + generated admin permission + + /personauthorities/*/items/ + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.597 + + + generated admin permission + + /personauthorities/*/items/*/refobjs + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.597 + + + generated admin permission + persons + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.597 + + + generated admin permission + + /personauthorities/*/items/ + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.598 + + + generated admin permission + locationauthorities + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.598 + + + generated admin permission + + /locationauthorities/*/items/ + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.598 + + + generated admin permission + locations + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.598 + + + generated admin permission + acquisitions + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.599 + + + generated admin permission + + /acquisitions/*/authorityrefs/ + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.599 + + + generated admin permission + relations + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.599 + + + generated admin permission + + relations/subject/*/type/*/object/* + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.599 + + + generated admin permission + accounts + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.600 + + + generated admin permission + dimensions + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.600 + + + generated admin permission + contacts + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.600 + + + generated admin permission + + /personauthorities/*/items/*/contacts + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.600 + + + generated admin permission + + /orgauthorities/*/items/*/contacts + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.600 + + + generated admin permission + notes + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.601 + + + generated admin permission + authorization/roles + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.601 + + + generated admin permission + authorization/permissions + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.601 + + + generated admin permission + authorization/permissions/permroles + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.601 + + + generated admin permission + + /authorization/permissions/*/permroles/ + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.602 + + + generated admin permission + accounts/accountroles + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.602 + + + generated admin permission + + /accounts/*/accountroles/ + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.602 + + + generated admin permission + authorization/roles/permroles + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.603 + + + generated admin permission + + /authorization/roles/*/permroles/ + + + CREATE + + + READ + + + UPDATE + + + DELETE + + + SEARCH + + PERMIT + 1 + 2010-06-07T16:22:53.603 + + + generated readonly permission + idgenerators + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.577 + + + generated readonly permission + id + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.578 + + + generated readonly permission + + /idgenerators/*/ids + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.578 + + + generated readonly permission + collectionobjects + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.578 + + + generated readonly permission + + /collectionobjects/*/authorityrefs/ + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.578 + + + generated readonly permission + intakes + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.579 + + + generated readonly permission + + /intakes/*/authorityrefs/ + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.579 + + + generated readonly permission + loansin + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.579 + + + generated readonly permission + + /loansin/*/authorityrefs/ + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.580 + + + generated readonly permission + loansout + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.580 + + + generated readonly permission + + /loansout/*/authorityrefs/ + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.580 + + + generated readonly permission + movements + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.580 + + + generated readonly permission + + /movements/*/authorityrefs/ + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.581 + + + generated readonly permission + vocabularies + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.581 + + + generated readonly permission + vocabularyitems + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.581 + + + generated readonly permission + + /vocabularies/*/items/ + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.582 + + + generated readonly permission + orgauthorities + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.582 + + + generated readonly permission + + /orgauthorities/*/items/*/authorityrefs/ + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.582 + + + generated readonly permission + organizations + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.582 + + + generated readonly permission + + /orgauthorities/*/items/ + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.583 + + + generated readonly permission + + /orgauthorities/*/items/*/refobjs + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.583 + + + generated readonly permission + personauthorities + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.583 + + + generated readonly permission + + /personauthorities/*/items/ + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.584 + + + generated readonly permission + + /personauthorities/*/items/*/refobjs + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.584 + + + generated readonly permission + persons + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.584 + + + generated readonly permission + + /personauthorities/*/items/ + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.584 + + + generated readonly permission + locationauthorities + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.585 + + + generated readonly permission + + /locationauthorities/*/items/ + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.585 + + + generated readonly permission + locations + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.585 + + + generated readonly permission + acquisitions + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.586 + + + generated readonly permission + + /acquisitions/*/authorityrefs/ + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.586 + + + generated readonly permission + relations + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.586 + + + generated readonly permission + + relations/subject/*/type/*/object/* + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.586 + + + generated readonly permission + accounts + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.587 + + + generated readonly permission + dimensions + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.587 + + + generated readonly permission + contacts + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.587 + + + generated readonly permission + + /personauthorities/*/items/*/contacts + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.588 + + + generated readonly permission + + /orgauthorities/*/items/*/contacts + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.588 + + + generated readonly permission + notes + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.588 + + + generated readonly permission + authorization/roles + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.588 + + + generated readonly permission + authorization/permissions + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.589 + + + generated readonly permission + authorization/permissions/permroles + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.589 + + + generated readonly permission + + /authorization/permissions/*/permroles/ + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.589 + + + generated readonly permission + accounts/accountroles + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.589 + + + generated readonly permission + + /accounts/*/accountroles/ + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.590 + + + generated readonly permission + authorization/roles/permroles + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.590 + + + generated readonly permission + + /authorization/roles/*/permroles/ + + + READ + + + SEARCH + + PERMIT + 2 + 2010-06-07T16:22:53.590 - + generated readonly permission idgenerators @@ -1087,9 +2816,9 @@ PERMIT 1 - 2010-06-04T14:14:37.408 + 2010-06-07T16:22:53.603 - + generated readonly permission id @@ -1100,9 +2829,9 @@ PERMIT 1 - 2010-06-04T14:14:37.408 + 2010-06-07T16:22:53.603 - + generated readonly permission /idgenerators/*/ids @@ -1115,9 +2844,9 @@ PERMIT 1 - 2010-06-04T14:14:37.409 + 2010-06-07T16:22:53.604 - + generated readonly permission collectionobjects @@ -1128,9 +2857,9 @@ PERMIT 1 - 2010-06-04T14:14:37.409 + 2010-06-07T16:22:53.604 - + generated readonly permission /collectionobjects/*/authorityrefs/ @@ -1143,9 +2872,9 @@ PERMIT 1 - 2010-06-04T14:14:37.410 + 2010-06-07T16:22:53.604 - + generated readonly permission intakes @@ -1156,9 +2885,9 @@ PERMIT 1 - 2010-06-04T14:14:37.410 + 2010-06-07T16:22:53.604 - + generated readonly permission /intakes/*/authorityrefs/ @@ -1171,9 +2900,9 @@ PERMIT 1 - 2010-06-04T14:14:37.410 + 2010-06-07T16:22:53.605 - + generated readonly permission loansin @@ -1184,9 +2913,9 @@ PERMIT 1 - 2010-06-04T14:14:37.411 + 2010-06-07T16:22:53.605 - + generated readonly permission /loansin/*/authorityrefs/ @@ -1199,9 +2928,9 @@ PERMIT 1 - 2010-06-04T14:14:37.411 + 2010-06-07T16:22:53.605 - + generated readonly permission loansout @@ -1212,9 +2941,9 @@ PERMIT 1 - 2010-06-04T14:14:37.411 + 2010-06-07T16:22:53.605 - + generated readonly permission /loansout/*/authorityrefs/ @@ -1227,9 +2956,9 @@ PERMIT 1 - 2010-06-04T14:14:37.412 + 2010-06-07T16:22:53.606 - + generated readonly permission movements @@ -1240,9 +2969,9 @@ PERMIT 1 - 2010-06-04T14:14:37.412 + 2010-06-07T16:22:53.606 - + generated readonly permission /movements/*/authorityrefs/ @@ -1255,9 +2984,9 @@ PERMIT 1 - 2010-06-04T14:14:37.412 + 2010-06-07T16:22:53.606 - + generated readonly permission vocabularies @@ -1268,9 +2997,9 @@ PERMIT 1 - 2010-06-04T14:14:37.413 + 2010-06-07T16:22:53.606 - + generated readonly permission vocabularyitems @@ -1281,9 +3010,9 @@ PERMIT 1 - 2010-06-04T14:14:37.413 + 2010-06-07T16:22:53.606 - + generated readonly permission /vocabularies/*/items/ @@ -1296,9 +3025,9 @@ PERMIT 1 - 2010-06-04T14:14:37.414 + 2010-06-07T16:22:53.607 - + generated readonly permission orgauthorities @@ -1309,9 +3038,9 @@ PERMIT 1 - 2010-06-04T14:14:37.414 + 2010-06-07T16:22:53.607 - + generated readonly permission /orgauthorities/*/items/*/authorityrefs/ @@ -1324,9 +3053,9 @@ PERMIT 1 - 2010-06-04T14:14:37.414 + 2010-06-07T16:22:53.607 - + generated readonly permission organizations @@ -1337,9 +3066,9 @@ PERMIT 1 - 2010-06-04T14:14:37.415 + 2010-06-07T16:22:53.608 - + generated readonly permission /orgauthorities/*/items/ @@ -1352,9 +3081,9 @@ PERMIT 1 - 2010-06-04T14:14:37.415 + 2010-06-07T16:22:53.608 - + generated readonly permission /orgauthorities/*/items/*/refobjs @@ -1367,9 +3096,9 @@ PERMIT 1 - 2010-06-04T14:14:37.415 + 2010-06-07T16:22:53.608 - + generated readonly permission personauthorities @@ -1380,9 +3109,9 @@ PERMIT 1 - 2010-06-04T14:14:37.416 + 2010-06-07T16:22:53.608 - + generated readonly permission /personauthorities/*/items/ @@ -1395,9 +3124,9 @@ PERMIT 1 - 2010-06-04T14:14:37.416 + 2010-06-07T16:22:53.608 - + generated readonly permission /personauthorities/*/items/*/refobjs @@ -1410,9 +3139,9 @@ PERMIT 1 - 2010-06-04T14:14:37.417 + 2010-06-07T16:22:53.609 - + generated readonly permission persons @@ -1423,9 +3152,9 @@ PERMIT 1 - 2010-06-04T14:14:37.417 + 2010-06-07T16:22:53.609 - + generated readonly permission /personauthorities/*/items/ @@ -1438,9 +3167,9 @@ PERMIT 1 - 2010-06-04T14:14:37.417 + 2010-06-07T16:22:53.609 - + generated readonly permission locationauthorities @@ -1451,9 +3180,9 @@ PERMIT 1 - 2010-06-04T14:14:37.418 + 2010-06-07T16:22:53.610 - + generated readonly permission /locationauthorities/*/items/ @@ -1466,9 +3195,9 @@ PERMIT 1 - 2010-06-04T14:14:37.418 + 2010-06-07T16:22:53.610 - + generated readonly permission locations @@ -1479,9 +3208,9 @@ PERMIT 1 - 2010-06-04T14:14:37.418 + 2010-06-07T16:22:53.610 - + generated readonly permission acquisitions @@ -1492,9 +3221,9 @@ PERMIT 1 - 2010-06-04T14:14:37.419 + 2010-06-07T16:22:53.610 - + generated readonly permission /acquisitions/*/authorityrefs/ @@ -1507,9 +3236,9 @@ PERMIT 1 - 2010-06-04T14:14:37.419 + 2010-06-07T16:22:53.611 - + generated readonly permission relations @@ -1520,9 +3249,9 @@ PERMIT 1 - 2010-06-04T14:14:37.419 + 2010-06-07T16:22:53.611 - + generated readonly permission relations/subject/*/type/*/object/* @@ -1535,9 +3264,9 @@ PERMIT 1 - 2010-06-04T14:14:37.420 + 2010-06-07T16:22:53.611 - + generated readonly permission accounts @@ -1548,9 +3277,9 @@ PERMIT 1 - 2010-06-04T14:14:37.420 + 2010-06-07T16:22:53.611 - + generated readonly permission dimensions @@ -1561,9 +3290,9 @@ PERMIT 1 - 2010-06-04T14:14:37.421 + 2010-06-07T16:22:53.612 - + generated readonly permission contacts @@ -1574,9 +3303,9 @@ PERMIT 1 - 2010-06-04T14:14:37.421 + 2010-06-07T16:22:53.612 - + generated readonly permission /personauthorities/*/items/*/contacts @@ -1589,9 +3318,9 @@ PERMIT 1 - 2010-06-04T14:14:37.421 + 2010-06-07T16:22:53.613 - + generated readonly permission /orgauthorities/*/items/*/contacts @@ -1604,9 +3333,9 @@ PERMIT 1 - 2010-06-04T14:14:37.422 + 2010-06-07T16:22:53.613 - + generated readonly permission notes @@ -1617,9 +3346,9 @@ PERMIT 1 - 2010-06-04T14:14:37.422 + 2010-06-07T16:22:53.613 - + generated readonly permission authorization/roles @@ -1630,9 +3359,9 @@ PERMIT 1 - 2010-06-04T14:14:37.422 + 2010-06-07T16:22:53.613 - + generated readonly permission authorization/permissions @@ -1643,9 +3372,9 @@ PERMIT 1 - 2010-06-04T14:14:37.423 + 2010-06-07T16:22:53.614 - + generated readonly permission authorization/permissions/permroles @@ -1656,9 +3385,9 @@ PERMIT 1 - 2010-06-04T14:14:37.423 + 2010-06-07T16:22:53.614 - + generated readonly permission /authorization/permissions/*/permroles/ @@ -1671,9 +3400,9 @@ PERMIT 1 - 2010-06-04T14:14:37.423 + 2010-06-07T16:22:53.614 - + generated readonly permission accounts/accountroles @@ -1684,9 +3413,9 @@ PERMIT 1 - 2010-06-04T14:14:37.424 + 2010-06-07T16:22:53.614 - + generated readonly permission /accounts/*/accountroles/ @@ -1699,9 +3428,9 @@ PERMIT 1 - 2010-06-04T14:14:37.424 + 2010-06-07T16:22:53.615 - + generated readonly permission authorization/roles/permroles @@ -1712,9 +3441,9 @@ PERMIT 1 - 2010-06-04T14:14:37.424 + 2010-06-07T16:22:53.615 - + generated readonly permission /authorization/roles/*/permroles/ @@ -1727,6 +3456,6 @@ PERMIT 1 - 2010-06-04T14:14:37.424 + 2010-06-07T16:22:53.615 diff --git a/services/authorization-mgt/import/src/main/resources/import-data/import-roles.xml b/services/authorization-mgt/import/src/main/resources/import-data/import-roles.xml index 6f91dec3c..d09c502d8 100644 --- a/services/authorization-mgt/import/src/main/resources/import-data/import-roles.xml +++ b/services/authorization-mgt/import/src/main/resources/import-data/import-roles.xml @@ -1,15 +1,27 @@ - + + ROLE_TENANT_ADMINISTRATOR + generated tenant admin role + 2 + 2010-06-07T16:22:53.545 + + ROLE_TENANT_ADMINISTRATOR generated tenant admin role 1 - 2010-06-04T14:14:37.372 + 2010-06-07T16:22:53.558 + + + ROLE_TENANT_READER + generated tenant read only role + 2 + 2010-06-07T16:22:53.557 - + ROLE_TENANT_READER generated tenant read only role 1 - 2010-06-04T14:14:37.386 + 2010-06-07T16:22:53.558 diff --git a/services/authorization-mgt/import/src/main/resources/log4j.properties b/services/authorization-mgt/import/src/main/resources/log4j.properties index 60709b206..9963ddb4c 100644 --- a/services/authorization-mgt/import/src/main/resources/log4j.properties +++ b/services/authorization-mgt/import/src/main/resources/log4j.properties @@ -18,9 +18,11 @@ log4j.appender.R.layout.ConversionPattern=%d %-5p [%t] [%c:%L] %m%n #packages log4j.logger.org.collectionspace=DEBUG +log4j.logger.org.collectionspace.services.authorization.spring=INFO log4j.logger.org.apache=INFO log4j.logger.httpclient=INFO log4j.logger.org.jboss.resteasy=INFO +log4j.logger.hibernate=WARN log4j.logger.org.hibernate=WARN log4j.logger.org.hibernate.cfg=WARN log4j.logger.org.springframework=INFO diff --git a/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/storage/PermissionDocumentHandler.java b/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/storage/PermissionDocumentHandler.java index fd80d8cd6..d2b16e465 100644 --- a/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/storage/PermissionDocumentHandler.java +++ b/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/storage/PermissionDocumentHandler.java @@ -55,9 +55,7 @@ public class PermissionDocumentHandler String id = UUID.randomUUID().toString(); Permission permission = wrapDoc.getWrappedObject(); permission.setCsid(id); - //FIXME: if admin updating the permission is a CS admin rather than - //the tenant admin, tenant id should be retrieved from the request - permission.setTenantId(getServiceContext().getTenantId()); + setTenant(permission); } @Override @@ -201,4 +199,11 @@ public class PermissionDocumentHandler private void sanitize(Permission permission) { permission.setTenantId(null); } + + private void setTenant(Permission permission) { + //set tenant only if not available from input + if (permission.getTenantId() == null || permission.getTenantId().isEmpty()) { + permission.setTenantId(getServiceContext().getTenantId()); + } + } } diff --git a/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/storage/RoleDocumentHandler.java b/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/storage/RoleDocumentHandler.java index 871e24327..0171d0325 100644 --- a/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/storage/RoleDocumentHandler.java +++ b/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/storage/RoleDocumentHandler.java @@ -56,9 +56,7 @@ public class RoleDocumentHandler Role role = wrapDoc.getWrappedObject(); role.setRoleName(fixRoleName(role.getRoleName())); role.setCsid(id); - //FIXME: if admin updating the role is a CS admin rather than - //the tenant admin, tenant id should be retrieved from the request - role.setTenantId(getServiceContext().getTenantId()); + setTenant(role); } @Override @@ -193,4 +191,11 @@ public class RoleDocumentHandler } return roleName; } + + private void setTenant(Role role) { + //set tenant only if not available from input + if (role.getTenantId() == null || role.getTenantId().isEmpty()) { + role.setTenantId(getServiceContext().getTenantId()); + } + } } diff --git a/services/authorization/pstore/src/main/resources/db/mysql/test_authorization.sql b/services/authorization/pstore/src/main/resources/db/mysql/test_authorization.sql index 8648e1fd4..226cf5f27 100644 --- a/services/authorization/pstore/src/main/resources/db/mysql/test_authorization.sql +++ b/services/authorization/pstore/src/main/resources/db/mysql/test_authorization.sql @@ -5,15 +5,17 @@ -- use cspace; -insert into `roles` (`csid`, `rolename`, `rolegroup`, `created_at`, `tenant_id`) values ('1', 'ROLE_ADMINISTRATOR', 'CollectionSpace Administrator', '2010-02-17 16:31:48', '0'); -insert into `roles` (`csid`, `rolename`, `rolegroup`, `created_at`, `tenant_id`) values ('2', 'ROLE_USERS', 'a role for security testing', '2010-02-17 16:31:48', '1'); +insert into `roles` (`csid`, `rolename`, `rolegroup`, `created_at`, `tenant_id`) values ('1', 'ROLE_ADMINISTRATOR', 'CollectionSpace Administrator', now(), '0'); -insert into `accounts_roles`(`account_id`, `user_id`, `role_id`, `role_name`, `created_at`) values ('eeca40d7-dc77-4cc5-b489-16a53c75525a', 'test', '1', 'ROLE_ADMINISTRATOR', '2010-02-17 16:31:48'); -insert into `accounts_roles`(`account_id`, `user_id`, `role_id`, `role_name`, `created_at`) values ('eeca40d7-dc77-4cc5-b489-16a53c75525a', 'test', '2', 'ROLE_USERS', '2010-02-17 16:31:48'); +-- for default test account -- +insert into `accounts_roles`(`account_id`, `user_id`, `role_id`, `role_name`, `created_at`) values ('eeca40d7-dc77-4cc5-b489-16a53c75525a', 'test', '1', 'ROLE_ADMINISTRATOR', now()); -- Additional account introduced during integration on release 0.6, and currently relied upon by the Application Layer. -insert into `accounts_roles`(`account_id`, `user_id`, `role_id`, `role_name`, `created_at`) values ('251f98f3-0292-4f3e-aa95-455314050e1b', 'test@collectionspace.org', '1', 'ROLE_ADMINISTRATOR', '2010-05-03 12:35:00'); +insert into `accounts_roles`(`account_id`, `user_id`, `role_id`, `role_name`, `created_at`) values ('251f98f3-0292-4f3e-aa95-455314050e1b', 'test@collectionspace.org', '1', 'ROLE_ADMINISTRATOR', now()); + +-- test account for pahma -- +insert into `accounts_roles`(`account_id`, `user_id`, `role_id`, `role_name`, `created_at`) values ('ff2b4440-ed0d-4892-adb4-b6999eba3ae7', 'test-pahma', '1', 'ROLE_ADMINISTRATOR', now()); -- todo: barney is created in security test but accountrole is not yet created there, so add fake account id -insert into `accounts_roles`(`account_id`, `user_id`, `role_id`, `role_name`, `created_at`) values ('1', 'barney', '2', 'ROLE_USERS', '2010-02-17 16:31:48'); +insert into `accounts_roles`(`account_id`, `user_id`, `role_id`, `role_name`, `created_at`) values ('1', 'barney', '2', 'ROLE_USERS', now()); diff --git a/services/client/src/main/java/org/collectionspace/services/client/AbstractServiceClientImpl.java b/services/client/src/main/java/org/collectionspace/services/client/AbstractServiceClientImpl.java index 1b5b5c369..d90f305b8 100644 --- a/services/client/src/main/java/org/collectionspace/services/client/AbstractServiceClientImpl.java +++ b/services/client/src/main/java/org/collectionspace/services/client/AbstractServiceClientImpl.java @@ -232,6 +232,10 @@ public abstract class AbstractServiceClientImpl implements if (password != null && !"".equals(password)) { properties.setProperty(PASSWORD_PROPERTY, password); } + String tenant = System.getProperty(TENANT_PROPERTY); + if (tenant != null && !"".equals(tenant)) { + properties.setProperty(TENANT_PROPERTY, tenant); + } if (logger.isDebugEnabled()) { printProperties(); } diff --git a/services/client/src/main/java/org/collectionspace/services/client/CollectionSpaceClient.java b/services/client/src/main/java/org/collectionspace/services/client/CollectionSpaceClient.java index d17653618..3932f5097 100644 --- a/services/client/src/main/java/org/collectionspace/services/client/CollectionSpaceClient.java +++ b/services/client/src/main/java/org/collectionspace/services/client/CollectionSpaceClient.java @@ -33,16 +33,18 @@ import org.jboss.resteasy.client.ClientResponse; */ public interface CollectionSpaceClient { - /** The AUT h_ property. */ + /** The AUTH property. */ String AUTH_PROPERTY = "cspace.auth"; - /** The PASSWOR d_ property. */ + /** The PASSWORD property. */ String PASSWORD_PROPERTY = "cspace.password"; - /** The SS l_ property. */ + /** The SSL property. */ String SSL_PROPERTY = "cspace.ssl"; - /** The UR l_ property. */ + /** The URL property. */ String URL_PROPERTY = "cspace.url"; - /** The USE r_ property. */ + /** The USER property. */ String USER_PROPERTY = "cspace.user"; + /** The tenant property */ + String TENANT_PROPERTY = "cspace.tenant"; /** * Gets the proxy. @@ -147,8 +149,8 @@ public interface CollectionSpaceClient { * @return the client response */ public ClientResponse readList(String pageSize, - String pageNumber); - + String pageNumber); + /** * Delete. * @@ -156,5 +158,4 @@ public interface CollectionSpaceClient { * @return the client response */ public ClientResponse delete(String csid); - } diff --git a/services/client/src/main/resources/collectionspace-client.properties b/services/client/src/main/resources/collectionspace-client.properties index 28b7c103e..96bbe181d 100644 --- a/services/client/src/main/resources/collectionspace-client.properties +++ b/services/client/src/main/resources/collectionspace-client.properties @@ -2,5 +2,9 @@ cspace.url=http://localhost:8180/cspace-services/ cspace.ssl=false cspace.auth=true +# default user cspace.user=test -cspace.password=test \ No newline at end of file +#cspace.user=test-pahma +cspace.password=test +# default tenant +cspace.tenant=1 \ No newline at end of file diff --git a/services/common/src/main/config/services/service-config.xml b/services/common/src/main/config/services/service-config.xml index 910d50fa4..06b543238 100644 --- a/services/common/src/main/config/services/service-config.xml +++ b/services/common/src/main/config/services/service-config.xml @@ -10,9 +10,9 @@ --> + xmlns:svc='http://collectionspace.org/services/common' + xmlns:types='http://collectionspace.org/services/common/types' + xsi:schemaLocation='http://collectionspace.org/services/common ../resources/common.xsd'> @@ -24,9 +24,9 @@ Administrator java org.collectionspace.services.nuxeo.client.java.RepositoryJavaClientImpl - - pageSizeDefault40 - + + pageSizeDefault40 + diff --git a/services/common/src/main/config/services/tenant-bindings.xml b/services/common/src/main/config/services/tenant-bindings.xml index f4f82470b..53834aef3 100644 --- a/services/common/src/main/config/services/tenant-bindings.xml +++ b/services/common/src/main/config/services/tenant-bindings.xml @@ -12,7 +12,8 @@ > + id="1" name="movingimage.us" displayName="Museum of Moving Images" version="0.1"> + @@ -32,9 +33,9 @@ /collectionobjects/*/authorityrefs/ - - nuxeo-java - + + default-domain + org.collectionspace.services.collectionobject.nuxeo.CollectionObjectDocumentModelHandler @@ -93,9 +94,9 @@ /intakes/*/authorityrefs/ - - nuxeo-java - + + default-domain + org.collectionspace.services.intake.nuxeo.IntakeDocumentModelHandler @@ -146,9 +147,9 @@ /loansin/*/authorityrefs/ - - nuxeo-java - + + default-domain + org.collectionspace.services.loanin.nuxeo.LoaninDocumentModelHandler @@ -197,9 +198,9 @@ /loansout/*/authorityrefs/ - - nuxeo-java - + + default-domain + org.collectionspace.services.loanout.nuxeo.LoanoutDocumentModelHandler @@ -243,9 +244,9 @@ /movements/*/authorityrefs/ - - nuxeo-java - + + default-domain + org.collectionspace.services.movement.nuxeo.MovementDocumentModelHandler @@ -286,9 +287,9 @@ - - nuxeo-java - + + default-domain + org.collectionspace.services.vocabulary.nuxeo.VocabularyDocumentModelHandler @@ -327,9 +328,9 @@ /vocabularies/*/items/ - - nuxeo-java - + + default-domain + org.collectionspace.services.vocabulary.nuxeo.VocabularyItemDocumentModelHandler @@ -367,9 +368,9 @@ /orgauthorities/*/items/*/authorityrefs/ - - nuxeo-java - + + default-domain + org.collectionspace.services.organization.nuxeo.OrgAuthorityDocumentModelHandler @@ -410,9 +411,9 @@ /orgauthorities/*/items/*/refObjs - - nuxeo-java - + + default-domain + org.collectionspace.services.organization.nuxeo.OrganizationDocumentModelHandler @@ -457,9 +458,9 @@ /personauthorities/*/items/*/refObjs - - nuxeo-java - + + default-domain + org.collectionspace.services.person.nuxeo.PersonAuthorityDocumentModelHandler @@ -497,9 +498,9 @@ /personauthorities/*/items/ - - nuxeo-java - + + default-domain + org.collectionspace.services.person.nuxeo.PersonDocumentModelHandler @@ -537,9 +538,9 @@ /locationauthorities/*/items/ - - nuxeo-java - + + default-domain + org.collectionspace.services.location.nuxeo.LocationAuthorityDocumentModelHandler @@ -573,9 +574,9 @@ Repository workspace so we have to configure that. --> - - nuxeo-java - + + default-domain + org.collectionspace.services.location.nuxeo.LocationDocumentModelHandler @@ -613,9 +614,9 @@ /acquisitions/*/authorityrefs/ - - nuxeo-java - + + default-domain + org.collectionspace.services.acquisition.nuxeo.AcquisitionDocumentModelHandler @@ -664,9 +665,9 @@ relations/subject/*/type/*/object/* - - nuxeo-java - + + default-domain + org.collectionspace.services.relation.nuxeo.RelationDocumentModelHandler @@ -737,9 +738,9 @@ - - nuxeo-java - + + default-domain + org.collectionspace.services.dimension.nuxeo.DimensionDocumentModelHandler @@ -777,9 +778,9 @@ /orgauthorities/*/items/*/contacts - - nuxeo-java - + + default-domain + org.collectionspace.services.contact.nuxeo.ContactDocumentModelHandler @@ -810,9 +811,9 @@ - - nuxeo-java - + + default-domain + org.collectionspace.services.note.nuxeo.NoteDocumentModelHandler @@ -1028,4 +1029,1026 @@ + + + + + + + + + + + + + + + + /idgenerators/*/ids + + + + + + + /collectionobjects/*/authorityrefs/ + + + pahma-domain + + + org.collectionspace.services.collectionobject.nuxeo.CollectionObjectDocumentModelHandler + + + org.collectionspace.services.collectionobject.nuxeo.CollectionObjectValidatorHandler + + + objectNamePropertyobjectName + objectNumberPropertyobjectNumber + + + + + + + + + + + + authRefcontentOrganization + authRefcontentPeople + authRefcontentPerson + authRefinscriber + + + + + + + + + + + + + + + + + + + + /intakes/*/authorityrefs/ + + + pahma-domain + + + org.collectionspace.services.intake.nuxeo.IntakeDocumentModelHandler + + + org.collectionspace.services.intake.nuxeo.IntakeValidatorHandler + + + + objectNumberPropertyentryNumber + + + + + + + + + + + authRefcurrentOwner + authRefdepositor + authRefconditionCheckAssesor + authRefinsurer + authReffieldCollector + authRefvaluer + + + + + + + + + + + + + + /loansin/*/authorityrefs/ + + + pahma-domain + + + org.collectionspace.services.loanin.nuxeo.LoaninDocumentModelHandler + + + org.collectionspace.services.loanin.nuxeo.LoaninValidatorHandler + + + + objectNumberPropertyloanInNumber + + + + + + + + + + + + authReflendersAuthorizer + authReflendersContact + authRefloanInContact + + + + + + + + + + + + + + /loansout/*/authorityrefs/ + + + pahma-domain + + + org.collectionspace.services.loanout.nuxeo.LoanoutDocumentModelHandler + + + org.collectionspace.services.loanout.nuxeo.LoanoutValidatorHandler + + + + + + + + + + + authRefborrower + authRefborrowersContact + authReflendersAuthorizer + authReflendersContact + + + + + + + + + + + + + + /movements/*/authorityrefs/ + + + pahma-domain + + + org.collectionspace.services.movement.nuxeo.MovementDocumentModelHandler + + + org.collectionspace.services.movement.nuxeo.MovementValidatorHandler + + + + + + + + + + + authRefcurrentLocation + authRefnormalLocation + authRefmovementContact + + + + + + + + + + + + + + + pahma-domain + + + org.collectionspace.services.vocabulary.nuxeo.VocabularyDocumentModelHandler + + + + + + + + + + + + + + + + + + + + + + /vocabularies/*/items/ + + + pahma-domain + + + org.collectionspace.services.vocabulary.nuxeo.VocabularyItemDocumentModelHandler + + + org.collectionspace.services.vocabulary.nuxeo.VocabularyItemValidatorHandler + + + + + + + + + + + + + + + + + + + + + + /orgauthorities/*/items/*/authorityrefs/ + + + pahma-domain + + + org.collectionspace.services.organization.nuxeo.OrgAuthorityDocumentModelHandler + + + + + + + + + + + + + + + + + + + + + + /orgauthorities/*/items/ + + + /orgauthorities/*/items/*/refObjs + + + pahma-domain + + + org.collectionspace.services.organization.nuxeo.OrganizationDocumentModelHandler + + + org.collectionspace.services.organization.nuxeo.OrganizationValidatorHandler + + + + + + + + + + + authRefcontactName + + + + + + + + + + + + + + + /personauthorities/*/items/ + + + /personauthorities/*/items/*/refObjs + + + pahma-domain + + + org.collectionspace.services.person.nuxeo.PersonAuthorityDocumentModelHandler + + + + + + + + + + + + + + + + + + + + + + /personauthorities/*/items/ + + + pahma-domain + + + org.collectionspace.services.person.nuxeo.PersonDocumentModelHandler + + + org.collectionspace.services.person.nuxeo.PersonValidatorHandler + + + + + + + + + + + + + + + + + + + + + + /locationauthorities/*/items/ + + + pahma-domain + + + org.collectionspace.services.location.nuxeo.LocationAuthorityDocumentModelHandler + + + + + + + + + + + + + + + + + + + + + pahma-domain + + + org.collectionspace.services.location.nuxeo.LocationDocumentModelHandler + + + org.collectionspace.services.location.nuxeo.LocationValidatorHandler + + + + + + + + + + + + + + + + + + + + + + /acquisitions/*/authorityrefs/ + + + pahma-domain + + + org.collectionspace.services.acquisition.nuxeo.AcquisitionDocumentModelHandler + + + org.collectionspace.services.acquisition.nuxeo.AcquisitionValidatorHandler + + + + objectNumberPropertyacquisitionReferenceNumber + + + + + + + + + + + authRefacquisitionAuthorizer + authRefacquisitionFundingSource + + authReffieldCollector + + + + + + + + + + + + ' + + relations/subject/*/type/*/object/* + + + pahma-domain + + + org.collectionspace.services.relation.nuxeo.RelationDocumentModelHandler + + + org.collectionspace.services.relation.nuxeo.RelationValidatorHandler + + + + + + + + + + + + + + + + + + + + + + + org.collectionspace.services.account.storage.AccountDocumentHandler + + + org.collectionspace.services.account.storage.AccountValidatorHandler + + + + + + + + + + + + + + + + + + + + + + + pahma-domain + + + org.collectionspace.services.dimension.nuxeo.DimensionDocumentModelHandler + + + + + + + + + + + + + + + + + + + + + + /personauthorities/*/items/*/contacts + + + /orgauthorities/*/items/*/contacts + + + pahma-domain + + + org.collectionspace.services.contact.nuxeo.ContactDocumentModelHandler + + + + + + + + + + + + + + + + + + + + + pahma-domain + + + org.collectionspace.services.note.nuxeo.NoteDocumentModelHandler + + + + + + + + + + + + + + + + + + + + + + + org.collectionspace.services.authorization.storage.RoleDocumentHandler + + + org.collectionspace.services.authorization.storage.RoleValidatorHandler + + + + + + + + + + + + + + + + + + + + + + + org.collectionspace.services.authorization.storage.PermissionDocumentHandler + + + org.collectionspace.services.authorization.storage.PermissionValidatorHandler + + + + + + + + + + + + + + + + + + + + + + + + /authorization/permissions/*/permroles/ + + + org.collectionspace.services.authorization.storage.PermissionRoleDocumentHandler + + + + + + + + + + + + + + + + + + + + + + + /accounts/*/accountroles/ + + + org.collectionspace.services.account.storage.AccountRoleDocumentHandler + + + + + + + + + + + + + + + + + + + + + + + + + /authorization/roles/*/permroles/ + + + org.collectionspace.services.authorization.storage.PermissionRoleDocumentHandler + + + + + + + + + + + + + + + + + + + + + diff --git a/services/common/src/main/java/org/collectionspace/services/common/ServiceMain.java b/services/common/src/main/java/org/collectionspace/services/common/ServiceMain.java index 186812191..f76dbb9d4 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/ServiceMain.java +++ b/services/common/src/main/java/org/collectionspace/services/common/ServiceMain.java @@ -114,7 +114,7 @@ public class ServiceMain { //all configs are read, connector is initialized, retrieve workspaceids Hashtable tenantBindings = getTenantBindingConfigReader().getTenantBindings(); - TenantRepository.get().retrieveAllWorkspaceIds(tenantBindings); + TenantRepository.get().setup(tenantBindings); } /** diff --git a/services/common/src/main/java/org/collectionspace/services/common/config/TenantBindingConfigReaderImpl.java b/services/common/src/main/java/org/collectionspace/services/common/config/TenantBindingConfigReaderImpl.java index 38bd41569..8c0d9d10e 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/config/TenantBindingConfigReaderImpl.java +++ b/services/common/src/main/java/org/collectionspace/services/common/config/TenantBindingConfigReaderImpl.java @@ -29,6 +29,7 @@ import java.util.Hashtable; import java.util.List; import org.collectionspace.services.common.service.ServiceBindingType; +import org.collectionspace.services.common.tenant.RepositoryDomainType; import org.collectionspace.services.common.tenant.TenantBindingType; import org.collectionspace.services.common.tenant.TenantBindingConfig; import org.collectionspace.services.common.types.PropertyItemType; @@ -50,6 +51,9 @@ public class TenantBindingConfigReaderImpl //tenant id, tenant binding private Hashtable tenantBindings = new Hashtable(); + //repository domains + private Hashtable domains = + new Hashtable(); //tenant-qualified servicename, service binding private Hashtable serviceBindings = new Hashtable(); @@ -83,6 +87,7 @@ public class TenantBindingConfigReaderImpl tenantBindingConfig = (TenantBindingConfig) parse(configFile, TenantBindingConfig.class); for (TenantBindingType tenantBinding : tenantBindingConfig.getTenantBinding()) { tenantBindings.put(tenantBinding.getId(), tenantBinding); + readDomains(tenantBinding); readServiceBindings(tenantBinding); if (logger.isDebugEnabled()) { logger.debug("read() added tenant id=" + tenantBinding.getId() @@ -91,6 +96,12 @@ public class TenantBindingConfigReaderImpl } } + private void readDomains(TenantBindingType tenantBinding) throws Exception { + for (RepositoryDomainType domain : tenantBinding.getRepositoryDomain()) { + domains.put(domain.getName(), domain); + } + } + private void readServiceBindings(TenantBindingType tenantBinding) throws Exception { for (ServiceBindingType serviceBinding : tenantBinding.getServiceBindings()) { String key = getTenantQualifiedServiceName(tenantBinding.getId(), @@ -127,6 +138,38 @@ public class TenantBindingConfigReaderImpl return tenantBindings.get(tenantId); } + /** + * getRepositoryDomain gets repository domain configuration for the given name + * @param domainName + * @return + */ + public RepositoryDomainType getRepositoryDomain(String domainName) { + return domains.get(domainName.trim()); + } + + /** + * getRepositoryDomain gets repository domain configuration for the given service + * and given tenant id + * @param tenantId + * @param serviceName + * @return + */ + public RepositoryDomainType getRepositoryDomain(String tenantId, String serviceName) { + ServiceBindingType serviceBinding = getServiceBinding(tenantId, serviceName); + if (serviceBinding == null) { + throw new IllegalArgumentException("no service binding found for " + serviceName + + " of tenant with id=" + tenantId); + } + if (serviceBinding.getRepositoryDomain() == null) { + if (logger.isDebugEnabled()) { + logger.debug("No repository domain configured for " + serviceName + + " of tenant with id=" + tenantId); + } + return null; + } + return domains.get(serviceBinding.getRepositoryDomain().trim()); + } + /** * getServiceBinding gets service binding for given tenant for a given service * @param tenantId diff --git a/services/common/src/main/java/org/collectionspace/services/common/context/AbstractServiceContextImpl.java b/services/common/src/main/java/org/collectionspace/services/common/context/AbstractServiceContextImpl.java index 90b49250a..54eeb9ece 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/context/AbstractServiceContextImpl.java +++ b/services/common/src/main/java/org/collectionspace/services/common/context/AbstractServiceContextImpl.java @@ -41,6 +41,7 @@ import org.collectionspace.services.common.security.SecurityContextImpl; import org.collectionspace.services.common.security.UnauthorizedException; import org.collectionspace.services.common.service.ObjectPartType; import org.collectionspace.services.common.service.ServiceBindingType; +import org.collectionspace.services.common.tenant.RepositoryDomainType; import org.collectionspace.services.common.tenant.TenantBindingType; import org.collectionspace.services.common.types.PropertyItemType; import org.collectionspace.services.common.types.PropertyType; @@ -78,6 +79,8 @@ public abstract class AbstractServiceContextImpl private ServiceBindingType serviceBinding; /** The tenant binding. */ private TenantBindingType tenantBinding; + /** repository domain used by the service */ + private RepositoryDomainType repositoryDomain; /** The override document type. */ private String overrideDocumentType = null; /** The val handlers. */ @@ -91,9 +94,8 @@ public abstract class AbstractServiceContextImpl * Instantiates a new abstract service context impl. */ private AbstractServiceContextImpl() { - // private constructor for singleton pattern - } - + // private constructor for singleton pattern + } // request query params /** The query params. */ private MultivaluedMap queryParams; @@ -135,6 +137,13 @@ public abstract class AbstractServiceContextImpl logger.debug("tenantId=" + tenantId + " service binding=" + serviceBinding.getName()); } + repositoryDomain = tReader.getRepositoryDomain(tenantId, serviceName); + if (repositoryDomain != null) { + if (logger.isDebugEnabled()) { + logger.debug("tenantId=" + tenantId + + " repository doamin=" + repositoryDomain.getName()); + } + } } /* (non-Javadoc) @@ -243,10 +252,10 @@ public abstract class AbstractServiceContextImpl */ @Override public String getRepositoryClientName() { - if (serviceBinding.getRepositoryClient() == null) { + if (repositoryDomain == null) { return null; } - return serviceBinding.getRepositoryClient().trim(); + return repositoryDomain.getRepositoryClient(); } /* (non-Javadoc) @@ -263,7 +272,10 @@ public abstract class AbstractServiceContextImpl */ @Override public String getRepositoryDomainName() { - return tenantBinding.getRepositoryDomain(); + if (repositoryDomain == null) { + return null; + } + return repositoryDomain.getName(); } /* (non-Javadoc) @@ -523,7 +535,9 @@ public abstract class AbstractServiceContextImpl msg.append("tenant id=" + tenantBinding.getId() + " "); msg.append("tenant name=" + tenantBinding.getName() + " "); msg.append(tenantBinding.getDisplayName() + " "); - msg.append("tenant repository domain=" + tenantBinding.getRepositoryDomain()); + if (repositoryDomain != null) { + msg.append("tenant repository domain=" + repositoryDomain.getName()); + } for (Map.Entry entry : properties.entrySet()) { msg.append("property name=" + entry.getKey() + " value=" + entry.getValue().toString()); } diff --git a/services/common/src/main/java/org/collectionspace/services/common/document/JaxbUtils.java b/services/common/src/main/java/org/collectionspace/services/common/document/JaxbUtils.java index fa987720e..38a87161f 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/document/JaxbUtils.java +++ b/services/common/src/main/java/org/collectionspace/services/common/document/JaxbUtils.java @@ -120,10 +120,10 @@ public class JaxbUtils { Method m = c.getMethod(methodName); Object r = m.invoke(o); - if (logger.isDebugEnabled()) { - logger.debug("getValue returned value=" + r - + " for " + c.getName()); - } +// if (logger.isDebugEnabled()) { +// logger.debug("getValue returned value=" + r +// + " for " + c.getName()); +// } return r; } @@ -154,10 +154,10 @@ public class JaxbUtils { Class c = o.getClass(); Method m = c.getMethod(methodName, argType); Object r = m.invoke(o, argValue); - if (logger.isDebugEnabled()) { - logger.debug("completed invocation of " + methodName - + " for " + c.getName()); - } +// if (logger.isDebugEnabled()) { +// logger.debug("completed invocation of " + methodName +// + " for " + c.getName()); +// } return r; } } diff --git a/services/common/src/main/java/org/collectionspace/services/common/repository/RepositoryClient.java b/services/common/src/main/java/org/collectionspace/services/common/repository/RepositoryClient.java index 29a6a0479..6edab673b 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/repository/RepositoryClient.java +++ b/services/common/src/main/java/org/collectionspace/services/common/repository/RepositoryClient.java @@ -23,6 +23,7 @@ */ package org.collectionspace.services.common.repository; +import java.util.Hashtable; import java.util.List; import org.collectionspace.services.common.context.ServiceContext; @@ -45,6 +46,30 @@ import org.nuxeo.ecm.core.api.DocumentModelList; */ public interface RepositoryClient extends StorageClient { + /** + * createDomain creates a doamin in the default repository + * @param space name + * @return id of newly created domain space + * @throws java.lang.Exception + */ + public String createDomain(String domainName) throws Exception; + + /** + * getDomainSpaceId gets id of the given domain + * @param domainName + * @return + * @throws Exception + */ + public String getDomainId(String domainName) throws Exception; + + /** + * retrieveWorkspaceIds retrieve workspace ids for given domain + * @param domainName + * @return Hashtable + * @throws Exception + */ + public Hashtable retrieveWorkspaceIds(String domainName) throws Exception; + /** * createWorkspace creates a workspace in default repository under given domain * @param tenantDomain domain representing tenant @@ -62,7 +87,7 @@ public interface RepositoryClient extends StorageClient { * @throws java.lang.Exception */ public String getWorkspaceId(String tenantDomain, String workspaceName) throws Exception; - + /** * get wrapped documentModel from the Nuxeo repository * @param ctx service context under which this method is invoked @@ -71,7 +96,7 @@ public interface RepositoryClient extends StorageClient { * @throws DocumentException */ public DocumentWrapper getDoc( - ServiceContext ctx, String id) + ServiceContext ctx, String id) throws DocumentNotFoundException, DocumentException; /** @@ -82,7 +107,7 @@ public interface RepositoryClient extends StorageClient { * @throws DocumentException */ public DocumentWrapper findDoc( - ServiceContext ctx, String where) + ServiceContext ctx, String where) throws DocumentNotFoundException, DocumentException; /** @@ -93,7 +118,7 @@ public interface RepositoryClient extends StorageClient { * @throws DocumentException */ public String findDocCSID( - ServiceContext ctx, String where) + ServiceContext ctx, String where) throws DocumentNotFoundException, DocumentException; /** @@ -110,9 +135,9 @@ public interface RepositoryClient extends StorageClient { * @throws DocumentException */ public DocumentWrapper findDocs( - ServiceContext ctx, - List docTypes, - String where, - int pageSize, int pageNum, boolean computeTotal ) + ServiceContext ctx, + List docTypes, + String where, + int pageSize, int pageNum, boolean computeTotal) throws DocumentNotFoundException, DocumentException; } diff --git a/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RepositoryJavaClientImpl.java b/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RepositoryJavaClientImpl.java index 68a2a92fc..737dec28b 100644 --- a/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RepositoryJavaClientImpl.java +++ b/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RepositoryJavaClientImpl.java @@ -17,10 +17,10 @@ */ package org.collectionspace.services.nuxeo.client.java; +import java.util.Hashtable; import java.util.UUID; import java.util.List; -import org.collectionspace.services.common.ServiceMain; import org.collectionspace.services.common.context.ServiceContext; import org.collectionspace.services.common.document.BadRequestException; @@ -35,7 +35,6 @@ import org.collectionspace.services.common.document.DocumentWrapperImpl; import org.collectionspace.services.nuxeo.util.NuxeoUtils; import org.collectionspace.services.common.query.IQueryManager; import org.collectionspace.services.common.repository.RepositoryClient; -import org.collectionspace.services.nuxeo.client.java.DocumentModelHandler; import org.jboss.resteasy.plugins.providers.multipart.MultipartInput; import org.jboss.resteasy.plugins.providers.multipart.MultipartOutput; @@ -61,90 +60,85 @@ import org.slf4j.LoggerFactory; * $LastChangedRevision: $ $LastChangedDate: $ */ public class RepositoryJavaClientImpl implements RepositoryClient { - - /** - * The Class QueryContext. - */ - private class QueryContext { - - /** The doc type. */ - String docType; - - /** The doc filter. */ - DocumentFilter docFilter; - - /** The where clause. */ - String whereClause; - - /** The domain. */ - String domain; - - /** The tenant id. */ - String tenantId; - - /** - * Instantiates a new query context. - * - * @param ctx the ctx - * @throws DocumentNotFoundException the document not found exception - * @throws DocumentException the document exception - */ - QueryContext(ServiceContext ctx) throws DocumentNotFoundException, DocumentException { - docType = ctx.getDocumentType(); - if (docType == null) { - throw new DocumentNotFoundException( - "Unable to find DocumentType for service " + ctx.getServiceName()); - } - domain = ctx.getRepositoryDomainName(); - if (domain == null) { - throw new DocumentNotFoundException( - "Unable to find Domain for service " + ctx.getServiceName()); - } - tenantId = ctx.getTenantId(); - if (tenantId == null) { - throw new IllegalArgumentException( - "Service context has no Tenant ID specified."); - } - } - - /** - * Instantiates a new query context. - * - * @param ctx the ctx - * @param theWhereClause the the where clause - * @throws DocumentNotFoundException the document not found exception - * @throws DocumentException the document exception - */ - QueryContext(ServiceContext ctx, - String theWhereClause) throws DocumentNotFoundException, DocumentException { - this(ctx); - whereClause = theWhereClause; - } - - /** - * Instantiates a new query context. - * - * @param ctx the ctx - * @param handler the handler - * @throws DocumentNotFoundException the document not found exception - * @throws DocumentException the document exception - */ - QueryContext(ServiceContext ctx, - DocumentHandler handler) throws DocumentNotFoundException, DocumentException { - this(ctx); - if (handler == null) { - throw new IllegalArgumentException( - "Document handler is missing."); - } - docFilter = handler.getDocumentFilter(); - if (docFilter == null) { - throw new IllegalArgumentException( - "Document handler has no Filter specified."); - } - whereClause = docFilter.getWhereClause(); - } - } + /** + * The Class QueryContext. + */ + private class QueryContext { + + /** The doc type. */ + String docType; + /** The doc filter. */ + DocumentFilter docFilter; + /** The where clause. */ + String whereClause; + /** The domain. */ + String domain; + /** The tenant id. */ + String tenantId; + + /** + * Instantiates a new query context. + * + * @param ctx the ctx + * @throws DocumentNotFoundException the document not found exception + * @throws DocumentException the document exception + */ + QueryContext(ServiceContext ctx) throws DocumentNotFoundException, DocumentException { + docType = ctx.getDocumentType(); + if (docType == null) { + throw new DocumentNotFoundException( + "Unable to find DocumentType for service " + ctx.getServiceName()); + } + domain = ctx.getRepositoryDomainName(); + if (domain == null) { + throw new DocumentNotFoundException( + "Unable to find Domain for service " + ctx.getServiceName()); + } + tenantId = ctx.getTenantId(); + if (tenantId == null) { + throw new IllegalArgumentException( + "Service context has no Tenant ID specified."); + } + } + + /** + * Instantiates a new query context. + * + * @param ctx the ctx + * @param theWhereClause the the where clause + * @throws DocumentNotFoundException the document not found exception + * @throws DocumentException the document exception + */ + QueryContext(ServiceContext ctx, + String theWhereClause) throws DocumentNotFoundException, DocumentException { + this(ctx); + whereClause = theWhereClause; + } + + /** + * Instantiates a new query context. + * + * @param ctx the ctx + * @param handler the handler + * @throws DocumentNotFoundException the document not found exception + * @throws DocumentException the document exception + */ + QueryContext(ServiceContext ctx, + DocumentHandler handler) throws DocumentNotFoundException, DocumentException { + this(ctx); + if (handler == null) { + throw new IllegalArgumentException( + "Document handler is missing."); + } + docFilter = handler.getDocumentFilter(); + if (docFilter == null) { + throw new IllegalArgumentException( + "Document handler has no Filter specified."); + } + whereClause = docFilter.getWhereClause(); + } + } /** The logger. */ private final Logger logger = LoggerFactory.getLogger(RepositoryJavaClientImpl.class); @@ -152,7 +146,7 @@ public class RepositoryJavaClientImpl implements RepositoryClient { * Instantiates a new repository java client impl. */ public RepositoryJavaClientImpl() { - //Empty constructor + //Empty constructor } /** @@ -163,25 +157,25 @@ public class RepositoryJavaClientImpl implements RepositoryClient { * @throws ClientException the client exception */ private void setCollectionSpaceCoreValues(ServiceContext ctx, - DocumentModel documentModel, - Action action) throws ClientException { - // - // Add the tenant ID value to the new entity - // - documentModel.setProperty(DocumentModelHandler.COLLECTIONSPACE_CORE_SCHEMA, - DocumentModelHandler.COLLECTIONSPACE_CORE_TENANTID, - ctx.getTenantId()); - switch (action) { - case CREATE: - //add creation date value - break; - case UPDATE: - //add update value - break; - default: - } + DocumentModel documentModel, + Action action) throws ClientException { + // + // Add the tenant ID value to the new entity + // + documentModel.setProperty(DocumentModelHandler.COLLECTIONSPACE_CORE_SCHEMA, + DocumentModelHandler.COLLECTIONSPACE_CORE_TENANTID, + ctx.getTenantId()); + switch (action) { + case CREATE: + //add creation date value + break; + case UPDATE: + //add update value + break; + default: + } } - + /** * create document in the Nuxeo repository * @@ -313,7 +307,7 @@ public class RepositoryJavaClientImpl implements RepositoryClient { @Override public void get(ServiceContext ctx, DocumentHandler handler) throws DocumentNotFoundException, DocumentException { - QueryContext queryContext = new QueryContext(ctx, handler); + QueryContext queryContext = new QueryContext(ctx, handler); RepositoryInstance repoSession = null; try { @@ -396,7 +390,7 @@ public class RepositoryJavaClientImpl implements RepositoryClient { } return wrapDoc; } - + /** * find wrapped documentModel from the Nuxeo repository * @param ctx service context under which this method is invoked @@ -411,16 +405,16 @@ public class RepositoryJavaClientImpl implements RepositoryClient { DocumentWrapper wrapDoc = null; try { - QueryContext queryContext = new QueryContext(ctx, whereClause); + QueryContext queryContext = new QueryContext(ctx, whereClause); repoSession = getRepositorySession(); DocumentModelList docList = null; // force limit to 1, and ignore totalSize String query = buildNXQLQuery(queryContext); docList = repoSession.query(query, - null, //Filter - 1, //limit - 0, //offset - false); //countTotal + null, //Filter + 1, //limit + 0, //offset + false); //countTotal if (docList.size() != 1) { if (logger.isDebugEnabled()) { logger.debug("findDoc: Query found: " + docList.size() + " items."); @@ -486,7 +480,7 @@ public class RepositoryJavaClientImpl implements RepositoryClient { */ @Override public DocumentWrapper findDocs( - ServiceContext ctx, + ServiceContext ctx, List docTypes, String whereClause, int pageSize, int pageNum, boolean computeTotal) @@ -613,7 +607,7 @@ public class RepositoryJavaClientImpl implements RepositoryClient { } } } - + /** * getFiltered get all documents for an entity service from the Document repository, * given filter parameters specified by the handler. @@ -625,8 +619,8 @@ public class RepositoryJavaClientImpl implements RepositoryClient { @Override public void getFiltered(ServiceContext ctx, DocumentHandler handler) throws DocumentNotFoundException, DocumentException { - QueryContext queryContext = new QueryContext(ctx, handler); - + QueryContext queryContext = new QueryContext(ctx, handler); + RepositoryInstance repoSession = null; try { handler.prepare(Action.GET_ALL); @@ -642,7 +636,7 @@ public class RepositoryJavaClientImpl implements RepositoryClient { // in returned DocumentModelList. if ((queryContext.docFilter.getOffset() > 0) || (queryContext.docFilter.getPageSize() > 0)) { docList = repoSession.query(query, null, - queryContext.docFilter.getPageSize(), queryContext.docFilter.getOffset(), true); + queryContext.docFilter.getPageSize(), queryContext.docFilter.getOffset(), true); } else { docList = repoSession.query(query); } @@ -771,20 +765,83 @@ public class RepositoryJavaClientImpl implements RepositoryClient { throw new UnsupportedOperationException(); } + @Override + public Hashtable retrieveWorkspaceIds(String domainName) throws Exception { + return NuxeoConnector.getInstance().retrieveWorkspaceIds(domainName); + } + + @Override + public String createDomain(String domainName) throws Exception { + RepositoryInstance repoSession = null; + String domainId = null; + try { + repoSession = getRepositorySession(); + DocumentRef parentDocRef = new PathRef("/"); + DocumentModel parentDoc = repoSession.getDocument(parentDocRef); + DocumentModel doc = repoSession.createDocumentModel(parentDoc.getPathAsString(), + domainName, "Domain"); + doc.setPropertyValue("dc:title", domainName); + doc.setPropertyValue("dc:description", "A CollectionSpace domain " + + domainName); + doc = repoSession.createDocument(doc); + domainId = doc.getId(); + repoSession.save(); + if (logger.isDebugEnabled()) { + logger.debug("created tenant domain name=" + domainName + + " id=" + domainId); + } + } catch (Exception e) { + if (logger.isDebugEnabled()) { + logger.debug("createTenantSpace caught exception ", e); + } + throw e; + } finally { + if (repoSession != null) { + releaseRepositorySession(repoSession); + } + } + return domainId; + } + + @Override + public String getDomainId(String domainName) throws Exception { + String domainId = null; + RepositoryInstance repoSession = null; + try { + repoSession = getRepositorySession(); + DocumentRef docRef = new PathRef( + "/" + domainName); + DocumentModel domain = repoSession.getDocument(docRef); + domainId = domain.getId(); + } catch (Exception e) { + if (logger.isDebugEnabled()) { + logger.debug("Caught exception ", e); + } + //there is no way to identify if document does not exist due to + //lack of typed exception for getDocument method + return null; + } finally { + if (repoSession != null) { + releaseRepositorySession(repoSession); + } + } + return domainId; + } + /* (non-Javadoc) * @see org.collectionspace.services.common.repository.RepositoryClient#createWorkspace(java.lang.String, java.lang.String) */ @Override - public String createWorkspace(String tenantDomain, String workspaceName) throws Exception { + public String createWorkspace(String domainName, String workspaceName) throws Exception { RepositoryInstance repoSession = null; String workspaceId = null; try { repoSession = getRepositorySession(); - DocumentRef docRef = new PathRef( - "/" + tenantDomain + DocumentRef parentDocRef = new PathRef( + "/" + domainName + "/" + "workspaces"); - DocumentModel parent = repoSession.getDocument(docRef); - DocumentModel doc = repoSession.createDocumentModel(parent.getPathAsString(), + DocumentModel parentDoc = repoSession.getDocument(parentDocRef); + DocumentModel doc = repoSession.createDocumentModel(parentDoc.getPathAsString(), workspaceName, "Workspace"); doc.setPropertyValue("dc:title", workspaceName); doc.setPropertyValue("dc:description", "A CollectionSpace workspace for " @@ -846,20 +903,20 @@ public class RepositoryJavaClientImpl implements RepositoryClient { * @param where the where * @param domain the domain */ - private final void appendNXQLWhere(StringBuilder query, QueryContext queryContext) { - // - // Restrict search to a specific Nuxeo domain + private final void appendNXQLWhere(StringBuilder query, QueryContext queryContext) { + // + // Restrict search to a specific Nuxeo domain // TODO This is a slow method for tenant-filter // We should make this a property that is indexed. - // + // query.append(" WHERE ecm:path STARTSWITH '/" + queryContext.domain + "'"); - + // // Restrict search to the current tenant ID. Is the domain path filter (above) still needed? // - query.append(IQueryManager.SEARCH_QUALIFIER_AND + DocumentModelHandler.COLLECTIONSPACE_CORE_SCHEMA + ":" + - DocumentModelHandler.COLLECTIONSPACE_CORE_TENANTID + - " = " + queryContext.tenantId); + query.append(IQueryManager.SEARCH_QUALIFIER_AND + DocumentModelHandler.COLLECTIONSPACE_CORE_SCHEMA + ":" + + DocumentModelHandler.COLLECTIONSPACE_CORE_TENANTID + + " = " + queryContext.tenantId); // // Finally, append the incoming where clause // diff --git a/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/TenantRepository.java b/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/TenantRepository.java index ab0df0d13..401b66a50 100644 --- a/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/TenantRepository.java +++ b/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/TenantRepository.java @@ -32,6 +32,7 @@ import org.collectionspace.services.common.repository.RepositoryClientFactory; import org.collectionspace.services.common.service.ServiceBindingType; import org.collectionspace.services.common.tenant.TenantBindingType; import org.collectionspace.services.common.config.TenantBindingConfigReaderImpl; +import org.collectionspace.services.common.tenant.RepositoryDomainType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,135 +44,180 @@ import org.slf4j.LoggerFactory; public class TenantRepository { final private static TenantRepository self = new TenantRepository(); - final Logger logger = LoggerFactory.getLogger(TenantRepository.class); //tenant-qualified service, workspace private Hashtable serviceWorkspaces = new Hashtable(); private TenantRepository() { - } public static TenantRepository get() { return self; } - + + /** + * getWorkspaceId for a tenant's service + * @param tenantId + * @param serviceName + * @return workspace id + */ + public String getWorkspaceId(String tenantId, String serviceName) { + String tenantService = + TenantBindingConfigReaderImpl.getTenantQualifiedServiceName(tenantId, serviceName); + return serviceWorkspaces.get(tenantService); + } + /** - * retrieveWorkspaceIds is called at initialization time to retrieve - * workspace ids of all the tenants + * setup is called at initialization time to setup tenant specific repository(s) + * it will create repository domain(s) and + * also service workspaces for all the services used by given tenant(s) * @param hashtable * @throws Exception */ - synchronized public void retrieveAllWorkspaceIds(Hashtable tenantBindings) + synchronized public void setup(Hashtable tenantBindings) throws Exception { for (TenantBindingType tenantBinding : tenantBindings.values()) { - retrieveWorkspaceIds(tenantBinding); + setup(tenantBinding); } } /** - * retrieveWorkspaceIds retrieves workspace ids for services used by - * the given tenant + * setup sets up repository(s) for given tenant + * it will create repository domains and also service workspaces if needed * @param tenantBinding * @throws Exception */ - synchronized public void retrieveWorkspaceIds(TenantBindingType tenantBinding) throws Exception { - Hashtable workspaceIds = new Hashtable(); + synchronized public void setup(TenantBindingType tenantBinding) throws Exception { ServiceMain svcMain = ServiceMain.getInstance(); - RepositoryClientConfigType rclientConfig = svcMain.getServicesConfigReader().getConfiguration().getRepositoryClient(); + RepositoryClientConfigType rclientConfig = + svcMain.getServicesConfigReader().getConfiguration().getRepositoryClient(); ClientType clientType = svcMain.getClientType(); if (clientType.equals(ClientType.JAVA) && rclientConfig.getName().equalsIgnoreCase("nuxeo-java")) { - //FIXME only one repository client is recognized - workspaceIds = svcMain.getNuxeoConnector().retrieveWorkspaceIds( - tenantBinding.getRepositoryDomain()); + for (RepositoryDomainType repositoryDomain : tenantBinding.getRepositoryDomain()) { + createDomain(tenantBinding, repositoryDomain); + createWorkspaces(tenantBinding, repositoryDomain); + } } - //verify if workspace exists for each service in the tenant binding + } + + private RepositoryClient getRepositoryClient(RepositoryDomainType repositoryDomain) { + String clientName = repositoryDomain.getRepositoryClient(); + if (clientName == null) { + String msg = "Could not find repository client=" + clientName + + " for repositoryDomain=" + repositoryDomain.getName(); + logger.error(msg); + throw new IllegalArgumentException(msg); + } + return RepositoryClientFactory.getInstance().getClient(clientName); + } + + /** + * createDomain retrieves domain id for the given domain or creates one + * @param tenantBinding + * @param repositoryDomain + * @throws Exception + */ + synchronized private void createDomain(TenantBindingType tenantBinding, + RepositoryDomainType repositoryDomain) throws Exception { + String domainName = repositoryDomain.getName(); + RepositoryClient repositoryClient = getRepositoryClient(repositoryDomain); + String domainId = repositoryClient.getDomainId(domainName); + if (domainId == null) { + domainId = repositoryClient.createDomain(domainName); + if (logger.isDebugEnabled()) { + logger.debug("created repository domain for " + domainName + + " id=" + domainId); + } + } else { + if (logger.isDebugEnabled()) { + logger.debug("found repository domain for " + domainName + + " id=" + domainId); + } + } + } + + /** + * createWorkspaces retrieves workspace ids for each domain specified in + * the tenant binding, if workspace does not exist, it creates one + * @param tenantBinding + * @param repositoryDomain + * @throws Exception + */ + synchronized private void createWorkspaces(TenantBindingType tenantBinding, + RepositoryDomainType repositoryDomain) throws Exception { + + RepositoryClient repositoryClient = getRepositoryClient(repositoryDomain); + + //retrieve all workspace ids for a domain + //domain specific table of workspace name and id + Hashtable workspaceIds = + repositoryClient.retrieveWorkspaceIds(repositoryDomain.getName()); + //verify if workspace exists for each service from the tenant binding for (ServiceBindingType serviceBinding : tenantBinding.getServiceBindings()) { String serviceName = serviceBinding.getName(); - String repositoryClientName = serviceBinding.getRepositoryClient(); - if (repositoryClientName == null) { + String repositoryDomainName = serviceBinding.getRepositoryDomain(); + if (repositoryDomainName == null) { //no repository needed for this service...skip if (logger.isInfoEnabled()) { logger.info("The service " + serviceName + + " for tenant=" + tenantBinding.getName() + " does not seem to require a document repository."); } continue; } - - if (repositoryClientName.isEmpty()) { - String msg = "Invalid repositoryClient " + serviceName; + if (repositoryDomainName.isEmpty()) { + String msg = "Invalid repositoryDomain for " + serviceName + + " for tenant=" + tenantBinding.getName(); logger.error(msg); continue; } - repositoryClientName = repositoryClientName.trim(); - RepositoryClient repositoryClient = getRepositoryClient( - repositoryClientName); - if (repositoryClient == null) { - String msg = "Could not find repositoryClient " + repositoryClientName - + " for service=" + serviceName; - logger.error(msg); + repositoryDomainName = repositoryDomainName.trim(); + if (!repositoryDomain.getName().equalsIgnoreCase(repositoryDomainName)) { continue; } String workspaceId = null; //workspace name is service name by convention String workspace = serviceName.toLowerCase(); - if (clientType.equals(ClientType.JAVA)) { + //if workspaceid is in the binding, take it, else retrieve + workspaceId = serviceBinding.getRepositoryWorkspaceId(); + if (workspaceId == null) { workspaceId = workspaceIds.get(workspace); if (workspaceId == null) { if (logger.isWarnEnabled()) { logger.warn("Failed to retrieve workspace ID for " + workspace - + " from repository, trying to create a new workspace ..."); + + " from repository, creating a new workspace ..."); } workspaceId = repositoryClient.createWorkspace( - tenantBinding.getRepositoryDomain(), + repositoryDomain.getName(), serviceBinding.getName()); if (workspaceId == null) { if (logger.isWarnEnabled()) { logger.warn("Failed to create workspace in repository" - + " for service=" + workspace); + + " for service=" + workspace + + " for tenant=" + tenantBinding.getName()); } continue; } if (logger.isDebugEnabled()) { logger.debug("Successfully created workspace in repository" - + " id=" + workspaceId + " for service=" + workspace); + + " id=" + workspaceId + " for service=" + workspace + + " for tenant=" + tenantBinding.getName()); } } - } else { - workspaceId = serviceBinding.getRepositoryWorkspaceId(); - if (workspaceId == null || "".equals(workspaceId)) { - logger.error("Could not find workspace in repository for" - + " service=" + workspace); - //FIXME: should we throw an exception here? - continue; - } } - String tenantService = - TenantBindingConfigReaderImpl.getTenantQualifiedServiceName(tenantBinding.getId(), serviceName); - serviceWorkspaces.put(tenantService, workspaceId); - if (logger.isInfoEnabled()) { - logger.info("Created/retrieved repository workspace=" - + workspace + " id=" + workspaceId - + " for service=" + serviceName); + if (workspaceId != null) { + String tenantService = + TenantBindingConfigReaderImpl.getTenantQualifiedServiceName( + tenantBinding.getId(), serviceName); + serviceWorkspaces.put(tenantService, workspaceId); + if (logger.isInfoEnabled()) { + logger.info("Created/retrieved repository workspace=" + + workspace + " id=" + workspaceId + + " for service=" + serviceName + + " for tenant=" + tenantBinding.getName()); + } } - } - } - - /** - * getWorkspaceId for a tenant's service - * @param tenantId - * @param serviceName - * @return workspace id - */ - public String getWorkspaceId(String tenantId, String serviceName) { - String tenantService = - TenantBindingConfigReaderImpl.getTenantQualifiedServiceName(tenantId, serviceName); - return serviceWorkspaces.get(tenantService); - } - - - private RepositoryClient getRepositoryClient(String clientName) { - return RepositoryClientFactory.getInstance().getClient(clientName); + }//rof for service binding } } diff --git a/services/common/src/main/resources/service.xsd b/services/common/src/main/resources/service.xsd index ac21ce735..992cba2cd 100644 --- a/services/common/src/main/resources/service.xsd +++ b/services/common/src/main/resources/service.xsd @@ -41,8 +41,8 @@ - - + + diff --git a/services/common/src/main/resources/tenant.xsd b/services/common/src/main/resources/tenant.xsd index 5dd8ea1ac..042ba2e82 100644 --- a/services/common/src/main/resources/tenant.xsd +++ b/services/common/src/main/resources/tenant.xsd @@ -5,22 +5,22 @@ You may not use this file except in compliance with this License. You may obtain a copy of the ECL 2.0 License at - + https://source.collectionspace.org/collection-space/LICENSE.txt Document : tenant-binding.xsd Revision : $LastChangedRevision$ Created on : $LastChangedDate$ Description: - + --> + xmlns="http://collectionspace.org/services/common/tenant" + xmlns:types="http://collectionspace.org/services/common/types" + xmlns:service="http://collectionspace.org/services/common/service" + targetNamespace="http://collectionspace.org/services/common/tenant" + version="0.1" + elementFormDefault="qualified"> @@ -40,8 +40,12 @@ TenantBindingType describes bindings for each tenant in CollectionSpace --> + + Tenant bindings + - + + @@ -52,8 +56,16 @@ - - + + + + + + Repository domain configuartion + + + + diff --git a/services/security/client/src/test/java/org/collectionspace/services/security/client/test/AuthenticationServiceTest.java b/services/security/client/src/test/java/org/collectionspace/services/security/client/test/AuthenticationServiceTest.java index 9e3d0b1bf..eb74db3c7 100644 --- a/services/security/client/src/test/java/org/collectionspace/services/security/client/test/AuthenticationServiceTest.java +++ b/services/security/client/src/test/java/org/collectionspace/services/security/client/test/AuthenticationServiceTest.java @@ -62,11 +62,10 @@ public class AuthenticationServiceTest extends AbstractServiceTestImpl { private String knownResourceId = null; private String barneyAccountId = null; //active private String georgeAccountId = null; //inactive - /** The logger. */ private final String CLASS_NAME = AuthenticationServiceTest.class.getName(); private final Logger logger = LoggerFactory.getLogger(CLASS_NAME); - + /* (non-Javadoc) * @see org.collectionspace.services.client.test.AbstractServiceTest#getServicePathComponent() */ @@ -102,7 +101,7 @@ public class AuthenticationServiceTest extends AbstractServiceTestImpl { @Test(dataProvider = "testName", dataProviderClass = AbstractServiceTestImpl.class) public void createActiveAccount(String testName) throws Exception { - + if (logger.isDebugEnabled()) { logger.debug(testBanner(testName, CLASS_NAME)); } @@ -110,13 +109,14 @@ public class AuthenticationServiceTest extends AbstractServiceTestImpl { // (e.g. CREATE, DELETE), its valid and expected status codes, and // its associated HTTP method name (e.g. POST, DELETE). setupCreate(); - + AccountClient accountClient = new AccountClient(); accountClient.setAuth(true, "test", true, "test", true); // Submit the request to the service and store the response. AccountsCommon account = - createAccountInstance("barney", "barney08", "barney@dinoland.com", false); + createAccountInstance("barney", "barney08", "barney@dinoland.com", + accountClient.getTenantId(), false); ClientResponse res = accountClient.create(account); int statusCode = res.getStatus(); @@ -139,19 +139,20 @@ public class AuthenticationServiceTest extends AbstractServiceTestImpl { @Test(dataProvider = "testName", dataProviderClass = AbstractServiceTestImpl.class) public void createInactiveAccount(String testName) throws Exception { - + if (logger.isDebugEnabled()) { logger.debug(testBanner(testName, CLASS_NAME)); } // Perform setup. setupCreate(); - + AccountClient accountClient = new AccountClient(); accountClient.setAuth(true, "test", true, "test", true); // Submit the request to the service and store the response. AccountsCommon account = - createAccountInstance("george", "george08", "george@curiousland.com", false); + createAccountInstance("george", "george08", "george@curiousland.com", + accountClient.getTenantId(), false); ClientResponse res = accountClient.create(account); int statusCode = res.getStatus(); @@ -460,11 +461,11 @@ public class AuthenticationServiceTest extends AbstractServiceTestImpl { } private AccountsCommon createAccountInstance(String screenName, - String passwd, String email, boolean invalidTenant) { + String passwd, String email, String tenantId, boolean invalidTenant) { AccountsCommon account = AccountFactory.createAccountInstance(screenName, - screenName, passwd, email, - true, true, invalidTenant, true, true); + screenName, passwd, email, tenantId, + true, invalidTenant, true, true); List atl = account.getTenants(); diff --git a/services/security/client/src/test/java/org/collectionspace/services/security/client/test/AuthorizationServiceTest.java b/services/security/client/src/test/java/org/collectionspace/services/security/client/test/AuthorizationServiceTest.java index ea8cead18..da602745c 100644 --- a/services/security/client/src/test/java/org/collectionspace/services/security/client/test/AuthorizationServiceTest.java +++ b/services/security/client/src/test/java/org/collectionspace/services/security/client/test/AuthorizationServiceTest.java @@ -469,8 +469,7 @@ public class AuthorizationServiceTest extends AbstractServiceTestImpl { // Submit the request to the service and store the response. DimensionClient client = new DimensionClient(); - //default user test/test has delete permission - client.setAuth(true, "test", true, "test", true); + ClientResponse res = client.delete(knownResourceId); int statusCode = res.getStatus(); @@ -608,11 +607,11 @@ public class AuthorizationServiceTest extends AbstractServiceTestImpl { private String createAccount(String userName, String email) { setupCreate(); - AccountClient accClient = new AccountClient(); + AccountClient accountClient = new AccountClient(); AccountsCommon account = AccountFactory.createAccountInstance( - userName, userName, userName, email, - true, true, false, true, true); - ClientResponse res = accClient.create(account); + userName, userName, userName, email, accountClient.getTenantId(), + true, false, true, true); + ClientResponse res = accountClient.create(account); int statusCode = res.getStatus(); if (logger.isDebugEnabled()) { logger.debug("createAccount: userName=" + userName @@ -757,4 +756,9 @@ public class AuthorizationServiceTest extends AbstractServiceTestImpl { deleteAccount(av1.getAccountId()); } } + + + private String getTenantId(AccountClient client) { + return client.getProperty(AccountClient.TENANT_PROPERTY); + } } diff --git a/src/main/resources/db/mysql/service-dump.sql b/src/main/resources/db/mysql/service-dump.sql deleted file mode 100644 index 457d39227..000000000 --- a/src/main/resources/db/mysql/service-dump.sql +++ /dev/null @@ -1,98 +0,0 @@ --- MySQL Administrator dump 1.4 --- --- ------------------------------------------------------ --- Server version 5.1.31-community - - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; - -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; - - --- --- Create schema cspace --- - -CREATE DATABASE IF NOT EXISTS cspace; -USE cspace; - --- --- Definition of table `roles` --- - -DROP TABLE IF EXISTS `roles`; -CREATE TABLE `roles` ( - `rolename` varchar(128) NOT NULL, - `rolegroup` varchar(128) DEFAULT NULL, - PRIMARY KEY (`rolename`), - KEY `rolename_roles` (`rolename`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - --- --- Dumping data for table `roles` --- - -/*!40000 ALTER TABLE `roles` DISABLE KEYS */; -INSERT INTO `roles` (`rolename`,`rolegroup`) VALUES - ('collections_manager','collections'), - ('collections_registrar','collections'); -/*!40000 ALTER TABLE `roles` ENABLE KEYS */; - - --- --- Definition of table `users` --- - -DROP TABLE IF EXISTS `users`; -CREATE TABLE `users` ( - `username` varchar(128) NOT NULL, - `passwd` varchar(128) NOT NULL, - PRIMARY KEY (`username`), - KEY `username_users` (`username`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - --- --- Dumping data for table `users` --- - -/*!40000 ALTER TABLE `users` DISABLE KEYS */; -INSERT INTO `users` (`username`,`passwd`) VALUES - ('test','n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg='); -/*!40000 ALTER TABLE `users` ENABLE KEYS */; - - --- --- Definition of table `users_roles` --- - -DROP TABLE IF EXISTS `users_roles`; -CREATE TABLE `users_roles` ( - `username` varchar(128) NOT NULL, - `rolename` varchar(128) NOT NULL, - KEY `username_users_roles` (`username`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - --- --- Dumping data for table `users_roles` --- - -/*!40000 ALTER TABLE `users_roles` DISABLE KEYS */; -INSERT INTO `users_roles` (`username`,`rolename`) VALUES - ('test','collections_manager'); -/*!40000 ALTER TABLE `users_roles` ENABLE KEYS */; - - - - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;