Incorrect accountId used in JMAP email set and import methods (fixes #1777)
This commit is contained in:
@@ -18,6 +18,7 @@ use jmap_proto::{
|
||||
};
|
||||
use mail_parser::MessageParser;
|
||||
use std::future::Future;
|
||||
use trc::AddContext;
|
||||
use utils::map::vec_map::VecMap;
|
||||
|
||||
pub trait EmailImport: Sync + Send {
|
||||
@@ -46,6 +47,16 @@ impl EmailImport for Server {
|
||||
None
|
||||
};
|
||||
|
||||
// Obtain import access token
|
||||
let import_access_token = if account_id != access_token.primary_id() {
|
||||
self.get_access_token(account_id)
|
||||
.await
|
||||
.caused_by(trc::location!())?
|
||||
.into()
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
let mut response = ImportEmailResponse {
|
||||
account_id: request.account_id,
|
||||
new_state: old_state.clone(),
|
||||
@@ -114,7 +125,7 @@ impl EmailImport for Server {
|
||||
.email_ingest(IngestEmail {
|
||||
raw_message: &raw_message,
|
||||
message: MessageParser::new().parse(&raw_message),
|
||||
access_token,
|
||||
access_token: import_access_token.as_deref().unwrap_or(access_token),
|
||||
mailbox_ids,
|
||||
keywords: email.keywords,
|
||||
received_at: email.received_at.map(|r| r.into()),
|
||||
|
||||
@@ -84,6 +84,16 @@ impl EmailSet for Server {
|
||||
(None, None, None)
|
||||
};
|
||||
|
||||
// Obtain import access token
|
||||
let import_access_token = if account_id != access_token.primary_id() {
|
||||
self.get_access_token(account_id)
|
||||
.await
|
||||
.caused_by(trc::location!())?
|
||||
.into()
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
let mut last_change_id = None;
|
||||
let will_destroy = request.unwrap_destroy();
|
||||
|
||||
@@ -703,7 +713,7 @@ impl EmailSet for Server {
|
||||
.email_ingest(IngestEmail {
|
||||
raw_message: &raw_message,
|
||||
message: MessageParser::new().parse(&raw_message),
|
||||
access_token,
|
||||
access_token: import_access_token.as_deref().unwrap_or(access_token),
|
||||
mailbox_ids: mailboxes,
|
||||
keywords,
|
||||
received_at,
|
||||
|
||||
Reference in New Issue
Block a user