You've already forked authentication-service
mirror of
https://github.com/matrix-org/matrix-authentication-service.git
synced 2025-07-29 22:01:14 +03:00
graphql: allow filtering appsessions on device_id
This commit is contained in:
@ -17,6 +17,7 @@ use async_graphql::{
|
||||
Context, Description, Enum, Object, Union, ID,
|
||||
};
|
||||
use chrono::{DateTime, Utc};
|
||||
use mas_data_model::Device;
|
||||
use mas_storage::{
|
||||
app_session::AppSessionFilter,
|
||||
compat::{CompatSessionFilter, CompatSsoLoginFilter, CompatSsoLoginRepository},
|
||||
@ -535,6 +536,9 @@ impl User {
|
||||
#[graphql(name = "state", desc = "List only sessions in the given state.")]
|
||||
state_param: Option<SessionState>,
|
||||
|
||||
#[graphql(name = "device", desc = "List only sessions for the given device.")]
|
||||
device_param: Option<String>,
|
||||
|
||||
#[graphql(desc = "Returns the elements in the list that come after the cursor.")]
|
||||
after: Option<String>,
|
||||
#[graphql(desc = "Returns the elements in the list that come before the cursor.")]
|
||||
@ -563,6 +567,8 @@ impl User {
|
||||
.transpose()?;
|
||||
let pagination = Pagination::try_new(before_id, after_id, first, last)?;
|
||||
|
||||
let device_param = device_param.map(Device::try_from).transpose()?;
|
||||
|
||||
let filter = AppSessionFilter::new().for_user(&self.0);
|
||||
|
||||
let filter = match state_param {
|
||||
@ -571,6 +577,11 @@ impl User {
|
||||
None => filter,
|
||||
};
|
||||
|
||||
let filter = match device_param.as_ref() {
|
||||
Some(device) => filter.for_device(device),
|
||||
None => filter,
|
||||
};
|
||||
|
||||
let page = repo.app_session().list(filter, pagination).await?;
|
||||
|
||||
let count = if ctx.look_ahead().field("totalCount").exists() {
|
||||
|
Reference in New Issue
Block a user