@@ -4,6 +4,7 @@ use std::sync::Arc;
44use axum:: { Json , middleware:: from_fn, routing:: get} ;
55use shield:: { Shield , ShieldOptions } ;
66use shield_axum:: { AuthRoutes , ShieldLayer , auth_required} ;
7+ use shield_email:: { EmailMethod , EmailOptions , TracingSender } ;
78use shield_memory:: { MemoryStorage , User } ;
89use shield_oidc:: { Keycloak , OidcMethod , OidcOptions } ;
910use time:: Duration ;
@@ -34,28 +35,37 @@ async fn main() {
3435 let storage = MemoryStorage :: new ( ) ;
3536 let shield = Shield :: new (
3637 storage. clone ( ) ,
37- vec ! [ Arc :: new(
38- OidcMethod :: new( storage)
39- . with_providers( [ Keycloak :: builder(
40- "keycloak" ,
41- "http://localhost:18080/realms/Shield" ,
42- "client1" ,
43- )
44- . client_secret( "xcpQsaGbRILTljPtX4npjmYMBjKrariJ" )
45- . redirect_url( format!(
46- "http://localhost:{}/api/auth/oidc/sign-in-callback/keycloak" ,
47- addr. port( )
48- ) )
49- . build( ) ] )
50- . with_options(
51- OidcOptions :: builder( )
52- . redirect_origins( [
53- Url :: parse( & format!( "http://localhost:{}" , addr. port( ) ) ) . unwrap( ) ,
54- Url :: parse( "http://localhost:5173" ) . unwrap( ) ,
55- ] )
56- . build( ) ,
57- ) ,
58- ) ] ,
38+ vec ! [
39+ Arc :: new( EmailMethod :: new(
40+ EmailOptions :: builder( )
41+ . secret( "secret" )
42+ . sender( TracingSender )
43+ . build( ) ,
44+ storage. clone( ) ,
45+ ) ) ,
46+ Arc :: new(
47+ OidcMethod :: new( storage)
48+ . with_providers( [ Keycloak :: builder(
49+ "keycloak" ,
50+ "http://localhost:18080/realms/Shield" ,
51+ "client1" ,
52+ )
53+ . client_secret( "xcpQsaGbRILTljPtX4npjmYMBjKrariJ" )
54+ . redirect_url( format!(
55+ "http://localhost:{}/api/auth/oidc/sign-in-callback/keycloak" ,
56+ addr. port( )
57+ ) )
58+ . build( ) ] )
59+ . with_options(
60+ OidcOptions :: builder( )
61+ . redirect_origins( [
62+ Url :: parse( & format!( "http://localhost:{}" , addr. port( ) ) ) . unwrap( ) ,
63+ Url :: parse( "http://localhost:5173" ) . unwrap( ) ,
64+ ] )
65+ . build( ) ,
66+ ) ,
67+ ) ,
68+ ] ,
5969 ShieldOptions :: default ( ) ,
6070 ) ;
6171 let shield_layer = ShieldLayer :: new ( shield. clone ( ) ) ;
0 commit comments