personal account

This commit is contained in:
arrelin
2026-01-23 12:51:34 +03:00
parent 24bd4aade4
commit b18f69ea62
15 changed files with 688 additions and 12 deletions

View File

@@ -63,6 +63,8 @@ pub use middleware::{require_admin, require_family_access};
routes::invite_link::delete_invite_link,
routes::invite_link::validate_invite_link,
routes::invite_link::join_family_via_invite,
routes::user::leave_family,
routes::user::get_family_members,
),
components(
schemas(
@@ -94,6 +96,8 @@ pub use middleware::{require_admin, require_family_access};
routes::invite_link::InviteLinkResponse,
routes::invite_link::ValidateInviteResponse,
routes::invite_link::JoinFamilyResponse,
routes::user::LeaveFamilyResponse,
routes::user::FamilyMember,
)
),
tags(
@@ -102,7 +106,8 @@ pub use middleware::{require_admin, require_family_access};
(name = "categories", description = "Category management endpoints"),
(name = "expenses", description = "Expense management endpoints"),
(name = "shopping-items", description = "Shopping list management endpoints"),
(name = "invite-links", description = "Family invite link management endpoints")
(name = "invite-links", description = "Family invite link management endpoints"),
(name = "user", description = "User profile management endpoints")
),
info(
title = "Family Budget API",
@@ -154,6 +159,7 @@ pub async fn create_app(db: DatabaseConnection) -> Result<Router, DbErr> {
.route("/login", post(routes::auth::login))
.route("/logout", post(routes::auth::logout))
.route("/me", get(routes::auth::me))
.route("/me/leave-family", post(routes::user::leave_family))
.route("/my-family", post(routes::family::create_my_family))
.route("/auth/family-login", post(routes::auth::family_login))
.layer(auth_layer.clone())
@@ -193,6 +199,7 @@ pub async fn create_app(db: DatabaseConnection) -> Result<Router, DbErr> {
.route("/families/:family_id/shopping-items/:id/purchased", axum::routing::patch(routes::shopping_item::mark_as_purchased))
.route("/families/:family_id/shopping-items/mark-all-purchased", post(routes::shopping_item::mark_all_as_purchased))
.route("/families/:family_id/shopping-items/clear-all", delete(routes::shopping_item::clear_all))
.route("/families/:family_id/members", get(routes::user::get_family_members))
.route_layer(axum_middleware::from_fn(middleware::require_family_access))
.layer(session_layer.clone())
.with_state(db.clone());