Set destination account on the request context

This commit is contained in:
Ravi Khadiwala 2024-01-24 16:38:35 -06:00 committed by ravi-signal
parent 1428ca73de
commit 6bda9d8604
1 changed files with 4 additions and 1 deletions

View File

@ -143,6 +143,8 @@ public class MessageController {
private static final Logger logger = LoggerFactory.getLogger(MessageController.class); private static final Logger logger = LoggerFactory.getLogger(MessageController.class);
public static final String DESTINATION_ACCOUNT_PROPERTY_NAME = "destinationAccount";
private final RateLimiters rateLimiters; private final RateLimiters rateLimiters;
private final CardinalityEstimator messageByteLimitEstimator; private final CardinalityEstimator messageByteLimitEstimator;
private final MessageSender messageSender; private final MessageSender messageSender;
@ -284,13 +286,14 @@ public class MessageController {
} }
Optional<Account> destination; Optional<Account> destination;
if (!isSyncMessage) { if (!isSyncMessage) {
destination = accountsManager.getByServiceIdentifier(destinationIdentifier); destination = accountsManager.getByServiceIdentifier(destinationIdentifier);
} else { } else {
destination = source.map(AuthenticatedAccount::getAccount); destination = source.map(AuthenticatedAccount::getAccount);
} }
destination.ifPresent(account -> context.setProperty(DESTINATION_ACCOUNT_PROPERTY_NAME, account));
// Stories will be checked by the client; we bypass access checks here for stories. // Stories will be checked by the client; we bypass access checks here for stories.
if (!isStory) { if (!isStory) {
OptionalAccess.verify(source.map(AuthenticatedAccount::getAccount), accessKey, destination); OptionalAccess.verify(source.map(AuthenticatedAccount::getAccount), accessKey, destination);