axum_security/oauth2/
mod.rs1mod 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}