feat: implement authentication flow and session management
- Update RootLayout to handle authentication state and redirect users based on their auth status. - Create an Index component to redirect unauthenticated users to the login page. - Modify ApiAuthRepository to fetch user session data using access and refresh tokens. - Introduce a new container file to manage use case instances for authentication and filament operations. - Enhance authStore to validate tokens and fetch user data from the API. - Add babel-plugin-module-resolver for improved module imports. - Update package.json scripts for running the app on Android and iOS. - Add expo-camera dependency for camera functionalities. - Update tsconfig.json to include infrastructure path mapping.
This commit is contained in:
@@ -82,6 +82,15 @@ pub async fn create_preset_handler(
|
||||
Ok((StatusCode::CREATED, Json(SpoolPresetResponse::from(preset))))
|
||||
}
|
||||
|
||||
pub async fn get_preset_handler(
|
||||
State(state): State<AppState>,
|
||||
Extension(_user): Extension<CurrentUser>,
|
||||
Path(id): Path<Uuid>,
|
||||
) -> Result<impl IntoResponse, AppError> {
|
||||
let preset = state.spool_preset_service.get_by_id(id).await?;
|
||||
Ok(Json(SpoolPresetResponse::from(preset)))
|
||||
}
|
||||
|
||||
pub async fn update_preset_handler(
|
||||
State(state): State<AppState>,
|
||||
Extension(user): Extension<CurrentUser>,
|
||||
|
||||
@@ -228,7 +228,7 @@ impl FilamentService {
|
||||
pub async fn generate_qrcode_png(&self, id: Uuid, user_id: Uuid) -> Result<Vec<u8>, AppError> {
|
||||
self.get(id, user_id).await?;
|
||||
|
||||
let deep_link = format!("meowspool://filaments/{id}");
|
||||
let deep_link = format!("meowspool://filament/{id}");
|
||||
let code = qrcode::QrCode::new(deep_link.as_bytes())
|
||||
.map_err(|e| AppError::Internal(anyhow::anyhow!("QR Code generation failed: {e}")))?;
|
||||
|
||||
|
||||
@@ -23,6 +23,10 @@ impl SpoolPresetService {
|
||||
self.repo.list_for_user(user_id).await
|
||||
}
|
||||
|
||||
pub async fn get_by_id(&self, id: Uuid) -> Result<SpoolPreset, AppError> {
|
||||
self.repo.find_by_id(id).await?.ok_or(AppError::NotFound)
|
||||
}
|
||||
|
||||
pub async fn create(
|
||||
&self,
|
||||
user_id: Uuid,
|
||||
|
||||
@@ -88,6 +88,7 @@ pub fn build(db: PgPool, config: Config) -> Router {
|
||||
// Spool Presets
|
||||
.route("/spool-presets", get(spool_preset_handler::list_presets_handler))
|
||||
.route("/spool-presets", post(spool_preset_handler::create_preset_handler))
|
||||
.route("/spool-presets/:id", get(spool_preset_handler::get_preset_handler))
|
||||
.route("/spool-presets/:id", put(spool_preset_handler::update_preset_handler))
|
||||
.route("/spool-presets/:id", delete(spool_preset_handler::delete_preset_handler))
|
||||
.route_layer(middleware::from_fn_with_state(state.clone(), auth_middleware));
|
||||
|
||||
Reference in New Issue
Block a user