mirror of
https://github.com/lennart-k/rustical.git
synced 2025-12-13 22:52:22 +00:00
frontend: Show unauthorized messages instead of redirecting to the login screen for non-user resources
This commit is contained in:
@@ -45,38 +45,38 @@ pub fn frontend_router<AP: AuthenticationProvider, CS: CalendarStore, AS: Addres
|
|||||||
frontend_config: FrontendConfig,
|
frontend_config: FrontendConfig,
|
||||||
oidc_config: Option<OidcConfig>,
|
oidc_config: Option<OidcConfig>,
|
||||||
) -> Router {
|
) -> Router {
|
||||||
let mut router = Router::new();
|
let user_router = Router::new()
|
||||||
router = router
|
.route("/", get(route_get_home))
|
||||||
.route("/", get(route_root))
|
.route("/{user}", get(route_user_named::<CS, AS, AP>))
|
||||||
.route("/user", get(route_get_home))
|
|
||||||
.route("/user/{user}", get(route_user_named::<CS, AS, AP>))
|
|
||||||
// App token management
|
// App token management
|
||||||
.route("/user/{user}/app_token", post(route_post_app_token::<AP>))
|
.route("/{user}/app_token", post(route_post_app_token::<AP>))
|
||||||
.route(
|
.route(
|
||||||
// POST because HTML5 forms don't support DELETE method
|
// POST because HTML5 forms don't support DELETE method
|
||||||
"/user/{user}/app_token/{id}/delete",
|
"/{user}/app_token/{id}/delete",
|
||||||
post(route_delete_app_token::<AP>),
|
post(route_delete_app_token::<AP>),
|
||||||
)
|
)
|
||||||
// Calendar
|
// Calendar
|
||||||
.route("/user/{user}/calendar", get(route_calendars::<CS>))
|
.route("/{user}/calendar", get(route_calendars::<CS>))
|
||||||
|
.route("/{user}/calendar/{calendar}", get(route_calendar::<CS>))
|
||||||
.route(
|
.route(
|
||||||
"/user/{user}/calendar/{calendar}",
|
"/{user}/calendar/{calendar}/restore",
|
||||||
get(route_calendar::<CS>),
|
|
||||||
)
|
|
||||||
.route(
|
|
||||||
"/user/{user}/calendar/{calendar}/restore",
|
|
||||||
post(route_calendar_restore::<CS>),
|
post(route_calendar_restore::<CS>),
|
||||||
)
|
)
|
||||||
// Addressbook
|
// Addressbook
|
||||||
.route("/user/{user}/addressbook", get(route_addressbooks::<AS>))
|
.route("/{user}/addressbook", get(route_addressbooks::<AS>))
|
||||||
.route(
|
.route(
|
||||||
"/user/{user}/addressbook/{addressbook}",
|
"/{user}/addressbook/{addressbook}",
|
||||||
get(route_addressbook::<AS>),
|
get(route_addressbook::<AS>),
|
||||||
)
|
)
|
||||||
.route(
|
.route(
|
||||||
"/user/{user}/addressbook/{addressbook}/restore",
|
"/{user}/addressbook/{addressbook}/restore",
|
||||||
post(route_addressbook_restore::<AS>),
|
post(route_addressbook_restore::<AS>),
|
||||||
)
|
)
|
||||||
|
.layer(middleware::from_fn(unauthorized_handler));
|
||||||
|
|
||||||
|
let router = Router::new()
|
||||||
|
.route("/", get(route_root))
|
||||||
|
.nest("/user", user_router)
|
||||||
.route("/login", get(route_get_login).post(route_post_login::<AP>))
|
.route("/login", get(route_get_login).post(route_post_login::<AP>))
|
||||||
.route("/logout", post(route_post_logout));
|
.route("/logout", post(route_post_logout));
|
||||||
|
|
||||||
@@ -109,8 +109,7 @@ pub fn frontend_router<AP: AuthenticationProvider, CS: CalendarStore, AS: Addres
|
|||||||
.layer(Extension(cal_store.clone()))
|
.layer(Extension(cal_store.clone()))
|
||||||
.layer(Extension(addr_store.clone()))
|
.layer(Extension(addr_store.clone()))
|
||||||
.layer(Extension(frontend_config.clone()))
|
.layer(Extension(frontend_config.clone()))
|
||||||
.layer(Extension(oidc_config.clone()))
|
.layer(Extension(oidc_config.clone()));
|
||||||
.layer(middleware::from_fn(unauthorized_handler));
|
|
||||||
|
|
||||||
Router::new()
|
Router::new()
|
||||||
.nest(prefix, router)
|
.nest(prefix, router)
|
||||||
|
|||||||
Reference in New Issue
Block a user