use axum::response::{self, IntoResponse, Redirect}; use crate::{ error::Internal, token::extract::Identity, ui::assets::{Asset, Assets}, }; pub async fn handler(identity: Option) -> Result { let _ = identity.ok_or(Error::NotLoggedIn)?; Assets::index().map_err(Error::Internal) } #[derive(Debug, thiserror::Error)] pub enum Error { #[error("not logged in")] NotLoggedIn, #[error("{0}")] Internal(Internal), } impl IntoResponse for Error { fn into_response(self) -> response::Response { match self { Self::NotLoggedIn => Redirect::temporary("/login").into_response(), Self::Internal(error) => error.into_response(), } } }