chibenwa commented on code in PR #2573:
URL: https://github.com/apache/james-project/pull/2573#discussion_r1892093312


##########
docs/modules/servers/partials/configure/jvm.adoc:
##########
@@ -172,4 +172,17 @@ james.deduplicating.blobstore.thread.switch.threshold=32768
 
 # Count of octet from which streams are buffered to files and not to memory
 james.deduplicating.blobstore.file.threshold=10240
-----
\ No newline at end of file
+----
+
+== Allow users to have rights for shares of different domain
+
+Typically, preventing users to obtain rights for shares of another domain is a 
useful security layer.
+However, in multi-tenancy deployments, this can be useful (for example, 
students might be given access to a shared mailbox
+residing under the @university.edu domain with their @student.university.edu 
address).
+
+Optional. Boolean. Defaults to false.
+
+Ex in `jvm.properties`
+----
+james.rights.users.crossdomain=false

Review Comment:
   How about naming this
   
   ```
   james.rights.crossdomain.allow=false
   ```
   
   ?



##########
mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java:
##########
@@ -74,6 +74,10 @@ public StoreRightManager(MailboxSessionMapperFactory 
mailboxSessionMapperFactory
         this.eventBus = eventBus;
     }
 
+    private boolean isCrossDomainAccessAllowed() {
+        return 
Boolean.parseBoolean(System.getProperty("james.rights.users.crossdomain", 
"false"));

Review Comment:
   Make it a constant: looking this up at class loading is enough



##########
mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java:
##########
@@ -185,7 +189,7 @@ public void applyRightsCommand(MailboxPath mailboxPath, 
ACLCommand mailboxACLCom
     @Override
     public Mono<Void> applyRightsCommandReactive(MailboxPath mailboxPath, 
ACLCommand mailboxACLCommand, MailboxSession session) {
         return Mono.just(mailboxSessionMapperFactory.getMailboxMapper(session))
-            .doOnNext(Throwing.consumer(mapper -> 
assertSharesBelongsToUserDomain(mailboxPath.getUser(), mailboxACLCommand)))
+            .doOnNext(Throwing.consumer(mapper -> 
assertUserHasAccessToShareDomains(mailboxPath.getUser(), mailboxACLCommand)))

Review Comment:
   ```suggestion
               .doOnNext(Throwing.consumer(mapper -> 
assertUserHasAccessToShareeDomains(mailboxPath.getUser(), mailboxACLCommand)))
   ```



##########
mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java:
##########
@@ -74,6 +74,10 @@ public StoreRightManager(MailboxSessionMapperFactory 
mailboxSessionMapperFactory
         this.eventBus = eventBus;
     }
 
+    private boolean isCrossDomainAccessAllowed() {
+        return 
Boolean.parseBoolean(System.getProperty("james.rights.users.crossdomain", 
"false"));

Review Comment:
   Ah ok I got it, that's needed because of the tests!
   
   My suggestion is to allow the constant to be package local mutable annotated 
with `@VisibleForTesting` so that overloading that in tests become easy while 
keeping the property lookup at classloading time.
   
   WDYT?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org

Reply via email to