http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java index 3b8b46c..8e76403 100644 --- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java +++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java @@ -52,6 +52,7 @@ import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaManager; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.quota.QuotaRootResolver; import org.apache.james.mailbox.store.FakeAuthenticator; +import org.apache.james.mailbox.store.FakeAuthorizator; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.StoreSubscriptionManager; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; @@ -73,6 +74,7 @@ public class CassandraHostSystem extends JamesImapHostSystem { private final CassandraMailboxManager mailboxManager; private final FakeAuthenticator userManager; + private final FakeAuthorizator authorizator; private final CassandraCluster cassandraClusterSingleton; public CassandraHostSystem() throws Exception { @@ -90,6 +92,7 @@ public class CassandraHostSystem extends JamesImapHostSystem { new CassandraAnnotationModule()); cassandraClusterSingleton = CassandraCluster.create(mailboxModule); userManager = new FakeAuthenticator(); + authorizator = new FakeAuthorizator(); com.datastax.driver.core.Session session = cassandraClusterSingleton.getConf(); CassandraModSeqProvider modSeqProvider = new CassandraModSeqProvider(session); CassandraUidProvider uidProvider = new CassandraUidProvider(session); @@ -104,7 +107,7 @@ public class CassandraHostSystem extends JamesImapHostSystem { CassandraMailboxSessionMapperFactory mapperFactory = new CassandraMailboxSessionMapperFactory(uidProvider, modSeqProvider, session, typesProvider, messageDAO, messageIdDAO, imapUidDAO, mailboxCounterDAO, mailboxRecentsDAO); - mailboxManager = new CassandraMailboxManager(mapperFactory, userManager, new JVMMailboxPathLocker(), new MessageParser(), messageIdFactory); + mailboxManager = new CassandraMailboxManager(mapperFactory, userManager, authorizator, new JVMMailboxPathLocker(), new MessageParser(), messageIdFactory); QuotaRootResolver quotaRootResolver = new DefaultQuotaRootResolver(mapperFactory); CassandraPerUserMaxQuotaManager perUserMaxQuotaManager = new CassandraPerUserMaxQuotaManager(session);
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java b/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java index 6cac0a3..6caa31c 100644 --- a/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java +++ b/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java @@ -54,6 +54,7 @@ import org.apache.james.mailbox.inmemory.InMemoryMessageId; import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.store.FakeAuthenticator; +import org.apache.james.mailbox.store.FakeAuthorizator; import org.apache.james.mailbox.store.StoreMailboxManager; import org.apache.james.mailbox.store.StoreSubscriptionManager; import org.apache.james.mailbox.store.extractor.DefaultTextExtractor; @@ -124,7 +125,7 @@ public class ElasticSearchHostSystem extends JamesImapHostSystem { GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); MessageParser messageParser = new MessageParser(); - mailboxManager = new StoreMailboxManager(factory, userManager, aclResolver, groupMembershipResolver, messageParser, + mailboxManager = new StoreMailboxManager(factory, userManager, new FakeAuthorizator(), aclResolver, groupMembershipResolver, messageParser, messageIdFactory, MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE); mailboxManager.setMessageSearchIndex(searchIndex); http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java index 7cd3876..7ed820e 100644 --- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java +++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java @@ -41,6 +41,7 @@ import org.apache.james.mailbox.hbase.mail.HBaseModSeqProvider; import org.apache.james.mailbox.hbase.mail.HBaseUidProvider; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.store.FakeAuthenticator; +import org.apache.james.mailbox.store.FakeAuthorizator; import org.apache.james.mailbox.store.StoreSubscriptionManager; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; @@ -91,6 +92,7 @@ public class HBaseHostSystem extends JamesImapHostSystem { } userManager = new FakeAuthenticator(); + FakeAuthorizator authorizator = new FakeAuthorizator(); final HBaseModSeqProvider modSeqProvider = new HBaseModSeqProvider(conf); final HBaseUidProvider uidProvider = new HBaseUidProvider(conf); @@ -101,7 +103,7 @@ public class HBaseHostSystem extends JamesImapHostSystem { GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); MessageParser messageParser = new MessageParser(); - mailboxManager = new HBaseMailboxManager(mapperFactory, userManager, aclResolver, groupMembershipResolver, + mailboxManager = new HBaseMailboxManager(mapperFactory, userManager, authorizator, aclResolver, groupMembershipResolver, messageParser, messageIdFactory); mailboxManager.init(); http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryEventAsynchronousHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryEventAsynchronousHostSystem.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryEventAsynchronousHostSystem.java index d3bce01..0f24491 100644 --- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryEventAsynchronousHostSystem.java +++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryEventAsynchronousHostSystem.java @@ -36,6 +36,7 @@ import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.quota.QuotaRootResolver; import org.apache.james.mailbox.store.FakeAuthenticator; +import org.apache.james.mailbox.store.FakeAuthorizator; import org.apache.james.mailbox.store.StoreMailboxManager; import org.apache.james.mailbox.store.StoreSubscriptionManager; import org.apache.james.mailbox.store.event.AsynchronousEventDelivery; @@ -82,7 +83,7 @@ public class InMemoryEventAsynchronousHostSystem extends JamesImapHostSystem { GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); MessageParser messageParser = new MessageParser(); - mailboxManager = new StoreMailboxManager(factory, userManager, aclResolver, groupMembershipResolver, messageParser, + mailboxManager = new StoreMailboxManager(factory, userManager, new FakeAuthorizator(), aclResolver, groupMembershipResolver, messageParser, new InMemoryMessageId.Factory(), MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE); QuotaRootResolver quotaRootResolver = new DefaultQuotaRootResolver(factory); http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java index 766d8d8..5cb7729 100644 --- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java +++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java @@ -36,6 +36,7 @@ import org.apache.james.mailbox.inmemory.quota.InMemoryPerUserMaxQuotaManager; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.quota.QuotaRootResolver; import org.apache.james.mailbox.store.FakeAuthenticator; +import org.apache.james.mailbox.store.FakeAuthorizator; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.StoreSubscriptionManager; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; @@ -84,7 +85,7 @@ public class InMemoryHostSystem extends JamesImapHostSystem { MessageParser messageParser = new MessageParser(); InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new InMemoryMailboxSessionMapperFactory(); - mailboxManager = new InMemoryMailboxManager(mailboxSessionMapperFactory, userManager, + mailboxManager = new InMemoryMailboxManager(mailboxSessionMapperFactory, userManager, new FakeAuthorizator(), new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver, messageParser, new InMemoryMessageId.Factory()); QuotaRootResolver quotaRootResolver = new DefaultQuotaRootResolver(mailboxManager.getMapperFactory()); http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java b/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java index 5841715..edca72d 100644 --- a/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java +++ b/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java @@ -41,6 +41,7 @@ import org.apache.james.mailbox.jcr.mail.JCRModSeqProvider; import org.apache.james.mailbox.jcr.mail.JCRUidProvider; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.store.FakeAuthenticator; +import org.apache.james.mailbox.store.FakeAuthorizator; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; @@ -94,7 +95,7 @@ public class JCRHostSystem extends JamesImapHostSystem{ GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); MessageParser messageParser = new MessageParser(); - mailboxManager = new JCRMailboxManager(mf, userManager, locker, aclResolver, groupMembershipResolver, messageParser, + mailboxManager = new JCRMailboxManager(mf, userManager, new FakeAuthorizator(), aclResolver, groupMembershipResolver, messageParser, new DefaultMessageId.Factory()); mailboxManager.init(); http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java index 42082f1..37165bc 100644 --- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java +++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java @@ -43,6 +43,7 @@ import org.apache.james.mailbox.jpa.mail.JPAUidProvider; import org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.store.FakeAuthenticator; +import org.apache.james.mailbox.store.FakeAuthorizator; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; @@ -82,7 +83,7 @@ public class JPAHostSystem extends JamesImapHostSystem { GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); MessageParser messageParser = new MessageParser(); - mailboxManager = new OpenJPAMailboxManager(mf, userManager, locker, false, aclResolver, groupMembershipResolver, messageParser, new DefaultMessageId.Factory()); + mailboxManager = new OpenJPAMailboxManager(mf, userManager, new FakeAuthorizator(), locker, false, aclResolver, groupMembershipResolver, messageParser, new DefaultMessageId.Factory()); mailboxManager.init(); SubscriptionManager subscriptionManager = new JPASubscriptionManager(mf); http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java b/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java index 2361c08..10d8845 100644 --- a/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java +++ b/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java @@ -49,6 +49,7 @@ import org.apache.james.mailbox.lucene.search.LuceneMessageSearchIndex; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.store.FakeAuthenticator; +import org.apache.james.mailbox.store.FakeAuthorizator; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; @@ -124,7 +125,7 @@ public class LuceneSearchHostSystem extends JamesImapHostSystem { GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); MessageParser messageParser = new MessageParser(); - mailboxManager = new OpenJPAMailboxManager(factory, userManager, locker, false, aclResolver, groupMembershipResolver, messageParser, messageIdFactory); + mailboxManager = new OpenJPAMailboxManager(factory, userManager, new FakeAuthorizator(), locker, false, aclResolver, groupMembershipResolver, messageParser, messageIdFactory); LuceneMessageSearchIndex searchIndex = new LuceneMessageSearchIndex(factory, mailboxIdFactory, fsDirectory, messageIdFactory, mailboxManager); searchIndex.setEnableSuffixMatch(true); http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java index c1db7f2..9a97fdd 100644 --- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java +++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java @@ -34,6 +34,7 @@ import org.apache.james.mailbox.maildir.MaildirMailboxSessionMapperFactory; import org.apache.james.mailbox.maildir.MaildirStore; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.store.FakeAuthenticator; +import org.apache.james.mailbox.store.FakeAuthorizator; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.StoreMailboxManager; import org.apache.james.mailbox.store.StoreSubscriptionManager; @@ -71,7 +72,7 @@ public class MaildirHostSystem extends JamesImapHostSystem { GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); MessageParser messageParser = new MessageParser(); - mailboxManager = new StoreMailboxManager(mailboxSessionMapperFactory, userManager, locker, aclResolver, + mailboxManager = new StoreMailboxManager(mailboxSessionMapperFactory, userManager, new FakeAuthorizator(), locker, aclResolver, groupMembershipResolver, messageParser, new DefaultMessageId.Factory()); mailboxManager.init(); http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java ---------------------------------------------------------------------- diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java index b687c53..e6dbed2 100644 --- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java +++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java @@ -47,6 +47,7 @@ import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; import org.apache.james.mailbox.MessageUid; +import org.apache.james.mailbox.exception.BadCredentialsException; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.ComposedMessageId; import org.apache.james.mailbox.model.Content; @@ -410,6 +411,11 @@ public class MailboxEventAnalyserTest { public boolean hasChildren(MailboxPath mailboxPath, MailboxSession session) throws MailboxException { return false; } + + @Override + public MailboxSession loginAsOtherUser(String adminUserId, String passwd, String realUserId, Logger log) throws BadCredentialsException, MailboxException { + throw new UnsupportedOperationException("Not implemented"); + } }; private final class MyMailboxSession implements MailboxSession { http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java index df0693f..46cc66a 100644 --- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java +++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java @@ -21,6 +21,7 @@ package org.apache.james.modules.mailbox; import javax.inject.Singleton; import org.apache.james.adapter.mailbox.store.UserRepositoryAuthenticator; +import org.apache.james.adapter.mailbox.store.UserRepositoryAuthorizator; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxPathLocker; @@ -40,6 +41,7 @@ import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.store.Authenticator; +import org.apache.james.mailbox.store.Authorizator; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; import org.apache.james.mailbox.store.NoMailboxPathLocker; import org.apache.james.mailbox.store.StoreMessageIdManager; @@ -72,6 +74,7 @@ public class CassandraMailboxModule extends AbstractModule { bind(CassandraModSeqProvider.class).in(Scopes.SINGLETON); bind(CassandraUidProvider.class).in(Scopes.SINGLETON); bind(UserRepositoryAuthenticator.class).in(Scopes.SINGLETON); + bind(UserRepositoryAuthorizator.class).in(Scopes.SINGLETON); bind(CassandraId.Factory.class).in(Scopes.SINGLETON); bind(CassandraMessageId.Factory.class).in(Scopes.SINGLETON); bind(CassandraMessageDAO.class).in(Scopes.SINGLETON); @@ -90,6 +93,7 @@ public class CassandraMailboxModule extends AbstractModule { bind(SubscriptionManager.class).to(CassandraSubscriptionManager.class); bind(MailboxPathLocker.class).to(NoMailboxPathLocker.class); bind(Authenticator.class).to(UserRepositoryAuthenticator.class); + bind(Authorizator.class).to(UserRepositoryAuthorizator.class); bind(MailboxManager.class).to(CassandraMailboxManager.class); bind(MailboxId.Factory.class).to(CassandraId.Factory.class); bind(MessageId.Factory.class).to(CassandraMessageId.Factory.class); http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java b/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java index c12cd00..4feba2f 100644 --- a/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java +++ b/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java @@ -29,6 +29,7 @@ import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.PropertiesConfiguration; import org.apache.james.JPAConfiguration; import org.apache.james.adapter.mailbox.store.UserRepositoryAuthenticator; +import org.apache.james.adapter.mailbox.store.UserRepositoryAuthorizator; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxPathLocker; import org.apache.james.mailbox.SubscriptionManager; @@ -46,6 +47,7 @@ import org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.store.Authenticator; +import org.apache.james.mailbox.store.Authorizator; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; import org.apache.james.mailbox.store.mail.AttachmentMapperFactory; @@ -76,6 +78,7 @@ public class JPAMailboxModule extends AbstractModule { bind(JPAModSeqProvider.class).in(Scopes.SINGLETON); bind(JPAUidProvider.class).in(Scopes.SINGLETON); bind(UserRepositoryAuthenticator.class).in(Scopes.SINGLETON); + bind(UserRepositoryAuthorizator.class).in(Scopes.SINGLETON); bind(JPAId.Factory.class).in(Scopes.SINGLETON); bind(SimpleGroupMembershipResolver.class).in(Scopes.SINGLETON); bind(UnionMailboxACLResolver.class).in(Scopes.SINGLETON); @@ -93,6 +96,7 @@ public class JPAMailboxModule extends AbstractModule { bind(MailboxPathLocker.class).to(JVMMailboxPathLocker.class); bind(Authenticator.class).to(UserRepositoryAuthenticator.class); bind(MailboxManager.class).to(OpenJPAMailboxManager.class); + bind(Authorizator.class).to(UserRepositoryAuthorizator.class); bind(MailboxId.Factory.class).to(JPAId.Factory.class); bind(GroupMembershipResolver.class).to(SimpleGroupMembershipResolver.class); bind(MailboxACLResolver.class).to(UnionMailboxACLResolver.class); http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java index b911b30..09fd4f0 100644 --- a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java +++ b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java @@ -22,6 +22,7 @@ package org.apache.james.modules.mailbox; import javax.inject.Singleton; import org.apache.james.adapter.mailbox.store.UserRepositoryAuthenticator; +import org.apache.james.adapter.mailbox.store.UserRepositoryAuthorizator; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxPathLocker; import org.apache.james.mailbox.MessageIdManager; @@ -43,6 +44,7 @@ import org.apache.james.mailbox.inmemory.mail.InMemoryUidProvider; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.store.Authenticator; +import org.apache.james.mailbox.store.Authorizator; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; import org.apache.james.mailbox.store.StoreSubscriptionManager; @@ -82,6 +84,7 @@ public class MemoryMailboxModule extends AbstractModule { bind(MailboxSessionMapperFactory.class).to(InMemoryMailboxSessionMapperFactory.class); bind(MailboxPathLocker.class).to(JVMMailboxPathLocker.class); bind(Authenticator.class).to(UserRepositoryAuthenticator.class); + bind(Authorizator.class).to(UserRepositoryAuthorizator.class); bind(MailboxManager.class).to(InMemoryMailboxManager.class); bind(MessageIdManager.class).to(InMemoryMessageIdManager.class); bind(MailboxACLResolver.class).to(UnionMailboxACLResolver.class); @@ -96,6 +99,7 @@ public class MemoryMailboxModule extends AbstractModule { bind(StoreSubscriptionManager.class).in(Scopes.SINGLETON); bind(JVMMailboxPathLocker.class).in(Scopes.SINGLETON); bind(UserRepositoryAuthenticator.class).in(Scopes.SINGLETON); + bind(UserRepositoryAuthorizator.class).in(Scopes.SINGLETON); bind(InMemoryMailboxManager.class).in(Scopes.SINGLETON); bind(UnionMailboxACLResolver.class).in(Scopes.SINGLETON); bind(SimpleGroupMembershipResolver.class).in(Scopes.SINGLETON); http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/server/container/mailbox-adapter/pom.xml ---------------------------------------------------------------------- diff --git a/server/container/mailbox-adapter/pom.xml b/server/container/mailbox-adapter/pom.xml index 2c92694..32951dd 100644 --- a/server/container/mailbox-adapter/pom.xml +++ b/server/container/mailbox-adapter/pom.xml @@ -51,10 +51,21 @@ </dependency> <dependency> <groupId>org.apache.james</groupId> + <artifactId>apache-james-mailbox-memory</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.james</groupId> <artifactId>apache-james-mailbox-store</artifactId> </dependency> <dependency> <groupId>org.apache.james</groupId> + <artifactId>apache-james-mailbox-store</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.james</groupId> <artifactId>apache-james-mailbox-maildir</artifactId> </dependency> <dependency> @@ -81,14 +92,8 @@ <scope>test</scope> </dependency> <dependency> - <groupId>org.apache.james</groupId> - <artifactId>apache-james-mailbox-memory</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.james</groupId> - <artifactId>apache-james-mailbox-store</artifactId> - <type>test-jar</type> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> <scope>test</scope> </dependency> </dependencies> http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/store/UserRepositoryAuthorizator.java ---------------------------------------------------------------------- diff --git a/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/store/UserRepositoryAuthorizator.java b/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/store/UserRepositoryAuthorizator.java new file mode 100644 index 0000000..494a499 --- /dev/null +++ b/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/store/UserRepositoryAuthorizator.java @@ -0,0 +1,58 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.adapter.mailbox.store; + +import javax.inject.Inject; + +import org.apache.james.lifecycle.api.LogEnabled; +import org.apache.james.mailbox.store.Authorizator; +import org.apache.james.user.api.UsersRepository; +import org.apache.james.user.api.UsersRepositoryException; +import org.slf4j.Logger; + +/** + * Authorizator which use an UsersRepository to check if the delegation is allowed + */ +public class UserRepositoryAuthorizator implements Authorizator, LogEnabled { + + private final UsersRepository repos; + private Logger log; + + @Inject + public UserRepositoryAuthorizator(UsersRepository repos) { + this.repos = repos; + } + + @Override + public boolean canLoginAsOtherUser(String userId, String otherUserId) { + try { + return repos.isAdministrator(userId) && repos.contains(otherUserId); + } catch (UsersRepositoryException e) { + log.warn("Unable to access UsersRepository", e); + } + return false; + } + + @Override + public void setLog(Logger log) { + this.log = log; + } + +} http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java ---------------------------------------------------------------------- diff --git a/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java index f4c7c5f..dbcd8ac 100644 --- a/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java +++ b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java @@ -29,6 +29,7 @@ import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.FakeAuthenticator; +import org.apache.james.mailbox.store.FakeAuthorizator; import org.apache.james.mailbox.store.StoreMailboxManager; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.Mailbox; @@ -55,6 +56,7 @@ public class MailboxManagementTest { StoreMailboxManager mailboxManager = new StoreMailboxManager( inMemoryMapperFactory, new FakeAuthenticator(), + new FakeAuthorizator(), new JVMMailboxPathLocker(), new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/store/UserRepositoryAuthorizatorTest.java ---------------------------------------------------------------------- diff --git a/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/store/UserRepositoryAuthorizatorTest.java b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/store/UserRepositoryAuthorizatorTest.java new file mode 100644 index 0000000..ea94ba4 --- /dev/null +++ b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/store/UserRepositoryAuthorizatorTest.java @@ -0,0 +1,65 @@ +package org.apache.james.adapter.mailbox.store; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import org.apache.james.user.api.UsersRepository; +import org.apache.james.user.api.UsersRepositoryException; +import org.junit.Before; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class UserRepositoryAuthorizatorTest { + private static final String ADMIN = "admin"; + private static final String USER = "user"; + private static final Logger LOGGER = LoggerFactory.getLogger(UserRepositoryAuthorizatorTest.class); + + private UsersRepository usersRepository; + private UserRepositoryAuthorizator testee; + + @Before + public void setUp() throws Exception { + usersRepository = mock(UsersRepository.class); + testee = new UserRepositoryAuthorizator(usersRepository); + testee.setLog(LOGGER); + } + + @Test + public void canLoginAsOtherUserShouldReturnFalseWhenIsAdministratorThrows() throws Exception { + when(usersRepository.isAdministrator(ADMIN)) + .thenThrow(new UsersRepositoryException("expected error")); + + assertThat(testee.canLoginAsOtherUser(ADMIN, USER)).isFalse(); + } + + @Test + public void canLoginAsOtherUserShouldReturnFalseWhenIsAdministratorReturnFalse() throws Exception { + when(usersRepository.isAdministrator(ADMIN)) + .thenReturn(false); + + assertThat(testee.canLoginAsOtherUser(ADMIN, USER)).isFalse(); + } + + @Test + public void canLoginAsOtherUserShouldReturnFalseWhenUserIsNotInRepository() throws Exception { + when(usersRepository.isAdministrator(ADMIN)) + .thenReturn(true); + when(usersRepository.contains(USER)) + .thenReturn(false); + + assertThat(testee.canLoginAsOtherUser(ADMIN, USER)).isFalse(); + } + + @Test + public void canLoginAsOtherUserShouldReturnTrueWhenAdminAndUserIsInRepository() throws Exception { + when(usersRepository.isAdministrator(ADMIN)) + .thenReturn(true); + when(usersRepository.contains(USER)) + .thenReturn(true); + + assertThat(testee.canLoginAsOtherUser(ADMIN, USER)).isTrue(); + } + +} http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-authorizator.xml ---------------------------------------------------------------------- diff --git a/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-authorizator.xml b/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-authorizator.xml new file mode 100644 index 0000000..0185042 --- /dev/null +++ b/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-authorizator.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> + +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation=" + http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd"> + + <!-- + Mailbox Authorizator + --> + + <bean id="authorizator" class="org.apache.james.adapter.mailbox.store.UserRepositoryAuthorizator"/> + +</beans> http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-hbase.xml ---------------------------------------------------------------------- diff --git a/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-hbase.xml b/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-hbase.xml index da13389..daf6820 100644 --- a/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-hbase.xml +++ b/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-hbase.xml @@ -38,9 +38,10 @@ <bean id="hbase-mailboxmanager" class="org.apache.james.mailbox.hbase.HBaseMailboxManager" init-method="init"> <constructor-arg index="0" ref="hbase-sessionMapperFactory"/> <constructor-arg index="1" ref="authenticator"/> - <constructor-arg index="2" ref="hbase-locker"/> - <constructor-arg index="3" ref="aclResolver"/> - <constructor-arg index="4" ref="groupMembershipResolver"/> + <constructor-arg index="2" ref="authorizator"/> + <constructor-arg index="3" ref="hbase-locker"/> + <constructor-arg index="4" ref="aclResolver"/> + <constructor-arg index="5" ref="groupMembershipResolver"/> </bean> <bean id="hbase-sessionMapperFactory" class="org.apache.james.mailbox.hbase.HBaseMailboxSessionMapperFactory"> http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml ---------------------------------------------------------------------- diff --git a/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml b/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml index 39788f0..a08cedc 100644 --- a/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml +++ b/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml @@ -57,6 +57,14 @@ <!-- =========================================================================== + Authorizator + =========================================================================== + --> + + <import resource="classpath:META-INF/org/apache/james/spring-mailbox-authorizator.xml"/> + + <!-- + =========================================================================== Queues =========================================================================== --> http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/server/protocols/jmap/src/test/java/org/apache/james/jmap/DefaultMailboxesProvisioningFilterThreadTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/DefaultMailboxesProvisioningFilterThreadTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/DefaultMailboxesProvisioningFilterThreadTest.java index ab0c546..abcd91c 100644 --- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/DefaultMailboxesProvisioningFilterThreadTest.java +++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/DefaultMailboxesProvisioningFilterThreadTest.java @@ -263,6 +263,11 @@ public class DefaultMailboxesProvisioningFilterThreadTest { public boolean hasChildren(MailboxPath mailboxPath, MailboxSession session) throws MailboxException { return false; } + + @Override + public MailboxSession loginAsOtherUser(String adminUserId, String passwd, String realUserId, Logger log) throws BadCredentialsException, MailboxException { + return null; + } } } http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java b/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java index 233e652..1b6e453 100644 --- a/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java +++ b/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java @@ -51,6 +51,7 @@ import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory; import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.store.Authenticator; +import org.apache.james.mailbox.store.Authorizator; import org.apache.james.mailbox.store.StoreMailboxManager; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; @@ -738,6 +739,12 @@ public class POP3ServerTest { return false; } } + }, new Authorizator() { + + @Override + public boolean canLoginAsOtherUser(String userId, String otherUserId) { + return false; + } }, aclResolver, groupMembershipResolver, messageParser, new DefaultMessageId.Factory(), MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE); mailboxManager.init(); http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java b/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java index f40315b..bd28679 100644 --- a/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java +++ b/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java @@ -103,6 +103,7 @@ public class UserMailboxesRoutesTest { MessageId.Factory messageIdFactory = new DefaultMessageId.Factory(); InMemoryMailboxManager mailboxManager = new InMemoryMailboxManager(new InMemoryMailboxSessionMapperFactory(), (userid, passwd) -> true, + (adminUserid, userid) -> false, new JVMMailboxPathLocker(), new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
