Skip to content

Commit 226684f

Browse files
authored
Merge pull request #3920 from element-hq/quenting/fix-missing-query-params
Fix the account page crash introduced in #3893
2 parents fec4efd + 92d1fec commit 226684f

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

crates/handlers/src/oauth2/device/link.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ use crate::PreferredLanguage;
2020

2121
#[derive(Serialize, Deserialize)]
2222
pub struct Params {
23-
code: String,
23+
#[serde(default)]
24+
code: Option<String>,
2425
}
2526

2627
#[tracing::instrument(name = "handlers.oauth2.device.link.get", skip_all, err)]
@@ -31,17 +32,14 @@ pub(crate) async fn get(
3132
State(templates): State<Templates>,
3233
State(url_builder): State<UrlBuilder>,
3334
cookie_jar: CookieJar,
34-
Query(query): Query<Option<Params>>,
35+
Query(query): Query<Params>,
3536
) -> Result<impl IntoResponse, FancyError> {
36-
let mut form_state = FormState::default();
37+
let mut form_state = FormState::from_form(&query);
3738

3839
// If we have a code in query, find it in the database
39-
if let Some(params) = query {
40-
// Save the form state so that we echo back the code
41-
form_state = FormState::from_form(&params);
42-
40+
if let Some(code) = &query.code {
4341
// Find the code in the database
44-
let code = params.code.to_uppercase();
42+
let code = code.to_uppercase();
4543
let grant = repo
4644
.oauth2_device_code_grant()
4745
.find_by_user_code(&code)

crates/handlers/src/views/app.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,23 @@ use mas_axum_utils::{cookies::CookieJar, FancyError, SessionInfoExt};
1212
use mas_router::{PostAuthAction, UrlBuilder};
1313
use mas_storage::{BoxClock, BoxRepository};
1414
use mas_templates::{AppContext, TemplateContext, Templates};
15+
use serde::Deserialize;
1516

1617
use crate::{BoundActivityTracker, PreferredLanguage};
1718

19+
#[derive(Deserialize)]
20+
pub struct Params {
21+
#[serde(default, flatten)]
22+
action: Option<mas_router::AccountAction>,
23+
}
24+
1825
#[tracing::instrument(name = "handlers.views.app.get", skip_all, err)]
1926
pub async fn get(
2027
PreferredLanguage(locale): PreferredLanguage,
2128
State(templates): State<Templates>,
2229
activity_tracker: BoundActivityTracker,
2330
State(url_builder): State<UrlBuilder>,
24-
Query(action): Query<Option<mas_router::AccountAction>>,
31+
Query(Params { action }): Query<Params>,
2532
mut repo: BoxRepository,
2633
clock: BoxClock,
2734
cookie_jar: CookieJar,

0 commit comments

Comments
 (0)