BOB Docs
APIApplicationUser

User Service

Key Responsibilities

  • User Management: Handles creation, deletion, and retrieval of users, ensuring email uniqueness and adherence to organization constraints.
  • Profile and Avatar Updates: Manages user profile data and avatar storage.
  • Organization Operations: Supports user transfers between organizations and counts users in specific organizations.
  • Business Rules Enforcement: Ensures actions comply with business rules such as organization membership and subscription limits.

Key Methods

  1. User Operations:
    • create_custom_user: Creates a user with a unique email and an optional password.
    • delete_user: Deletes a user, ensuring they belong to the same organization as the requester.
    • verify_user: Activates a user's account by verifying their email.
  2. Profile and Avatar Management:
    • update_profile_data: Updates or creates user profile details (e.g., name, description).
    • update_avatar: Updates or creates a user's avatar.
    • get_user_avatar: Retrieves a user's avatar if available.
  3. Organization Operations:
    • move_user_to_organization: Transfers a user to a different organization.
    • get_organization_users: Lists all users in a specified organization.
    • is_only_user_in_organization: Checks if a user is the sole member of their organization.
  4. Utility Functions:
    • get_user_by_email: Retrieves a user by their email address.
    • get_amount_of_users: Counts users in an organization or across the system.
    • get_user_for_attaching_to_request: Retrieves a user for attaching to a request.

Dependencies

  • Repositories:
    • CustomUserRepository: Handles user database operations.
    • ProfileRepository: Manages user profile data.
    • AvatarRepository: Handles user avatars.
  • Utilities:
    • generate_password: Creates secure, random passwords.
    • calculate_checksum: Generates unique usernames from email addresses.

Example Usage

  1. Create a User:
user = await user_service.create_custom_user(email="example@test.com", organization_id=1)
  1. Update Profile Data:
profile = await user_service.update_profile_data(user, first_name="John", last_name="Doe")
  1. Move a User to an Organization:
await user_service.move_user_to_organization(custom_user_id="user123", organization_id="org456")

On this page