@@ -413,6 +413,8 @@ impl DatabaseConfig {
413
413
pub struct MiddlewareConfig {
414
414
/// The configuration for the live reload middleware.
415
415
pub live_reload : LiveReloadMiddlewareConfig ,
416
+ /// The configuration for the session middleware.
417
+ pub session : SessionMiddlewareConfig ,
416
418
}
417
419
418
420
impl MiddlewareConfig {
@@ -438,16 +440,18 @@ impl MiddlewareConfigBuilder {
438
440
/// # Examples
439
441
///
440
442
/// ```
441
- /// use cot::config::{LiveReloadMiddlewareConfig, MiddlewareConfig};
443
+ /// use cot::config::{LiveReloadMiddlewareConfig, MiddlewareConfig, SessionMiddlewareConfig };
442
444
///
443
445
/// let config = MiddlewareConfig::builder()
444
446
/// .live_reload(LiveReloadMiddlewareConfig::builder().enabled(true).build())
447
+ /// .session(SessionMiddlewareConfig::builder().secure(false).build())
445
448
/// .build();
446
449
/// ```
447
450
#[ must_use]
448
451
pub fn build ( & self ) -> MiddlewareConfig {
449
452
MiddlewareConfig {
450
453
live_reload : self . live_reload . clone ( ) . unwrap_or_default ( ) ,
454
+ session : self . session . clone ( ) . unwrap_or_default ( ) ,
451
455
}
452
456
}
453
457
}
@@ -514,6 +518,68 @@ impl LiveReloadMiddlewareConfigBuilder {
514
518
}
515
519
}
516
520
521
+ /// The configuration for the session middleware.
522
+ ///
523
+ /// This is used as part of the [`MiddlewareConfig`] struct.
524
+ ///
525
+ /// # Examples
526
+ ///
527
+ /// ```
528
+ /// use cot::config::SessionMiddlewareConfig;
529
+ ///
530
+ /// let config = SessionMiddlewareConfig::builder().secure(false).build();
531
+ /// ```
532
+ #[ derive( Debug , Default , Clone , PartialEq , Eq , Builder , Serialize , Deserialize ) ]
533
+ #[ builder( build_fn( skip, error = std:: convert:: Infallible ) ) ]
534
+ #[ serde( default ) ]
535
+ pub struct SessionMiddlewareConfig {
536
+ /// Whether the session middleware is secure.
537
+ ///
538
+ /// # Examples
539
+ ///
540
+ /// ```
541
+ /// use cot::config::SessionMiddlewareConfig;
542
+ ///
543
+ /// let config = SessionMiddlewareConfig::builder().secure(false).build();
544
+ /// ```
545
+ pub secure : bool ,
546
+ }
547
+
548
+ impl SessionMiddlewareConfig {
549
+ /// Create a new [`SessionMiddlewareConfigBuilder`] to build a
550
+ /// [`SessionMiddlewareConfig`].
551
+ ///
552
+ /// # Examples
553
+ ///
554
+ /// ```
555
+ /// use cot::config::SessionMiddlewareConfig;
556
+ ///
557
+ /// let config = SessionMiddlewareConfig::builder().build();
558
+ /// ```
559
+ #[ must_use]
560
+ pub fn builder ( ) -> SessionMiddlewareConfigBuilder {
561
+ SessionMiddlewareConfigBuilder :: default ( )
562
+ }
563
+ }
564
+
565
+ impl SessionMiddlewareConfigBuilder {
566
+ /// Builds the session middleware configuration.
567
+ ///
568
+ /// # Examples
569
+ ///
570
+ /// ```
571
+ /// use cot::config::SessionMiddlewareConfig;
572
+ ///
573
+ /// let config = SessionMiddlewareConfig::builder().secure(false).build();
574
+ /// ```
575
+ #[ must_use]
576
+ pub fn build ( & self ) -> SessionMiddlewareConfig {
577
+ SessionMiddlewareConfig {
578
+ secure : self . secure . unwrap_or ( true ) ,
579
+ }
580
+ }
581
+ }
582
+
517
583
/// A secret key.
518
584
///
519
585
/// This is a wrapper over a byte array, which is used to store a cryptographic
@@ -718,6 +784,10 @@ mod tests {
718
784
secret_key = "123abc"
719
785
fallback_secret_keys = ["456def", "789ghi"]
720
786
auth_backend = { type = "none" }
787
+ [middlewares]
788
+ live_reload.enabled = true
789
+ [middlewares.session]
790
+ secure = false
721
791
"# ;
722
792
723
793
let config = ProjectConfig :: from_toml ( toml_content) . unwrap ( ) ;
@@ -729,6 +799,8 @@ mod tests {
729
799
assert_eq ! ( config. fallback_secret_keys[ 0 ] . as_bytes( ) , b"456def" ) ;
730
800
assert_eq ! ( config. fallback_secret_keys[ 1 ] . as_bytes( ) , b"789ghi" ) ;
731
801
assert_eq ! ( config. auth_backend, AuthBackendConfig :: None ) ;
802
+ assert ! ( config. middlewares. live_reload. enabled) ;
803
+ assert ! ( !config. middlewares. session. secure) ;
732
804
}
733
805
734
806
#[ test]
0 commit comments