Files
familienarchiv/docs/architecture/c4/l3-backend-3d-users-groups.puml

2.8 KiB

Component Diagram: API Backend — Users, Groups & AdministrationComponent Diagram: API Backend — Users, Groups & AdministrationAPI Backend (Spring Boot)[system]«component»UserController[Spring MVC â€” /api/users] Returns current user (/me),creates and deletes users(requires ADMIN_USER),supports user search andprofile updates.«component»GroupController[Spring MVC â€” /api/groups] Lists and managespermission groups.«component»TagController[Spring MVC â€” /api/tags] Lists tags for typeahead,supports tag merge, treestructure, and subtreedeletion.«component»InviteController[Spring MVC â€” /api/auth/invite] Creates invite codes andvalidates them atregistration time.Rate-limited via WebConfiginterceptor.«component»AuthController[Spring MVC â€” /api/auth] Handles user registration(POST /register) andpassword reset tokenendpoints(/forgot-password,/reset-password).«component»UserService[Spring Service] User CRUD with BCryptpassword encoding, groupassignment, and auditlogging. Orchestratesinvite-based registrationand password reset tokens.«component»TagService[Spring Service] Tag CRUD with namesearch, hierarchical treestructure, merge/reparentoperations, and recursivesubtree deletion.«component»DataInitializer[CommandLineRunner] On startup: creates defaultadmin user and groups ifnone exist. Seeds test dataif DB is empty.«component»AppUserRepository[Spring Data JPA] Finds users by email.Supports search by email ordisplay name.«component»UserGroupRepository[Spring Data JPA] Manages permissiongroups.«component»TagRepository[Spring Data JPA] Finds or creates tags byname (case-insensitive).Supports recursiveancestor/descendant CTEqueries and merge/reparenthelpers.«container»Web Frontend[SvelteKit]«container»PostgreSQL[PostgreSQL 16]User requests[HTTP / JSON]Group requests[HTTP / JSON]Tag requests[HTTP / JSON]Invite validation[HTTP / JSON]Registration andpassword reset[HTTP / JSON]Delegates toDelegates toDelegates toReads / writes tagsCreates and validatesinvitesRegisters users,resets passwordsReads / writes usersAssigns groupsSeeds initial data[JDBC]SQL queries[JDBC]SQL queries[JDBC]SQL queries[JDBC]