Skip to main content

axum_security/oauth2/
mod.rs

1mod builder;
2mod context;
3mod handler;
4mod inject;
5pub mod providers;
6mod redirect;
7
8pub use builder::OAuth2BuilderError;
9pub use context::OAuth2Context;
10pub use handler::{AfterLoginCookies, OAuth2Handler, TokenResponse};
11pub use inject::OAuth2Ext;
12pub(crate) use redirect::{on_redirect, start_login};
13
14use ::oauth2::{CsrfToken, PkceCodeVerifier};
15
16use oauth2::{EndpointNotSet, EndpointSet, basic::BasicClient};
17pub(crate) type OAuth2ClientTyped =
18    BasicClient<EndpointSet, EndpointNotSet, EndpointNotSet, EndpointNotSet, EndpointSet>;
19
20pub struct OAuthState {
21    csrf_token: CsrfToken,
22    pkce_verifier: Option<PkceCodeVerifier>,
23}
24
25impl Clone for OAuthState {
26    fn clone(&self) -> Self {
27        Self {
28            csrf_token: self.csrf_token.clone(),
29            pkce_verifier: self
30                .pkce_verifier
31                .as_ref()
32                .map(|verifier| PkceCodeVerifier::new(verifier.secret().clone())),
33        }
34    }
35}