Skip to content

Commit 78c39d4

Browse files
committed
coderabbit suggestion
1 parent d3a9902 commit 78c39d4

2 files changed

Lines changed: 16 additions & 66 deletions

File tree

src/cli.rs

Lines changed: 0 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -818,59 +818,3 @@ impl Options {
818818
})
819819
}
820820
}
821-
822-
#[cfg(test)]
823-
mod tests {
824-
use super::{Cli, StorageOptions};
825-
use clap::Parser;
826-
827-
#[test]
828-
fn parses_comma_separated_allowed_origins() {
829-
let cli = Cli::parse_from([
830-
"parseable",
831-
"local-store",
832-
"--allowed-origins",
833-
"https://www.google.com/,https://app-staging.parseable.com/",
834-
]);
835-
836-
let StorageOptions::Local(args) = cli.storage else {
837-
panic!("expected local-store args");
838-
};
839-
840-
assert_eq!(args.options.allow_origins.len(), 2);
841-
assert_eq!(
842-
args.options.allow_origins[0].as_str(),
843-
"https://www.google.com/"
844-
);
845-
assert_eq!(
846-
args.options.allow_origins[1].as_str(),
847-
"https://app-staging.parseable.com/"
848-
);
849-
}
850-
851-
#[test]
852-
fn parses_repeated_allowed_origins() {
853-
let cli = Cli::parse_from([
854-
"parseable",
855-
"local-store",
856-
"--allowed-origins",
857-
"https://www.google.com/",
858-
"--allowed-origins",
859-
"https://app-staging.parseable.com/",
860-
]);
861-
862-
let StorageOptions::Local(args) = cli.storage else {
863-
panic!("expected local-store args");
864-
};
865-
866-
assert_eq!(args.options.allow_origins.len(), 2);
867-
assert_eq!(
868-
args.options.allow_origins[0].as_str(),
869-
"https://www.google.com/"
870-
);
871-
assert_eq!(
872-
args.options.allow_origins[1].as_str(),
873-
"https://app-staging.parseable.com/"
874-
);
875-
}
876-
}

src/handlers/http/oidc.rs

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -654,16 +654,22 @@ impl actix_web::ResponseError for OIDCError {
654654
}
655655

656656
fn is_valid_redirect_url(base_url: &str, redirect_url: &str) -> bool {
657-
// check if redirect_url is part of allowed origins
658-
if let allowed_origins = &PARSEABLE.options.allow_origins
659-
&& (allowed_origins
660-
.iter()
661-
.any(|url| url.as_str().eq(redirect_url)))
657+
let Ok(redirect_url) = Url::parse(redirect_url) else {
658+
return false;
659+
};
660+
661+
let redirect_origin = redirect_url.origin();
662+
663+
if PARSEABLE
664+
.options
665+
.allow_origins
666+
.iter()
667+
.any(|url| url.origin() == redirect_origin)
662668
{
663-
true
664-
}
665-
// if redirect_url is not part of allowed origins, then it must be equal to base url
666-
else {
667-
base_url == redirect_url
669+
return true;
668670
}
671+
672+
Url::parse(base_url)
673+
.map(|url| url.origin() == redirect_origin)
674+
.unwrap_or(false)
669675
}

0 commit comments

Comments
 (0)