Allow local access tokens to be used with OIDC backends (closes #1311 closes stalwartlabs/webadmin#52)

This commit is contained in:
mdecimus
2025-07-25 21:06:23 +02:00
parent 02f6a114e0
commit 654f296d45
37 changed files with 369 additions and 278 deletions

View File

@@ -5,7 +5,7 @@
*/
use common::{Server, storage::index::ObjectIndexBuilder};
use directory::QueryBy;
use directory::QueryParams;
use email::identity::{ArchivedEmailAddress, Identity};
use jmap_proto::{
method::get::{GetRequest, GetResponse, RequestArguments},
@@ -147,7 +147,7 @@ impl IdentityGet for Server {
.core
.storage
.directory
.query(QueryBy::Id(account_id), false)
.query(QueryParams::id(account_id).with_return_member_of(false))
.await
.caused_by(trc::location!())?
{

View File

@@ -5,7 +5,7 @@
*/
use common::{Server, storage::index::ObjectIndexBuilder};
use directory::QueryBy;
use directory::QueryParams;
use email::identity::{EmailAddress, Identity};
use jmap_proto::{
error::set::SetError,
@@ -61,7 +61,7 @@ impl IdentitySet for Server {
if !identity.email.is_empty() {
if self
.directory()
.query(QueryBy::Id(account_id), false)
.query(QueryParams::id(account_id).with_return_member_of(false))
.await?
.is_none_or(|p| !p.emails.iter().any(|e| e == &identity.email))
{

View File

@@ -5,7 +5,7 @@
*/
use common::Server;
use directory::QueryBy;
use directory::QueryParams;
use jmap_proto::{
method::get::{GetRequest, GetResponse, RequestArguments},
types::{
@@ -65,7 +65,7 @@ impl PrincipalGet for Server {
.core
.storage
.directory
.query(QueryBy::Id(id.document_id()), false)
.query(QueryParams::id(id.document_id()).with_return_member_of(false))
.await?
{
principal

View File

@@ -4,17 +4,16 @@
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL
*/
use crate::JmapMethods;
use common::Server;
use directory::QueryBy;
use directory::QueryParams;
use http_proto::HttpSessionData;
use jmap_proto::{
method::query::{Filter, QueryRequest, QueryResponse, RequestArguments},
types::{collection::Collection, state::State},
};
use store::{query::ResultSet, roaring::RoaringBitmap};
use crate::JmapMethods;
use std::future::Future;
use store::{query::ResultSet, roaring::RoaringBitmap};
pub trait PrincipalQuery: Sync + Send {
fn principal_query(
@@ -45,7 +44,7 @@ impl PrincipalQuery for Server {
.core
.storage
.directory
.query(QueryBy::Name(name.as_str()), false)
.query(QueryParams::name(name.as_str()).with_return_member_of(false))
.await?
{
if is_set || result_set.results.contains(principal.id()) {