mud_server.db.users_repo

User account repository operations for the SQLite backend.

This module isolates account and guest-lifecycle persistence logic from the monolithic compatibility facade in database.py.

Functions

create_user_with_password(username, password, *[, ...])

Create an account row without provisioning characters.

user_exists(username)

Return True when a user account exists.

get_user_id(username)

Return user id for username or None if missing.

get_username_by_id(user_id)

Return username for user_id or None if missing.

get_user_role(username)

Return role for username or None if missing.

get_user_account_origin(username)

Return account origin label for username.

set_user_role(username, role)

Update user role.

verify_password_for_user(username, password)

Verify password against bcrypt hash.

is_user_active(username)

Return True when the account is active.

deactivate_user(username)

Deactivate user account.

activate_user(username)

Activate user account.

change_password_for_user(username, new_password)

Change user password using bcrypt hash.

tombstone_user(user_id)

Soft-delete account row by marking tombstone fields.

delete_user(username)

Soft-delete user after detaching characters and removing sessions.

unlink_characters_for_user(user_id)

Detach all characters from a user id.

cleanup_expired_guest_accounts()

Delete expired guest accounts and detach their character ownership.

Module Contents

mud_server.db.users_repo.create_user_with_password(username, password, *, role='player', account_origin='legacy', email_hash=None, is_guest=False, guest_expires_at=None)[source]

Create an account row without provisioning characters.

Parameters:
  • username (str) – Unique account username.

  • password (str) – Plain text password (hashed before persistence).

  • role (str) – Role label for authorization policy.

  • account_origin (str) – Provenance marker for auditing and cleanup.

  • email_hash (str | None) – Optional hashed email value.

  • is_guest (bool) – Whether the account is guest-scoped.

  • guest_expires_at (str | None) – Optional guest expiry timestamp.

Returns:

True when the account is created, otherwise False for uniqueness/integrity conflicts.

Return type:

bool

mud_server.db.users_repo.user_exists(username)[source]

Return True when a user account exists.

mud_server.db.users_repo.get_user_id(username)[source]

Return user id for username or None if missing.

mud_server.db.users_repo.get_username_by_id(user_id)[source]

Return username for user_id or None if missing.

mud_server.db.users_repo.get_user_role(username)[source]

Return role for username or None if missing.

mud_server.db.users_repo.get_user_account_origin(username)[source]

Return account origin label for username.

mud_server.db.users_repo.set_user_role(username, role)[source]

Update user role.

Returns:

True on successful SQL update, otherwise False.

Return type:

bool

mud_server.db.users_repo.verify_password_for_user(username, password)[source]

Verify password against bcrypt hash.

Uses a dummy hash when user lookup fails to preserve timing behavior.

mud_server.db.users_repo.is_user_active(username)[source]

Return True when the account is active.

mud_server.db.users_repo.deactivate_user(username)[source]

Deactivate user account.

mud_server.db.users_repo.activate_user(username)[source]

Activate user account.

mud_server.db.users_repo.change_password_for_user(username, new_password)[source]

Change user password using bcrypt hash.

mud_server.db.users_repo.tombstone_user(user_id)[source]

Soft-delete account row by marking tombstone fields.

mud_server.db.users_repo.delete_user(username)[source]

Soft-delete user after detaching characters and removing sessions.

Detach all characters from a user id.

mud_server.db.users_repo.cleanup_expired_guest_accounts()[source]

Delete expired guest accounts and detach their character ownership.

Returns:

Number of user rows removed.

Return type:

int