JAMES-1838 Deny shared mailbox accesses should display a fancy message

Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/0e1c37b5
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/0e1c37b5
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/0e1c37b5

Branch: refs/heads/master
Commit: 0e1c37b5ccdc278e534694572e90946c5a6ca1bd
Parents: 1bafdc1
Author: Benoit Tellier <[email protected]>
Authored: Wed Oct 19 18:00:50 2016 +0200
Committer: Benoit Tellier <[email protected]>
Committed: Fri Oct 21 17:01:12 2016 +0200

----------------------------------------------------------------------
 .../imap/api/display/HumanReadableText.java     |  2 ++
 .../processor/AbstractMailboxProcessor.java     | 21 ++++++++++++--------
 .../base/AbstractChainedProcessor.java          |  1 +
 3 files changed, 16 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/0e1c37b5/protocols/imap/src/main/java/org/apache/james/imap/api/display/HumanReadableText.java
----------------------------------------------------------------------
diff --git 
a/protocols/imap/src/main/java/org/apache/james/imap/api/display/HumanReadableText.java
 
b/protocols/imap/src/main/java/org/apache/james/imap/api/display/HumanReadableText.java
index 3f181ba..8ae4cd0 100644
--- 
a/protocols/imap/src/main/java/org/apache/james/imap/api/display/HumanReadableText.java
+++ 
b/protocols/imap/src/main/java/org/apache/james/imap/api/display/HumanReadableText.java
@@ -158,6 +158,8 @@ public class HumanReadableText {
     public static final HumanReadableText QRESYNC_CLOSED = new 
HumanReadableText("org.apache.james.imap.QRESYNC_CLOSED", "");
     public static final HumanReadableText 
QRESYNC_VANISHED_WITHOUT_CHANGEDSINCE = new 
HumanReadableText("org.apache.james.imap.QRESYNC_VANISHED_WITHOUT_CHANGEDSINCE",
 "VANISHED used without CHANGEDSINCE");
 
+    public static final HumanReadableText DENIED_SHARED_MAILBOX = new 
HumanReadableText("org.apache.james.imap.DENIED_SHARED_MAILBOX", "You can not 
access a mailbox that does not belong to you");
+
     public static final String UNSUFFICIENT_RIGHTS_DEFAULT_VALUE = "You need 
the {0} right to perform command {1} on mailbox {2}.";
     public static final String UNSUFFICIENT_RIGHTS_KEY = 
"org.apache.james.imap.UNSUFFICIENT_RIGHTS";
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/0e1c37b5/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
----------------------------------------------------------------------
diff --git 
a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
 
b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
index 2663b56..3c3d3ad 100644
--- 
a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
+++ 
b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
@@ -40,6 +40,7 @@ import 
org.apache.james.imap.api.message.response.StatusResponseFactory;
 import org.apache.james.imap.api.process.ImapProcessor;
 import org.apache.james.imap.api.process.ImapSession;
 import org.apache.james.imap.api.process.SelectedMailbox;
+import org.apache.james.imap.main.DeniedAccessOnSharedMailboxException;
 import org.apache.james.imap.message.response.ExistsResponse;
 import org.apache.james.imap.message.response.ExpungeResponse;
 import org.apache.james.imap.message.response.FetchResponse;
@@ -56,7 +57,6 @@ import 
org.apache.james.mailbox.MessageManager.MetaData.FetchGroup;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MessageRangeException;
 import org.apache.james.mailbox.model.FetchGroupImpl;
-import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.model.MessageRange.Type;
@@ -77,6 +77,7 @@ abstract public class AbstractMailboxProcessor<M extends 
ImapRequest> extends Ab
         this.factory = factory;
     }
 
+    @Override
     protected final void doProcess(M acceptableMessage, Responder responder, 
ImapSession session) {
         process(acceptableMessage, responder, session);
     }
@@ -88,17 +89,21 @@ abstract public class AbstractMailboxProcessor<M extends 
ImapRequest> extends Ab
     }
 
     final void doProcess(M message, ImapCommand command, String tag, Responder 
responder, ImapSession session) {
-        if (!command.validForState(session.getState())) {
-            ImapResponseMessage response = factory.taggedNo(tag, command, 
HumanReadableText.INVALID_COMMAND);
-            responder.respond(response);
+        try {
+            if (!command.validForState(session.getState())) {
+                ImapResponseMessage response = factory.taggedNo(tag, command, 
HumanReadableText.INVALID_COMMAND);
+                responder.respond(response);
 
-        } else {
-            
getMailboxManager().startProcessingRequest(ImapSessionUtils.getMailboxSession(session));
+            } else {
+                
getMailboxManager().startProcessingRequest(ImapSessionUtils.getMailboxSession(session));
 
-            doProcess(message, session, tag, command, responder);
+                doProcess(message, session, tag, command, responder);
 
-            
getMailboxManager().endProcessingRequest(ImapSessionUtils.getMailboxSession(session));
+                
getMailboxManager().endProcessingRequest(ImapSessionUtils.getMailboxSession(session));
 
+            }
+        } catch (DeniedAccessOnSharedMailboxException e) {
+            no(command, tag, responder, 
HumanReadableText.DENIED_SHARED_MAILBOX);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/0e1c37b5/protocols/imap/src/main/java/org/apache/james/imap/processor/base/AbstractChainedProcessor.java
----------------------------------------------------------------------
diff --git 
a/protocols/imap/src/main/java/org/apache/james/imap/processor/base/AbstractChainedProcessor.java
 
b/protocols/imap/src/main/java/org/apache/james/imap/processor/base/AbstractChainedProcessor.java
index fa9116d..d403887 100644
--- 
a/protocols/imap/src/main/java/org/apache/james/imap/processor/base/AbstractChainedProcessor.java
+++ 
b/protocols/imap/src/main/java/org/apache/james/imap/processor/base/AbstractChainedProcessor.java
@@ -45,6 +45,7 @@ abstract public class AbstractChainedProcessor<M extends 
ImapMessage> implements
      * org.apache.james.imap.api.process.ImapProcessor.Responder,
      * org.apache.james.imap.api.process.ImapSession)
      */
+    @Override
     @SuppressWarnings("unchecked")
     public void process(ImapMessage message, Responder responder, ImapSession 
session) {
         final boolean isAcceptable = isAcceptable(message);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to