Skip to content

Commit

Permalink
zbug-903:Problem with sendAs delegate rights and Save a copy of sent …
Browse files Browse the repository at this point in the history
…messages to my Sent folder

resolving CR comments

(cherry picked from commit 0cade97)
  • Loading branch information
jrjena136 committed Nov 27, 2019
1 parent efd11af commit 9f705b2
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 0 deletions.
21 changes: 21 additions & 0 deletions store/src/java/com/zimbra/soap/SoapEngine.java
Expand Up @@ -31,6 +31,9 @@
import org.eclipse.jetty.continuation.ContinuationSupport;

import com.google.common.base.Strings;
import com.zimbra.common.account.Key;
import com.zimbra.common.account.ProvisioningConstants;
import com.zimbra.common.account.Key.AccountBy;
import com.zimbra.common.localconfig.LC;
import com.zimbra.common.service.ServiceException;
import com.zimbra.common.soap.Element;
Expand All @@ -51,8 +54,10 @@
import com.zimbra.cs.account.Account;
import com.zimbra.cs.account.AccountServiceException;
import com.zimbra.cs.account.AccountServiceException.AuthFailedServiceException;
import com.zimbra.cs.account.accesscontrol.generated.RightConsts;
import com.zimbra.cs.account.AuthToken;
import com.zimbra.cs.account.GuestAccount;
import com.zimbra.cs.account.Identity;
import com.zimbra.cs.account.Provisioning;
import com.zimbra.cs.mailbox.Mailbox;
import com.zimbra.cs.mailbox.MailboxManager;
Expand Down Expand Up @@ -327,6 +332,22 @@ private Element dispatch(String path, Element envelope, Map<String, Object> cont
Element ectxt = soapProto.getHeader(envelope, HeaderConstants.CONTEXT);
try {
zsc = new ZimbraSoapContext(ectxt, doc.getQName(), handler, context, soapProto);
if (doc.getName().equals("SendMsgRequest")) {
Element msgEle = doc.getElement(MailConstants.E_MSG);
String identityId = msgEle.getAttribute(MailConstants.A_IDENTITY_ID, null);
if (identityId != null) {
Identity identity = Provisioning.getInstance().get(DocumentHandler.getOperationContext(zsc, context)
.getAuthenticatedUser(), Key.IdentityBy.id, identityId);
if (identity != null &&
!identity.getAttr(Provisioning.A_zimbraPrefIdentityName).equals(ProvisioningConstants.DEFAULT_IDENTITY_NAME) &&
!StringUtil.isNullOrEmpty(identity.getAttr(Provisioning.A_zimbraPrefFromAddressType)) &&
(identity.getAttr(Provisioning.A_zimbraPrefFromAddressType).equals(RightConsts.RT_sendAs) ||
identity.getAttr(Provisioning.A_zimbraPrefFromAddressType).equals(RightConsts.RT_sendOnBehalfOf))) {
Account targetAccount = Provisioning.getInstance().get(AccountBy.name, identity.getAttr(Provisioning.A_zimbraPrefFromAddress));
zsc.setmRequestedAccountId(targetAccount.getId());
}
}
}
} catch (ServiceException e) {
return soapFaultEnv(soapProto, "unable to construct SOAP context", e);
}
Expand Down
4 changes: 4 additions & 0 deletions store/src/java/com/zimbra/soap/ZimbraSoapContext.java
Expand Up @@ -1065,4 +1065,8 @@ public boolean isAuthUserOnLocalhost() {
public SoapProtocol getmResponseProtocol() {
return mResponseProtocol;
}

public void setmRequestedAccountId(String mRequestedAccountId) {
this.mRequestedAccountId = mRequestedAccountId;
}
}

0 comments on commit 9f705b2

Please sign in to comment.