You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ad...@apache.org on 2017/02/14 12:05:48 UTC
[03/12] james-project git commit: JAMES-1930 Introduce Authorizator
to check users authorizations about delegation
JAMES-1930 Introduce Authorizator to check users authorizations about delegation
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/8b52a2b8
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/8b52a2b8
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/8b52a2b8
Branch: refs/heads/master
Commit: 8b52a2b80c3d5e325eead26c3ab7c3d9be233036
Parents: dfb28bd
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Wed Feb 8 17:54:26 2017 +0100
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Feb 14 11:28:19 2017 +0100
----------------------------------------------------------------------
.../apache/james/mailbox/MailboxManager.java | 28 ++++++++-
.../cassandra/CassandraMailboxManager.java | 20 ++++--
.../cassandra/CassandraMailboxManagerTest.java | 6 +-
.../cassandra/CassandraTestSystemFixture.java | 3 +-
.../CassandraMailboxManagerAttachmentTest.java | 6 +-
.../ElasticSearchIntegrationTest.java | 2 +
.../mailbox/hbase/HBaseMailboxManager.java | 9 +--
.../resources/META-INF/spring/mailbox-hbase.xml | 7 ++-
.../mailbox/hbase/HBaseMailboxManagerTest.java | 7 ++-
.../james/mailbox/jcr/JCRMailboxManager.java | 9 +--
.../resources/META-INF/spring/mailbox-jcr.xml | 7 ++-
.../mailbox/jcr/JCRMailboxManagerTest.java | 6 +-
.../james/mailbox/jpa/JPAMailboxManager.java | 5 +-
.../jpa/openjpa/OpenJPAMailboxManager.java | 13 ++--
.../resources/META-INF/spring/mailbox-jpa.xml | 9 +--
.../mailbox/jpa/JPAMailboxManagerTest.java | 6 +-
.../search/LuceneMessageSearchIndexTest.java | 2 +
.../META-INF/spring/mailbox-maildir.xml | 15 ++---
.../maildir/MaildirMailboxManagerTests.java | 6 +-
.../inmemory/InMemoryMailboxManager.java | 15 ++---
.../META-INF/spring/mailbox-memory.xml | 15 ++---
.../inmemory/InMemoryMailboxManagerTest.java | 3 +-
.../MessageIdManagerTestSystemProvider.java | 4 +-
.../InMemoryMailboxManagerAttachmentTest.java | 6 +-
.../manager/InMemoryIntegrationResources.java | 8 ++-
.../search/SimpleMessageSearchIndexTest.java | 2 +
.../james/mailbox/spring/NoAuthorizator.java | 30 +++++++++
.../james/mailbox/spring/SpringMailbox.java | 2 +-
.../META-INF/spring/mailbox-no-authorizator.xml | 28 +++++++++
mailbox/src/site/xdoc/mailbox-store.xml | 2 +-
.../james/mailbox/store/Authorizator.java | 29 +++++++++
.../james/mailbox/store/FakeAuthorizator.java | 39 ++++++++++++
.../mailbox/store/StoreMailboxManager.java | 30 ++++++---
.../StoreMailboxManagerAnnotationTest.java | 3 +-
.../mailbox/store/StoreMailboxManagerTest.java | 49 +++++++++++++--
.../james/mailbox/copier/MailboxCopierTest.java | 7 +++
.../cassandra/host/CassandraHostSystem.java | 5 +-
.../host/ElasticSearchHostSystem.java | 3 +-
.../imapmailbox/hbase/host/HBaseHostSystem.java | 4 +-
.../InMemoryEventAsynchronousHostSystem.java | 3 +-
.../inmemory/host/InMemoryHostSystem.java | 3 +-
.../mpt/imapmailbox/jcr/host/JCRHostSystem.java | 3 +-
.../mpt/imapmailbox/jpa/host/JPAHostSystem.java | 3 +-
.../host/LuceneSearchHostSystem.java | 3 +-
.../maildir/host/MaildirHostSystem.java | 3 +-
.../base/MailboxEventAnalyserTest.java | 6 ++
.../modules/mailbox/CassandraMailboxModule.java | 4 ++
.../james/modules/mailbox/JPAMailboxModule.java | 4 ++
.../modules/mailbox/MemoryMailboxModule.java | 4 ++
server/container/mailbox-adapter/pom.xml | 21 ++++---
.../store/UserRepositoryAuthorizator.java | 58 +++++++++++++++++
.../adapter/mailbox/MailboxManagementTest.java | 2 +
.../store/UserRepositoryAuthorizatorTest.java | 65 ++++++++++++++++++++
.../james/spring-mailbox-authorizator.xml | 32 ++++++++++
.../org/apache/james/spring-mailbox-hbase.xml | 7 ++-
.../META-INF/org/apache/james/spring-server.xml | 8 +++
...ltMailboxesProvisioningFilterThreadTest.java | 5 ++
.../apache/james/pop3server/POP3ServerTest.java | 7 +++
.../routes/UserMailboxesRoutesTest.java | 1 +
59 files changed, 586 insertions(+), 106 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
index d152466..0cf3e1a 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
@@ -273,7 +273,7 @@ public interface MailboxManager extends RequestAware, MailboxListenerSupport {
/**
* Autenticates the given user against the given password.<br>
- * When authentic and authorized, a session will be supplied
+ * When authenticated and authorized, a session will be supplied
*
* @param userid
* user name
@@ -281,16 +281,38 @@ public interface MailboxManager extends RequestAware, MailboxListenerSupport {
* password supplied
* @param log
* context sensitive log
- * @return a <code>MailboxSession</code> when the user is authentic and
+ * @return a <code>MailboxSession</code> when the user is authenticated and
* authorized to access
* @throws BadCredentialsException
- * when system access is denighed for the given user
+ * when system access is denied for the given user
* @throws MailboxException
* when the creation fails for other reasons
*/
MailboxSession login(String userid, String passwd, Logger log) throws BadCredentialsException, MailboxException;
/**
+ * Autenticates the given administrator against the given password,
+ * then switch to an other user<br>
+ * When authenticated and authorized, a session for the other user will be supplied
+ *
+ * @param adminUserId
+ * user name of the admin user, matching the credentials
+ * @param passwd
+ * password supplied for the admin user
+ * @param otherUserId
+ * user name of the real user
+ * @param log
+ * context sensitive log
+ * @return a <code>MailboxSession</code> for the real user
+ * when the admin is authenticated and authorized to access
+ * @throws BadCredentialsException
+ * when system access is denied for the given user
+ * @throws MailboxException
+ * when the creation fails for other reasons
+ */
+ MailboxSession loginAsOtherUser(String adminUserId, String passwd, String otherUserId, Logger log) throws BadCredentialsException, MailboxException;
+
+ /**
* <p>
* Logs the session out, freeing any resources. Clients who open session
* should make best efforts to call this when the session is closed.
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
index 5175bff..c1cb183 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
@@ -36,6 +36,7 @@ import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.SimpleMailboxACL;
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.StoreMessageManager;
import org.apache.james.mailbox.store.event.DelegatingMailboxListener;
@@ -52,11 +53,12 @@ public class CassandraMailboxManager extends StoreMailboxManager {
private final MailboxPathLocker locker;
@Inject
- public CassandraMailboxManager(CassandraMailboxSessionMapperFactory mapperFactory, Authenticator authenticator,
+ public CassandraMailboxManager(CassandraMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, Authorizator authorizator,
MailboxPathLocker locker, MessageParser messageParser, MessageId.Factory messageIdFactory,
MailboxEventDispatcher mailboxEventDispatcher, DelegatingMailboxListener delegatingMailboxListener) {
super(mapperFactory,
authenticator,
+ authorizator,
locker,
new UnionMailboxACLResolver(),
new SimpleGroupMembershipResolver(),
@@ -69,10 +71,11 @@ public class CassandraMailboxManager extends StoreMailboxManager {
this.locker = locker;
}
- public CassandraMailboxManager(CassandraMailboxSessionMapperFactory mapperFactory, Authenticator authenticator,
+ public CassandraMailboxManager(CassandraMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, Authorizator authorizator,
MailboxPathLocker locker, MessageParser messageParser, MessageId.Factory messageIdFactory) {
super(mapperFactory,
authenticator,
+ authorizator,
locker,
new UnionMailboxACLResolver(),
new SimpleGroupMembershipResolver(),
@@ -81,9 +84,18 @@ public class CassandraMailboxManager extends StoreMailboxManager {
this.locker = locker;
}
- public CassandraMailboxManager(CassandraMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, MailboxPathLocker locker, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, MessageParser messageParser,
+ public CassandraMailboxManager(CassandraMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, Authorizator authorizator,
+ MailboxPathLocker locker, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, MessageParser messageParser,
MessageId.Factory messageIdFactory, int limitOfAnnotations, int limitAnnotationSize) {
- super(mapperFactory, authenticator, aclResolver, groupMembershipResolver, messageParser, messageIdFactory, limitOfAnnotations, limitAnnotationSize);
+ super(mapperFactory,
+ authenticator,
+ authorizator,
+ aclResolver,
+ groupMembershipResolver,
+ messageParser,
+ messageIdFactory,
+ limitOfAnnotations,
+ limitAnnotationSize);
this.locker = locker;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
index caadf4b..281dbf9 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
@@ -42,6 +42,8 @@ import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.store.Authenticator;
+import org.apache.james.mailbox.store.Authorizator;
import org.apache.james.mailbox.store.NoMailboxPathLocker;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
import org.junit.runner.RunWith;
@@ -98,7 +100,9 @@ public class CassandraMailboxManagerTest {
GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
MessageParser messageParser = new MessageParser();
- CassandraMailboxManager manager = new CassandraMailboxManager(mapperFactory, null, new NoMailboxPathLocker(), aclResolver, groupMembershipResolver,
+ Authenticator noAuthenticator = null;
+ Authorizator noAuthorizator = null;
+ CassandraMailboxManager manager = new CassandraMailboxManager(mapperFactory, noAuthenticator, noAuthorizator, new NoMailboxPathLocker(), aclResolver, groupMembershipResolver,
messageParser, messageIdFactory, LIMIT_ANNOTATIONS, LIMIT_ANNOTATION_SIZE);
try {
manager.init();
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
index 0999c8e..c466e93 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
@@ -41,6 +41,7 @@ import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.store.Authenticator;
+import org.apache.james.mailbox.store.Authorizator;
import org.apache.james.mailbox.store.NoMailboxPathLocker;
import org.apache.james.mailbox.store.StoreMessageIdManager;
import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
@@ -82,7 +83,7 @@ public class CassandraTestSystemFixture {
}
public static CassandraMailboxManager createMailboxManager(CassandraMailboxSessionMapperFactory mapperFactory) throws Exception{
- CassandraMailboxManager cassandraMailboxManager = new CassandraMailboxManager(mapperFactory, mock(Authenticator.class),
+ CassandraMailboxManager cassandraMailboxManager = new CassandraMailboxManager(mapperFactory, mock(Authenticator.class), mock(Authorizator.class),
new NoMailboxPathLocker(), new MessageParser(), new CassandraMessageId.Factory());
cassandraMailboxManager.init();
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
index 93228aa..6c717ac 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
@@ -38,6 +38,7 @@ import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
import org.apache.james.mailbox.store.AbstractMailboxManagerAttachmentTest;
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.mail.model.impl.MessageParser;
@@ -70,12 +71,13 @@ public class CassandraMailboxManagerAttachmentTest extends AbstractMailboxManage
new CassandraMailboxCounterDAO(cassandra.getConf()),
new CassandraMailboxRecentsDAO(cassandra.getConf()));
Authenticator noAuthenticator = null;
- mailboxManager = new CassandraMailboxManager(mailboxSessionMapperFactory, noAuthenticator, new NoMailboxPathLocker(), new MessageParser(), messageIdFactory);
+ Authorizator noAuthorizator = null;
+ mailboxManager = new CassandraMailboxManager(mailboxSessionMapperFactory, noAuthenticator, noAuthorizator, new NoMailboxPathLocker(), new MessageParser(), messageIdFactory);
mailboxManager.init();
MessageParser failingMessageParser = mock(MessageParser.class);
when(failingMessageParser.retrieveAttachments(any()))
.thenThrow(new RuntimeException("Message parser set to fail"));
- parseFailingMailboxManager = new CassandraMailboxManager(mailboxSessionMapperFactory, noAuthenticator, new NoMailboxPathLocker(), failingMessageParser, messageIdFactory);
+ parseFailingMailboxManager = new CassandraMailboxManager(mailboxSessionMapperFactory, noAuthenticator, noAuthorizator, new NoMailboxPathLocker(), failingMessageParser, messageIdFactory);
parseFailingMailboxManager.init();
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
index 92b2331..e8e07d5 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
import org.apache.james.mailbox.inmemory.InMemoryMessageId;
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.MailboxSessionMapperFactory;
import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
@@ -93,6 +94,7 @@ public class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest
storeMailboxManager = new InMemoryMailboxManager(
mapperFactory,
new FakeAuthenticator(),
+ new FakeAuthorizator(),
new JVMMailboxPathLocker(),
new UnionMailboxACLResolver(),
new SimpleGroupMembershipResolver(),
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java
index baae851..76c83e5 100644
--- a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java
+++ b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java
@@ -30,6 +30,7 @@ import org.apache.james.mailbox.hbase.mail.model.HBaseMailbox;
import org.apache.james.mailbox.model.MailboxPath;
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.StoreMailboxManager;
import org.apache.james.mailbox.store.StoreMessageManager;
@@ -43,16 +44,16 @@ import org.apache.james.mailbox.store.transaction.TransactionalMapper;
*/
public class HBaseMailboxManager extends StoreMailboxManager {
- public HBaseMailboxManager(HBaseMailboxSessionMapperFactory mapperFactory, Authenticator authenticator,
+ public HBaseMailboxManager(HBaseMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, Authorizator authorizator,
MailboxPathLocker locker, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver,
MessageParser messageParser, MessageId.Factory messageIdFactory) {
- super(mapperFactory, authenticator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory);
+ super(mapperFactory, authenticator, authorizator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory);
}
- public HBaseMailboxManager(HBaseMailboxSessionMapperFactory mapperFactory, Authenticator authenticator,
+ public HBaseMailboxManager(HBaseMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, Authorizator authorizator,
MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver,
MessageParser messageParser, MessageId.Factory messageIdFactory) {
- super(mapperFactory, authenticator, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver, messageParser, messageIdFactory);
+ super(mapperFactory, authenticator, authorizator, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver, messageParser, messageIdFactory);
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/hbase/src/main/resources/META-INF/spring/mailbox-hbase.xml
----------------------------------------------------------------------
diff --git a/mailbox/hbase/src/main/resources/META-INF/spring/mailbox-hbase.xml b/mailbox/hbase/src/main/resources/META-INF/spring/mailbox-hbase.xml
index 5fe31b8..315a1b5 100644
--- a/mailbox/hbase/src/main/resources/META-INF/spring/mailbox-hbase.xml
+++ b/mailbox/hbase/src/main/resources/META-INF/spring/mailbox-hbase.xml
@@ -40,9 +40,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"/>
<property name="quotaManager" ref="quotaManager"/>
<property name="maxQuotaManager" ref="maxQuotaManager"/>
<property name="quotaRootResolver" ref="quotaRootResolver"/>
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java
index 7cf8f74..f0d76ce 100644
--- a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java
+++ b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java
@@ -36,6 +36,8 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.hbase.mail.HBaseModSeqProvider;
import org.apache.james.mailbox.hbase.mail.HBaseUidProvider;
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.mail.model.DefaultMessageId;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
import org.junit.runner.RunWith;
@@ -64,8 +66,11 @@ public class HBaseMailboxManagerTest {
HBaseMailboxSessionMapperFactory mapperFactory = new HBaseMailboxSessionMapperFactory(CLUSTER.getConf(),
uidProvider, modSeqProvider, messageIdFactory);
+ Authenticator noAuthenticator = null;
+ Authorizator noAuthorizator = null;
HBaseMailboxManager manager = new HBaseMailboxManager(mapperFactory,
- null,
+ noAuthenticator,
+ noAuthorizator,
new UnionMailboxACLResolver(),
new SimpleGroupMembershipResolver(),
new MessageParser(),
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java
index 2e0c26d..9efe0ec 100644
--- a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java
+++ b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java
@@ -29,6 +29,7 @@ import org.apache.james.mailbox.jcr.mail.model.JCRMailbox;
import org.apache.james.mailbox.model.MailboxPath;
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.StoreMailboxManager;
import org.apache.james.mailbox.store.StoreMessageManager;
@@ -45,16 +46,16 @@ public class JCRMailboxManager extends StoreMailboxManager implements JCRImapCon
private final Logger logger = LoggerFactory.getLogger(JCRMailboxManager.class);
- public JCRMailboxManager(JCRMailboxSessionMapperFactory mapperFactory, Authenticator authenticator,
+ public JCRMailboxManager(JCRMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, Authorizator authorizator,
MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver,
MessageParser messageParser, MessageId.Factory messageIdFactory) {
- this(mapperFactory, authenticator, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver, messageParser, messageIdFactory);
+ this(mapperFactory, authenticator, authorizator, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver, messageParser, messageIdFactory);
}
- public JCRMailboxManager(JCRMailboxSessionMapperFactory mapperFactory, Authenticator authenticator,
+ public JCRMailboxManager(JCRMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, Authorizator authorizator,
MailboxPathLocker locker, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver,
MessageParser messageParser, MessageId.Factory messageIdFactory) {
- super(mapperFactory, authenticator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory);
+ super(mapperFactory, authenticator, authorizator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory);
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/jcr/src/main/resources/META-INF/spring/mailbox-jcr.xml
----------------------------------------------------------------------
diff --git a/mailbox/jcr/src/main/resources/META-INF/spring/mailbox-jcr.xml b/mailbox/jcr/src/main/resources/META-INF/spring/mailbox-jcr.xml
index 3f4ea84..ccc7451 100644
--- a/mailbox/jcr/src/main/resources/META-INF/spring/mailbox-jcr.xml
+++ b/mailbox/jcr/src/main/resources/META-INF/spring/mailbox-jcr.xml
@@ -30,9 +30,10 @@
<bean id="jcr-mailboxmanager" class="org.apache.james.mailbox.jcr.JCRMailboxManager" init-method="init">
<constructor-arg index="0" ref="jcr-sessionMapperFactory"/>
<constructor-arg index="1" ref="authenticator"/>
- <constructor-arg index="2" ref="jcr-locker"/>
- <constructor-arg index="3" ref="aclResolver"/>
- <constructor-arg index="4" ref="groupMembershipResolver"/>
+ <constructor-arg index="2" ref="authorizator"/>
+ <constructor-arg index="3" ref="jcr-locker"/>
+ <constructor-arg index="4" ref="aclResolver"/>
+ <constructor-arg index="5" ref="groupMembershipResolver"/>
<property name="quotaManager" ref="quotaManager"/>
<property name="quotaRootResolver" ref="quotaRootResolver"/>
<property name="quotaUpdater" ref="quotaUpdater"/>
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java
index ce48e91..7fda2a6 100644
--- a/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java
+++ b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java
@@ -37,6 +37,8 @@ import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.jcr.mail.JCRModSeqProvider;
import org.apache.james.mailbox.jcr.mail.JCRUidProvider;
+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.mail.model.DefaultMessageId;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -88,7 +90,9 @@ public class JCRMailboxManagerTest extends MailboxManagerTest<JCRMailboxManager>
GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
MessageParser messageParser = new MessageParser();
- JCRMailboxManager manager = new JCRMailboxManager(mf, null, locker, aclResolver, groupMembershipResolver,
+ Authenticator noAuthenticator = null;
+ Authorizator noAuthorizator = null;
+ JCRMailboxManager manager = new JCRMailboxManager(mf, noAuthenticator, noAuthorizator, locker, aclResolver, groupMembershipResolver,
messageParser, new DefaultMessageId.Factory());
try {
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
index 11a4578..3754b78 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
@@ -30,6 +30,7 @@ import org.apache.james.mailbox.jpa.mail.model.JPAMailbox;
import org.apache.james.mailbox.model.MailboxPath;
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.StoreMailboxManager;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -41,9 +42,9 @@ import org.apache.james.mailbox.store.transaction.TransactionalMapper;
public abstract class JPAMailboxManager extends StoreMailboxManager {
public JPAMailboxManager(JPAMailboxSessionMapperFactory mailboxSessionMapperFactory,
- final Authenticator authenticator, MailboxPathLocker locker, MailboxACLResolver aclResolver,
+ Authenticator authenticator, Authorizator authorizator, MailboxPathLocker locker, MailboxACLResolver aclResolver,
GroupMembershipResolver groupMembershipResolver, MessageParser messageParser, MessageId.Factory messageIdFactory) {
- super(mailboxSessionMapperFactory, authenticator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory);
+ super(mailboxSessionMapperFactory, authenticator, authorizator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory);
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java
index 514a606..f8a2dbb 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java
@@ -33,6 +33,7 @@ import org.apache.james.mailbox.jpa.mail.model.openjpa.EncryptDecryptHelper;
import org.apache.james.mailbox.jpa.openjpa.OpenJPAMessageManager.AdvancedFeature;
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.StoreMessageManager;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -46,10 +47,10 @@ public class OpenJPAMailboxManager extends JPAMailboxManager {
private final AdvancedFeature feature;
- public OpenJPAMailboxManager(JPAMailboxSessionMapperFactory mapperFactory, Authenticator authenticator,
+ public OpenJPAMailboxManager(JPAMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, Authorizator authorizator,
MailboxPathLocker locker, boolean useStreaming, MailboxACLResolver aclResolver,
GroupMembershipResolver groupMembershipResolver, MessageParser messageParser, MessageId.Factory messageIdFactory) {
- super(mapperFactory, authenticator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory);
+ super(mapperFactory, authenticator, authorizator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory);
if (useStreaming) {
feature = AdvancedFeature.Streaming;
} else {
@@ -57,10 +58,10 @@ public class OpenJPAMailboxManager extends JPAMailboxManager {
}
}
- public OpenJPAMailboxManager(JPAMailboxSessionMapperFactory mapperFactory, Authenticator authenticator,
+ public OpenJPAMailboxManager(JPAMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, Authorizator authorizator,
MailboxPathLocker locker, String encryptPass, MailboxACLResolver aclResolver,
GroupMembershipResolver groupMembershipResolver, MessageParser messageParser, MessageId.Factory messageIdFactory) {
- super(mapperFactory, authenticator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory);
+ super(mapperFactory, authenticator, authorizator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory);
if (encryptPass != null) {
EncryptDecryptHelper.init(encryptPass);
feature = AdvancedFeature.Encryption;
@@ -70,10 +71,10 @@ public class OpenJPAMailboxManager extends JPAMailboxManager {
}
@Inject
- public OpenJPAMailboxManager(JPAMailboxSessionMapperFactory mapperFactory, Authenticator authenticator,
+ public OpenJPAMailboxManager(JPAMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, Authorizator authorizator,
MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver,
MessageParser messageParser, MessageId.Factory messageIdFactory) {
- this(mapperFactory, authenticator, new JVMMailboxPathLocker(), false, aclResolver, groupMembershipResolver, messageParser, messageIdFactory);
+ this(mapperFactory, authenticator, authorizator, new JVMMailboxPathLocker(), false, aclResolver, groupMembershipResolver, messageParser, messageIdFactory);
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/jpa/src/main/resources/META-INF/spring/mailbox-jpa.xml
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/main/resources/META-INF/spring/mailbox-jpa.xml b/mailbox/jpa/src/main/resources/META-INF/spring/mailbox-jpa.xml
index a4fa05d..6fc298d 100644
--- a/mailbox/jpa/src/main/resources/META-INF/spring/mailbox-jpa.xml
+++ b/mailbox/jpa/src/main/resources/META-INF/spring/mailbox-jpa.xml
@@ -34,10 +34,11 @@
<bean id="jpa-mailboxmanager" class="org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager" init-method="init">
<constructor-arg index="0" ref="jpa-sessionMapperFactory"/>
<constructor-arg index="1" ref="authenticator"/>
- <constructor-arg index="2" ref="aclResolver"/>
- <constructor-arg index="3" ref="groupMembershipResolver"/>
- <constructor-arg index="4" ref="messageParser"/>
- <constructor-arg index="5" ref="messageIdFactory"/>
+ <constructor-arg index="2" ref="authorizator"/>
+ <constructor-arg index="3" ref="aclResolver"/>
+ <constructor-arg index="4" ref="groupMembershipResolver"/>
+ <constructor-arg index="5" ref="messageParser"/>
+ <constructor-arg index="6" ref="messageIdFactory"/>
<property name="quotaManager" ref="quotaManager"/>
<property name="quotaRootResolver" ref="quotaRootResolver"/>
<property name="quotaUpdater" ref="quotaUpdater"/>
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java
index f9d19dc..64e7ecb 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java
@@ -30,6 +30,8 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.jpa.mail.JPAModSeqProvider;
import org.apache.james.mailbox.jpa.mail.JPAUidProvider;
import org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager;
+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.mail.model.DefaultMessageId;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -67,7 +69,9 @@ public class JPAMailboxManagerTest {
GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
MessageParser messageParser = new MessageParser();
- openJPAMailboxManager = new OpenJPAMailboxManager(mf, null, aclResolver, groupMembershipResolver, messageParser, new DefaultMessageId.Factory());
+ Authenticator noAuthenticator = null;
+ Authorizator noAuthorizator = null;
+ openJPAMailboxManager = new OpenJPAMailboxManager(mf, noAuthenticator, noAuthorizator, aclResolver, groupMembershipResolver, messageParser, new DefaultMessageId.Factory());
try {
openJPAMailboxManager.init();
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
----------------------------------------------------------------------
diff --git a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
index 62ce25f..210bd98 100644
--- a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
+++ b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
@@ -27,6 +27,7 @@ import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
import org.apache.james.mailbox.model.TestMessageId;
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.MailboxSessionMapperFactory;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -47,6 +48,7 @@ public class LuceneMessageSearchIndexTest extends AbstractMessageSearchIndexTest
storeMailboxManager = new InMemoryMailboxManager(
mapperFactory,
new FakeAuthenticator(),
+ new FakeAuthorizator(),
new JVMMailboxPathLocker(),
new UnionMailboxACLResolver(),
new SimpleGroupMembershipResolver(),
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/maildir/src/main/resources/META-INF/spring/mailbox-maildir.xml
----------------------------------------------------------------------
diff --git a/mailbox/maildir/src/main/resources/META-INF/spring/mailbox-maildir.xml b/mailbox/maildir/src/main/resources/META-INF/spring/mailbox-maildir.xml
index 0c00e7f..66f65c8 100644
--- a/mailbox/maildir/src/main/resources/META-INF/spring/mailbox-maildir.xml
+++ b/mailbox/maildir/src/main/resources/META-INF/spring/mailbox-maildir.xml
@@ -36,13 +36,14 @@
<bean id="maildir-mailboxmanager" class="org.apache.james.mailbox.store.StoreMailboxManager" init-method="init">
<constructor-arg index="0" ref="maildir-sessionMapperFactory"/>
<constructor-arg index="1" ref="authenticator"/>
- <constructor-arg index="2" ref="maildir-locker"/>
- <constructor-arg index="3" ref="aclResolver"/>
- <constructor-arg index="4" ref="groupMembershipResolver"/>
- <constructor-arg index="5" ref="messageParser"/>
- <constructor-arg index="6" ref="messageIdFactory" />
- <constructor-arg index="7" ref="dispatcher" />
- <constructor-arg index="8" ref="delegating-listener" />
+ <constructor-arg index="2" ref="authorizator"/>
+ <constructor-arg index="3" ref="maildir-locker"/>
+ <constructor-arg index="4" ref="aclResolver"/>
+ <constructor-arg index="5" ref="groupMembershipResolver"/>
+ <constructor-arg index="6" ref="messageParser"/>
+ <constructor-arg index="7" ref="messageIdFactory" />
+ <constructor-arg index="8" ref="dispatcher" />
+ <constructor-arg index="9" ref="delegating-listener" />
<!-- <property name="messageSearchIndex" ref="lazyIndex"/> -->
<property name="quotaManager" ref="quotaManager"/>
<property name="quotaRootResolver" ref="quotaRootResolver"/>
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerTests.java
----------------------------------------------------------------------
diff --git a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerTests.java b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerTests.java
index 2c3a13d..85875b0 100644
--- a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerTests.java
+++ b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerTests.java
@@ -27,6 +27,8 @@ import org.apache.james.mailbox.acl.MailboxACLResolver;
import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
import org.apache.james.mailbox.exception.MailboxException;
+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.StoreMailboxManager;
import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
@@ -59,7 +61,9 @@ public class MaildirMailboxManagerTests {
GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
MessageParser messageParser = new MessageParser();
- StoreMailboxManager manager = new StoreMailboxManager(mf, null, new JVMMailboxPathLocker(), aclResolver,
+ Authenticator noAuthenticator = null;
+ Authorizator noAuthorizator = null;
+ StoreMailboxManager manager = new StoreMailboxManager(mf, noAuthenticator, noAuthorizator, new JVMMailboxPathLocker(), aclResolver,
groupMembershipResolver, messageParser, new DefaultMessageId.Factory());
manager.init();
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
index 5793c1a..a37b43d 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
@@ -31,6 +31,7 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MailboxConstants;
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.StoreMailboxManager;
import org.apache.james.mailbox.store.StoreMessageManager;
@@ -42,25 +43,25 @@ import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
public class InMemoryMailboxManager extends StoreMailboxManager {
@Inject
- public InMemoryMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, Authenticator authenticator,
+ public InMemoryMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, Authenticator authenticator, Authorizator authorizator,
MailboxPathLocker locker, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver,
MessageParser messageParser, MessageId.Factory messageIdFactory, MailboxEventDispatcher dispatcher,
DelegatingMailboxListener delegatingMailboxListener) {
- super(mailboxSessionMapperFactory, authenticator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory,
+ super(mailboxSessionMapperFactory, authenticator, authorizator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory,
MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE, dispatcher,
delegatingMailboxListener);
}
- public InMemoryMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, Authenticator authenticator,
+ public InMemoryMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, Authenticator authenticator, Authorizator authorizator,
MailboxPathLocker locker, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver,
MessageParser messageParser, MessageId.Factory messageIdFactory) {
- super(mailboxSessionMapperFactory, authenticator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory);
+ super(mailboxSessionMapperFactory, authenticator, authorizator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory);
}
- public InMemoryMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, Authenticator authenticator, MailboxACLResolver aclResolver,
- GroupMembershipResolver groupMembershipResolver, MessageParser messageParser,
+ public InMemoryMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, Authenticator authenticator, Authorizator authorizator,
+ MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, MessageParser messageParser,
MessageId.Factory messageIdFactory, int limitOfAnnotations, int limitAnnotationSize) {
- super(mailboxSessionMapperFactory, authenticator, aclResolver, groupMembershipResolver, messageParser, messageIdFactory, limitOfAnnotations, limitAnnotationSize);
+ super(mailboxSessionMapperFactory, authenticator, authorizator, aclResolver, groupMembershipResolver, messageParser, messageIdFactory, limitOfAnnotations, limitAnnotationSize);
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/memory/src/main/resources/META-INF/spring/mailbox-memory.xml
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/main/resources/META-INF/spring/mailbox-memory.xml b/mailbox/memory/src/main/resources/META-INF/spring/mailbox-memory.xml
index 41205db..d75ced9 100644
--- a/mailbox/memory/src/main/resources/META-INF/spring/mailbox-memory.xml
+++ b/mailbox/memory/src/main/resources/META-INF/spring/mailbox-memory.xml
@@ -34,13 +34,14 @@
<bean id="memory-mailboxManager" class="org.apache.james.mailbox.store.StoreMailboxManager" init-method="init">
<constructor-arg index="0" ref="memory-sessionMapperFactory"/>
<constructor-arg index="1" ref="authenticator"/>
- <constructor-arg index="2" ref="memory-locker"/>
- <constructor-arg index="3" ref="aclResolver"/>
- <constructor-arg index="4" ref="groupMembershipResolver"/>
- <constructor-arg index="5" ref="messageParser"/>
- <constructor-arg index="6" ref="messageIdFactory" />
- <constructor-arg index="7" ref="dispatcher" />
- <constructor-arg index="8" ref="delegating-listener" />
+ <constructor-arg index="2" ref="authorizator"/>
+ <constructor-arg index="3" ref="memory-locker"/>
+ <constructor-arg index="4" ref="aclResolver"/>
+ <constructor-arg index="5" ref="groupMembershipResolver"/>
+ <constructor-arg index="6" ref="messageParser"/>
+ <constructor-arg index="7" ref="messageIdFactory" />
+ <constructor-arg index="8" ref="dispatcher" />
+ <constructor-arg index="9" ref="delegating-listener" />
<!-- <property name="messageSearchIndex" ref="lazyIndex"/> -->
<property name="quotaManager" ref="quotaManager"/>
<property name="quotaRootResolver" ref="quotaRootResolver"/>
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManagerTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManagerTest.java
index fe0160c..f6bb97c 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManagerTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManagerTest.java
@@ -26,6 +26,7 @@ import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
import org.apache.james.mailbox.exception.MailboxException;
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.mail.model.impl.MessageParser;
import org.junit.runner.RunWith;
import org.xenei.junit.contract.Contract;
@@ -51,7 +52,7 @@ public class InMemoryMailboxManagerTest {
InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new InMemoryMailboxSessionMapperFactory();
MessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
- InMemoryMailboxManager mailboxManager = new InMemoryMailboxManager(mailboxSessionMapperFactory, new FakeAuthenticator(),
+ InMemoryMailboxManager mailboxManager = new InMemoryMailboxManager(mailboxSessionMapperFactory, new FakeAuthenticator(), new FakeAuthorizator(),
aclResolver, groupMembershipResolver, messageParser, messageIdFactory, LIMIT_ANNOTATIONS, LIMIT_ANNOTATION_SIZE);
try {
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java
index 6edc24f..cd54d43 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java
@@ -26,6 +26,7 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.manager.MailboxManagerFixture;
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.CombinationManagerTestSystem;
import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -56,9 +57,10 @@ public class MessageIdManagerTestSystemProvider {
InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new InMemoryMailboxSessionMapperFactory();
MessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
FakeAuthenticator authenticator = new FakeAuthenticator();
+ FakeAuthorizator authorizator = new FakeAuthorizator();
authenticator.addUser(MailboxManagerFixture.USER, PASSWORD);
authenticator.addUser(MailboxManagerFixture.OTHER_USER, PASSWORD);
- InMemoryMailboxManager mailboxManager = new InMemoryMailboxManager(mailboxSessionMapperFactory, authenticator,
+ InMemoryMailboxManager mailboxManager = new InMemoryMailboxManager(mailboxSessionMapperFactory, authenticator, authorizator,
aclResolver, groupMembershipResolver, messageParser, messageIdFactory, LIMIT_ANNOTATIONS, LIMIT_ANNOTATION_SIZE);
try {
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
index 614c5cf..df422f0 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
@@ -33,6 +33,7 @@ import org.apache.james.mailbox.inmemory.InMemoryMessageId;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.store.AbstractMailboxManagerAttachmentTest;
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.mail.model.impl.MessageParser;
@@ -46,14 +47,15 @@ public class InMemoryMailboxManagerAttachmentTest extends AbstractMailboxManager
public InMemoryMailboxManagerAttachmentTest() throws Exception {
mailboxSessionMapperFactory = new InMemoryMailboxSessionMapperFactory();
Authenticator noAuthenticator = null;
+ Authorizator noAuthorizator = null;
MessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
- mailboxManager = new InMemoryMailboxManager(mailboxSessionMapperFactory, noAuthenticator, new NoMailboxPathLocker(),
+ mailboxManager = new InMemoryMailboxManager(mailboxSessionMapperFactory, noAuthenticator, noAuthorizator, new NoMailboxPathLocker(),
new UnionMailboxACLResolver(), null, new MessageParser(), messageIdFactory);
mailboxManager.init();
MessageParser failingMessageParser = mock(MessageParser.class);
when(failingMessageParser.retrieveAttachments(any(InputStream.class)))
.thenThrow(new RuntimeException("Message parser set to fail"));
- parseFailingMailboxManager = new InMemoryMailboxManager(mailboxSessionMapperFactory, noAuthenticator, new NoMailboxPathLocker(),
+ parseFailingMailboxManager = new InMemoryMailboxManager(mailboxSessionMapperFactory, noAuthenticator, noAuthorizator, new NoMailboxPathLocker(),
new UnionMailboxACLResolver(), null, failingMessageParser, messageIdFactory);
parseFailingMailboxManager.init();
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java
index 835b6bc..cc7d22d 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java
@@ -37,6 +37,7 @@ import org.apache.james.mailbox.quota.MaxQuotaManager;
import org.apache.james.mailbox.quota.QuotaManager;
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.NoMailboxPathLocker;
import org.apache.james.mailbox.store.StoreMailboxManager;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -52,12 +53,13 @@ public class InMemoryIntegrationResources implements IntegrationResources {
@Override
public MailboxManager createMailboxManager(GroupMembershipResolver groupMembershipResolver) throws MailboxException {
- FakeAuthenticator mockAuthenticator = new FakeAuthenticator();
- mockAuthenticator.addUser(ManagerTestResources.USER, ManagerTestResources.USER_PASS);
+ FakeAuthenticator fakeAuthenticator = new FakeAuthenticator();
+ fakeAuthenticator.addUser(ManagerTestResources.USER, ManagerTestResources.USER_PASS);
InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new InMemoryMailboxSessionMapperFactory();
final StoreMailboxManager manager = new InMemoryMailboxManager(
mailboxSessionMapperFactory,
- mockAuthenticator,
+ fakeAuthenticator,
+ new FakeAuthorizator(),
new NoMailboxPathLocker(),
new UnionMailboxACLResolver(),
groupMembershipResolver,
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java
----------------------------------------------------------------------
diff --git a/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java b/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java
index c005b9c..694778b 100644
--- a/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java
+++ b/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java
@@ -26,6 +26,7 @@ import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
import org.apache.james.mailbox.inmemory.InMemoryMessageId;
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.MailboxSessionMapperFactory;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -44,6 +45,7 @@ public class SimpleMessageSearchIndexTest extends AbstractMessageSearchIndexTest
storeMailboxManager = new InMemoryMailboxManager(
mapperFactory,
new FakeAuthenticator(),
+ new FakeAuthorizator(),
new JVMMailboxPathLocker(),
new UnionMailboxACLResolver(),
new SimpleGroupMembershipResolver(),
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/spring/src/main/java/org/apache/james/mailbox/spring/NoAuthorizator.java
----------------------------------------------------------------------
diff --git a/mailbox/spring/src/main/java/org/apache/james/mailbox/spring/NoAuthorizator.java b/mailbox/spring/src/main/java/org/apache/james/mailbox/spring/NoAuthorizator.java
new file mode 100644
index 0000000..88500c3
--- /dev/null
+++ b/mailbox/spring/src/main/java/org/apache/james/mailbox/spring/NoAuthorizator.java
@@ -0,0 +1,30 @@
+/****************************************************************
+ * 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.mailbox.spring;
+
+import org.apache.james.mailbox.store.Authorizator;
+
+public class NoAuthorizator implements Authorizator {
+
+ @Override
+ public boolean canLoginAsOtherUser(String userId, String otherUserId) {
+ return false;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/spring/src/main/java/org/apache/james/mailbox/spring/SpringMailbox.java
----------------------------------------------------------------------
diff --git a/mailbox/spring/src/main/java/org/apache/james/mailbox/spring/SpringMailbox.java b/mailbox/spring/src/main/java/org/apache/james/mailbox/spring/SpringMailbox.java
index 176d22d..db85ad8 100644
--- a/mailbox/spring/src/main/java/org/apache/james/mailbox/spring/SpringMailbox.java
+++ b/mailbox/spring/src/main/java/org/apache/james/mailbox/spring/SpringMailbox.java
@@ -27,7 +27,7 @@ public class SpringMailbox {
public SpringMailbox() {
applicationContext = new ClassPathXmlApplicationContext("META-INF/spring/spring-mailbox.xml",
- "META-INF/spring/mailbox-authenticator-anonymous.xml", "META-INF/spring/quota.xml",
+ "META-INF/spring/mailbox-authenticator-anonymous.xml", "META-INF/spring/mailbox-no-authorizator.xml", "META-INF/spring/quota.xml",
"META-INF/spring/quota-alias.xml", "META-INF/spring/event-system.xml", "META-INF/spring/event-alias.xml");
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/spring/src/main/resources/META-INF/spring/mailbox-no-authorizator.xml
----------------------------------------------------------------------
diff --git a/mailbox/spring/src/main/resources/META-INF/spring/mailbox-no-authorizator.xml b/mailbox/spring/src/main/resources/META-INF/spring/mailbox-no-authorizator.xml
new file mode 100644
index 0000000..3373a7e
--- /dev/null
+++ b/mailbox/spring/src/main/resources/META-INF/spring/mailbox-no-authorizator.xml
@@ -0,0 +1,28 @@
+<?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 http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+ <bean id="authorizator" class="org.apache.james.mailbox.spring.NoAuthorizator"/>
+
+</beans>
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/src/site/xdoc/mailbox-store.xml
----------------------------------------------------------------------
diff --git a/mailbox/src/site/xdoc/mailbox-store.xml b/mailbox/src/site/xdoc/mailbox-store.xml
index c8d882f..64b0ad9 100644
--- a/mailbox/src/site/xdoc/mailbox-store.xml
+++ b/mailbox/src/site/xdoc/mailbox-store.xml
@@ -45,7 +45,7 @@ Image is no more in line with trunk
<subsection name="Store Mailbox Manager">
<p>All public and protected methods that can be used by a Mailbox Manager implementations.</p>
<p>You need to instantiate the StoreMailboxManager with a mailboxSessionMapperFactory,
- an authenticator, a uidProvider and a mailboxPathlocker.</p>
+ an authenticator, an authorizator, a uidProvider and a mailboxPathlocker.</p>
<!--
Image is no more in line with trunk
<p><img src="images/uml/org-apache-james-mailbox-store-mailboxmanager.png"/></p>
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/store/src/main/java/org/apache/james/mailbox/store/Authorizator.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/Authorizator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/Authorizator.java
new file mode 100644
index 0000000..4710e34
--- /dev/null
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/Authorizator.java
@@ -0,0 +1,29 @@
+/****************************************************************
+ * 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.mailbox.store;
+
+/**
+ * Authenticates user credentials.
+ */
+public interface Authorizator {
+
+ boolean canLoginAsOtherUser(String userId, String otherUserId);
+}
+
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/store/src/main/java/org/apache/james/mailbox/store/FakeAuthorizator.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/FakeAuthorizator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/FakeAuthorizator.java
new file mode 100644
index 0000000..4e15ed7
--- /dev/null
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/FakeAuthorizator.java
@@ -0,0 +1,39 @@
+/****************************************************************
+ * 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.mailbox.store;
+
+import java.util.List;
+
+import com.google.common.collect.ImmutableList;
+
+public class FakeAuthorizator implements Authorizator {
+
+ private List<String> adminIds;
+
+ public FakeAuthorizator(String... adminIds) {
+ this.adminIds = ImmutableList.copyOf(adminIds);
+
+ }
+
+ @Override
+ public boolean canLoginAsOtherUser(String userId, String otherUserId) {
+ return adminIds.contains(userId);
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index 9d14622..705fd8d 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -104,6 +104,8 @@ public class StoreMailboxManager implements MailboxManager {
private final Authenticator authenticator;
+ private Authorizator authorizator;
+
private final MailboxACLResolver aclResolver;
private final GroupMembershipResolver groupMembershipResolver;
@@ -136,39 +138,40 @@ public class StoreMailboxManager implements MailboxManager {
private final int limitAnnotationSize;
@Inject
- public StoreMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, Authenticator authenticator,
+ public StoreMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, Authenticator authenticator, Authorizator authorizator,
MailboxPathLocker locker, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver,
MessageParser messageParser, MessageId.Factory messageIdFactory, MailboxEventDispatcher mailboxEventDispatcher,
DelegatingMailboxListener delegatingListener) {
- this(mailboxSessionMapperFactory, authenticator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory,
+ this(mailboxSessionMapperFactory, authenticator, authorizator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory,
MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE, mailboxEventDispatcher, delegatingListener);
}
- public StoreMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, Authenticator authenticator,
+ public StoreMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, Authenticator authenticator, Authorizator authorizator,
MailboxPathLocker locker, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver,
MessageParser messageParser, MessageId.Factory messageIdFactory) {
- this(mailboxSessionMapperFactory, authenticator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory,
+ this(mailboxSessionMapperFactory, authenticator, authorizator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory,
MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE);
}
- public StoreMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, Authenticator authenticator,
+ public StoreMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, Authenticator authenticator, Authorizator authorizator,
MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, MessageParser messageParser,
MessageId.Factory messageIdFactory, int limitOfAnnotations, int limitAnnotationSize) {
- this(mailboxSessionMapperFactory, authenticator, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver, messageParser, messageIdFactory,
+ this(mailboxSessionMapperFactory, authenticator, authorizator, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver, messageParser, messageIdFactory,
limitOfAnnotations, limitAnnotationSize);
}
- public StoreMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, Authenticator authenticator,
+ public StoreMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, Authenticator authenticator, Authorizator authorizator,
MailboxPathLocker locker, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, MessageParser messageParser,
MessageId.Factory messageIdFactory, int limitOfAnnotations, int limitAnnotationSize) {
- this(mailboxSessionMapperFactory, authenticator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory,
+ this(mailboxSessionMapperFactory, authenticator, authorizator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory,
limitOfAnnotations, limitAnnotationSize, null, null);
}
- public StoreMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, Authenticator authenticator,
+ public StoreMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, Authenticator authenticator, Authorizator authorizator,
MailboxPathLocker locker, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, MessageParser messageParser,
MessageId.Factory messageIdFactory, int limitOfAnnotations, int limitAnnotationSize, MailboxEventDispatcher mailboxEventDispatcher, DelegatingMailboxListener delegatingListener) {
this.authenticator = authenticator;
+ this.authorizator = authorizator;
this.locker = locker;
this.mailboxSessionMapperFactory = mailboxSessionMapperFactory;
this.aclResolver = aclResolver;
@@ -417,6 +420,15 @@ public class StoreMailboxManager implements MailboxManager {
}
}
+ @Override
+ public MailboxSession loginAsOtherUser(String adminUserid, String passwd, String otherUserId, Logger log) throws BadCredentialsException, MailboxException {
+ if (login(adminUserid, passwd) && authorizator.canLoginAsOtherUser(adminUserid, otherUserId)) {
+ return createSystemSession(otherUserId, log);
+ } else {
+ throw new BadCredentialsException();
+ }
+ }
+
/**
* Close the {@link MailboxSession} if not null
*/
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java
index 2dd1df7..08e5837 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java
@@ -71,6 +71,7 @@ public class StoreMailboxManagerAnnotationTest {
@Mock private MailboxSessionMapperFactory mailboxSessionMapperFactory;
@Mock private Authenticator authenticator;
+ @Mock private Authorizator authorizator;
@Mock private MailboxACLResolver aclResolver;
@Mock private GroupMembershipResolver groupMembershipResolver;
@Mock private MailboxMapper mailboxMapper;
@@ -101,7 +102,7 @@ public class StoreMailboxManagerAnnotationTest {
}
});
- storeMailboxManager = spy(new StoreMailboxManager(mailboxSessionMapperFactory, authenticator, aclResolver, groupMembershipResolver,
+ storeMailboxManager = spy(new StoreMailboxManager(mailboxSessionMapperFactory, authenticator, authorizator, aclResolver, groupMembershipResolver,
messageParser, messageIdFactory, MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE));
storeMailboxManager.init();
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
index 901b9f9..fd4fae2 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
@@ -19,35 +19,41 @@
package org.apache.james.mailbox.store;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import static org.assertj.core.api.Assertions.assertThat;
-
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
+import org.apache.james.mailbox.exception.BadCredentialsException;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageId;
-import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.model.MessageId.Factory;
+import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
import org.junit.Before;
import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class StoreMailboxManagerTest {
private static final String CURRENT_USER = "user";
+ private static final String CURRENT_USER_PASSWORD = "secret";
+ private static final String ADMIN = "admin";
+ private static final String ADMIN_PASSWORD = "adminsecret";
private static final MailboxId MAILBOX_ID = TestId.of(123);
- public static final int UID_VALIDITY = 42;
+ private static final Logger LOGGER = LoggerFactory.getLogger(StoreMailboxManagerTest.class);
+ private static final int UID_VALIDITY = 42;
private StoreMailboxManager storeMailboxManager;
private MailboxMapper mockedMailboxMapper;
private MailboxSession mockedMailboxSession;
@@ -60,9 +66,13 @@ public class StoreMailboxManagerTest {
when(mockedMapperFactory.getMailboxMapper(mockedMailboxSession))
.thenReturn(mockedMailboxMapper);
Factory messageIdFactory = mock(MessageId.Factory.class);
- storeMailboxManager = new StoreMailboxManager(mockedMapperFactory, new FakeAuthenticator(),
+ FakeAuthenticator authenticator = new FakeAuthenticator();
+ authenticator.addUser(CURRENT_USER, CURRENT_USER_PASSWORD);
+ authenticator.addUser(ADMIN, ADMIN_PASSWORD);
+ storeMailboxManager = new StoreMailboxManager(mockedMapperFactory, authenticator, new FakeAuthorizator(ADMIN),
new JVMMailboxPathLocker(), new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(),
new MessageParser(), messageIdFactory);
+ storeMailboxManager.init();
}
@Test
@@ -166,5 +176,34 @@ public class StoreMailboxManagerTest {
assertThat(expected.getId()).isEqualTo(MAILBOX_ID);
}
+
+ @Test
+ public void loginShouldCreateSessionWhenGoodPassword() throws Exception {
+ MailboxSession expected = storeMailboxManager.login(CURRENT_USER, CURRENT_USER_PASSWORD, LOGGER);
+
+ assertThat(expected.getUser().getUserName()).isEqualTo(CURRENT_USER);
+ }
+
+ @Test(expected = BadCredentialsException.class)
+ public void loginShouldThrowWhenBadPassword() throws Exception {
+ storeMailboxManager.login(CURRENT_USER, "badpassword", LOGGER);
+ }
+
+ @Test(expected = BadCredentialsException.class)
+ public void loginAsOtherUserShouldNotCreateUserSessionWhenAdminWithBadPassword() throws Exception {
+ storeMailboxManager.loginAsOtherUser(ADMIN, "badpassword", CURRENT_USER, LOGGER);
+ }
+
+ @Test(expected = BadCredentialsException.class)
+ public void loginAsOtherUserShouldNotCreateUserSessionWhenNotAdmin() throws Exception {
+ storeMailboxManager.loginAsOtherUser(CURRENT_USER, CURRENT_USER_PASSWORD, "otheruser", LOGGER);
+ }
+
+ @Test
+ public void loginAsOtherUserShouldCreateUserSessionWhenAdminWithGoodPassword() throws Exception {
+ MailboxSession expected = storeMailboxManager.loginAsOtherUser(ADMIN, ADMIN_PASSWORD, CURRENT_USER, LOGGER);
+
+ assertThat(expected.getUser().getUserName()).isEqualTo(CURRENT_USER);
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8b52a2b8/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java
----------------------------------------------------------------------
diff --git a/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java b/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java
index 02ae1e6..c0bdbc1 100644
--- a/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java
+++ b/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java
@@ -38,6 +38,7 @@ import org.apache.james.mailbox.mock.MockMailboxManager;
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;
@@ -166,6 +167,12 @@ public class MailboxCopierTest {
return true;
}
},
+ new Authorizator() {
+ @Override
+ public boolean canLoginAsOtherUser(String userId, String otherUserId) {
+ return false;
+ }
+ },
aclResolver,
groupMembershipResolver,
messageParser,
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org