Skip to main content

openauth_core/options/
advanced.rs

1use crate::utils::ip::Ipv6Subnet;
2
3use super::cookies::CookieConfig;
4
5/// Advanced configuration.
6#[derive(Debug, Clone, Default, PartialEq, Eq)]
7pub struct AdvancedOptions {
8    pub use_secure_cookies: Option<bool>,
9    pub cookie_prefix: Option<String>,
10    pub cross_subdomain_cookies: Option<CookieConfig>,
11    pub default_cookie_attributes: CookieAttributesOverride,
12    pub disable_csrf_check: bool,
13    pub disable_origin_check: bool,
14    pub skip_trailing_slashes: bool,
15    pub ip_address: IpAddressOptions,
16}
17
18#[derive(Debug, Clone, PartialEq, Eq)]
19pub struct IpAddressOptions {
20    pub headers: Vec<String>,
21    pub disable_ip_tracking: bool,
22    pub ipv6_subnet: Ipv6Subnet,
23}
24
25impl Default for IpAddressOptions {
26    fn default() -> Self {
27        Self {
28            headers: vec!["x-forwarded-for".to_owned()],
29            disable_ip_tracking: false,
30            ipv6_subnet: Ipv6Subnet::Prefix64,
31        }
32    }
33}
34
35/// User-supplied cookie attribute defaults.
36#[derive(Debug, Clone, Default, PartialEq, Eq)]
37pub struct CookieAttributesOverride {
38    pub domain: Option<String>,
39    pub path: Option<String>,
40    pub secure: Option<bool>,
41    pub http_only: Option<bool>,
42    pub same_site: Option<String>,
43    pub max_age: Option<u64>,
44    pub partitioned: Option<bool>,
45}