Skip to main content

User Account and Item Lifecycle States

This state diagram illustrates the lifecycle and states of User Accounts and Items within the system.

User Account States​

The User Account state is primarily governed by two boolean flags: is_active and is_superuser.

  • Active: The default state for new users (via signup or admin creation). Active users can log in, manage their own items, and reset their passwords.
  • Inactive: A state where the user account exists but is disabled. Inactive users are blocked from logging in or performing any actions, including password recovery.
  • Superuser: A privileged state that allows the user to access administrative routes, manage other users, and view all items in the system.

Item Lifecycle​

The Item Model lifecycle follows a standard CRUD pattern but is tightly coupled with the User who owns it.

  • Created: The initial state when an item is added to the system.
  • Updated: Items can be modified multiple times by their owner or a superuser.
  • Deleted: Items can be removed explicitly or automatically via a cascade delete if the owner's account is removed.

Key Constraints​

  • Authentication Guard: The is_active flag is checked during every authenticated request.
  • Self-Deletion Protection: Superusers are prevented from deleting their own accounts to ensure at least one administrator remains.
  • Cascade Deletion: Deleting a user automatically transitions all their associated items to the deleted state.

Key Architectural Findings:

  • User accounts have three primary states based on is_active and is_superuser flags.
  • The is_active flag serves as a global guard; inactive users cannot authenticate or reset passwords.
  • Superusers have a distinct state allowing them to manage other users and all items.
  • Items follow a simple lifecycle of Created -> Updated -> Deleted.
  • Item deletion is linked to the User lifecycle via SQLAlchemy cascade deletes.
  • Superusers are restricted from self-deletion to prevent system lockout.
Loading diagram...