fix: add scheme to email confirmation redirect url
This commit is contained in:
parent
b934664b8c
commit
4a091f616b
|
|
@ -103,10 +103,7 @@ pub async fn post_oauth_login_handler(
|
||||||
header_map: HeaderMap,
|
header_map: HeaderMap,
|
||||||
Path(provider): Path<String>,
|
Path(provider): Path<String>,
|
||||||
) -> Result<WebApiResponse<String>, WebApiError<'static>> {
|
) -> Result<WebApiResponse<String>, WebApiError<'static>> {
|
||||||
let scheme = get_header_value_or_default(&header_map, "x-scheme", "http");
|
let base_url = get_base_url(&header_map);
|
||||||
let host = get_header_value_or_default(&header_map, "host", "localhost");
|
|
||||||
|
|
||||||
let base_url = format!("{}://{}", scheme, host);
|
|
||||||
let redirect_uri = format!("{}/web/oauth_login_redirect", base_url);
|
let redirect_uri = format!("{}/web/oauth_login_redirect", base_url);
|
||||||
|
|
||||||
let oauth_url = format!(
|
let oauth_url = format!(
|
||||||
|
|
@ -116,23 +113,6 @@ pub async fn post_oauth_login_handler(
|
||||||
Ok(oauth_url.into())
|
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(
|
pub async fn admin_update_user_handler(
|
||||||
State(state): State<AppState>,
|
State(state): State<AppState>,
|
||||||
session: UserSession,
|
session: UserSession,
|
||||||
|
|
@ -264,11 +244,7 @@ pub async fn login_handler(
|
||||||
.sign_up_with_referrer(
|
.sign_up_with_referrer(
|
||||||
¶m.email,
|
¶m.email,
|
||||||
¶m.password,
|
¶m.password,
|
||||||
Some(get_header_value_or_default(
|
Some(&get_base_url(&header_map)),
|
||||||
&header_map,
|
|
||||||
"host",
|
|
||||||
"localhost",
|
|
||||||
)),
|
|
||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
|
|
@ -347,3 +323,27 @@ async fn session_login(
|
||||||
().into(),
|
().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,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue