fix: add scheme to email confirmation redirect url

This commit is contained in:
Fu Zi Xiang 2023-11-22 13:53:52 +08:00
parent b934664b8c
commit 4a091f616b
No known key found for this signature in database
1 changed files with 26 additions and 26 deletions

View File

@ -103,10 +103,7 @@ pub async fn post_oauth_login_handler(
header_map: HeaderMap,
Path(provider): Path<String>,
) -> Result<WebApiResponse<String>, WebApiError<'static>> {
let scheme = get_header_value_or_default(&header_map, "x-scheme", "http");
let host = get_header_value_or_default(&header_map, "host", "localhost");
let base_url = format!("{}://{}", scheme, host);
let base_url = get_base_url(&header_map);
let redirect_uri = format!("{}/web/oauth_login_redirect", base_url);
let oauth_url = format!(
@ -116,23 +113,6 @@ pub async fn post_oauth_login_handler(
Ok(oauth_url.into())
}
fn get_header_value_or_default<'a>(
header_map: &'a HeaderMap,
header_name: &str,
default: &'a str,
) -> &'a str {
match header_map.get(header_name) {
Some(v) => match v.to_str() {
Ok(v) => v,
Err(e) => {
tracing::error!("failed to get header value {}: {}, {:?}", header_name, e, v);
default
},
},
None => default,
}
}
pub async fn admin_update_user_handler(
State(state): State<AppState>,
session: UserSession,
@ -264,11 +244,7 @@ pub async fn login_handler(
.sign_up_with_referrer(
&param.email,
&param.password,
Some(get_header_value_or_default(
&header_map,
"host",
"localhost",
)),
Some(&get_base_url(&header_map)),
)
.await;
@ -347,3 +323,27 @@ async fn session_login(
().into(),
))
}
fn get_base_url(header_map: &HeaderMap) -> String {
let scheme = get_header_value_or_default(header_map, "x-scheme", "http");
let host = get_header_value_or_default(header_map, "host", "localhost");
format!("{}://{}", scheme, host)
}
fn get_header_value_or_default<'a>(
header_map: &'a HeaderMap,
header_name: &str,
default: &'a str,
) -> &'a str {
match header_map.get(header_name) {
Some(v) => match v.to_str() {
Ok(v) => v,
Err(e) => {
tracing::error!("failed to get header value {}: {}, {:?}", header_name, e, v);
default
},
},
None => default,
}
}