Allow unauthenticated access to JMAP session object
This commit is contained in:
@@ -37,7 +37,7 @@ use jmap::{
|
||||
websocket::upgrade::WebSocketUpgrade,
|
||||
};
|
||||
use jmap_proto::{
|
||||
request::Request,
|
||||
request::{Request, capability::Session},
|
||||
types::{blob::BlobId, id::Id},
|
||||
};
|
||||
use store::dispatch::lookup::KeyValue;
|
||||
@@ -199,6 +199,26 @@ impl ParseHttp for Server {
|
||||
.upgrade_websocket_connection(req, access_token, session)
|
||||
.await;
|
||||
}
|
||||
("session", &Method::GET) => {
|
||||
return if req.headers().contains_key(header::AUTHORIZATION) {
|
||||
// Authenticate request
|
||||
let (_in_flight, access_token) =
|
||||
self.authenticate_headers(&req, &session, false).await?;
|
||||
|
||||
self.handle_session_resource(
|
||||
ctx.resolve_response_url(self).await,
|
||||
access_token,
|
||||
)
|
||||
.await
|
||||
.map(|s| s.into_http_response())
|
||||
} else {
|
||||
Ok(Session::new(
|
||||
ctx.resolve_response_url(self).await,
|
||||
&self.core.jmap.capabilities,
|
||||
)
|
||||
.into_http_response())
|
||||
};
|
||||
}
|
||||
(_, &Method::OPTIONS) => {
|
||||
return Ok(JsonProblemResponse(StatusCode::NO_CONTENT).into_http_response());
|
||||
}
|
||||
@@ -241,14 +261,9 @@ impl ParseHttp for Server {
|
||||
}
|
||||
".well-known" => match (path.next().unwrap_or_default(), req.method()) {
|
||||
("jmap", &Method::GET) => {
|
||||
// Authenticate request
|
||||
let (_in_flight, access_token) =
|
||||
self.authenticate_headers(&req, &session, false).await?;
|
||||
|
||||
return self
|
||||
.handle_session_resource(ctx.resolve_response_url(self).await, access_token)
|
||||
.await
|
||||
.map(|s| s.into_http_response());
|
||||
return Ok(HttpResponse::new(StatusCode::TEMPORARY_REDIRECT)
|
||||
.with_no_cache()
|
||||
.with_location("/jmap/session"));
|
||||
}
|
||||
("caldav", _) => {
|
||||
return Ok(HttpResponse::new(StatusCode::TEMPORARY_REDIRECT)
|
||||
|
||||
Reference in New Issue
Block a user