1
1
use crate :: {
2
2
configuration:: { DatabaseSettings , Settings } ,
3
3
email_client:: EmailClient ,
4
- routes:: { confirm, health_check, home, login, login_form, publish_newsletter, subscribe} ,
4
+ routes:: {
5
+ admin_dashboard, confirm, health_check, home, login, login_form, publish_newsletter,
6
+ subscribe,
7
+ } ,
5
8
} ;
9
+ use actix_session:: storage:: RedisSessionStore ;
10
+ use actix_session:: SessionMiddleware ;
6
11
use actix_web:: { cookie:: Key , dev:: Server , web, App , HttpServer } ;
7
12
use actix_web_flash_messages:: storage:: CookieMessageStore ;
8
13
use actix_web_flash_messages:: FlashMessagesFramework ;
9
- use actix_session:: storage:: RedisSessionStore ;
10
- use actix_session:: SessionMiddleware ;
11
14
use secrecy:: { ExposeSecret , Secret } ;
12
15
use sqlx:: postgres:: PgPoolOptions ;
13
16
use sqlx:: PgPool ;
@@ -50,7 +53,8 @@ impl Application {
50
53
configuration. application . base_url ,
51
54
configuration. application . hmac_secret ,
52
55
configuration. redis_uri ,
53
- ) . await ?;
56
+ )
57
+ . await ?;
54
58
Ok ( Self { port, server } )
55
59
}
56
60
@@ -83,15 +87,17 @@ async fn run(
83
87
let email_client = web:: Data :: new ( email_client) ;
84
88
let secret_key = Key :: from ( hmac_secret. expose_secret ( ) . as_bytes ( ) ) ;
85
89
let base_url = web:: Data :: new ( ApplicationBaseUrl ( base_url) ) ;
86
- let message_store =
87
- CookieMessageStore :: builder ( secret_key. clone ( ) ) . build ( ) ;
90
+ let message_store = CookieMessageStore :: builder ( secret_key. clone ( ) ) . build ( ) ;
88
91
let message_framework = FlashMessagesFramework :: builder ( message_store) . build ( ) ;
89
92
let redis_store = RedisSessionStore :: new ( redis_uri. expose_secret ( ) ) . await ?;
90
93
let server = HttpServer :: new ( move || {
91
94
App :: new ( )
92
95
// Middleware logger added here
93
96
. wrap ( message_framework. clone ( ) )
94
- . wrap ( SessionMiddleware :: new ( redis_store. clone ( ) , secret_key. clone ( ) ) )
97
+ . wrap ( SessionMiddleware :: new (
98
+ redis_store. clone ( ) ,
99
+ secret_key. clone ( ) ,
100
+ ) )
95
101
. wrap ( TracingLogger :: default ( ) )
96
102
. route ( "/health_check" , web:: get ( ) . to ( health_check) )
97
103
. route ( "/subscriptions" , web:: post ( ) . to ( subscribe) )
@@ -100,6 +106,7 @@ async fn run(
100
106
. route ( "/" , web:: get ( ) . to ( home) )
101
107
. route ( "/login" , web:: get ( ) . to ( login_form) )
102
108
. route ( "/login" , web:: post ( ) . to ( login) )
109
+ . route ( "/admin/dashboard" , web:: get ( ) . to ( admin_dashboard) )
103
110
. app_data ( db_pool. clone ( ) )
104
111
. app_data ( email_client. clone ( ) )
105
112
. app_data ( base_url. clone ( ) )
0 commit comments