Files
paskia/paskia/db/__init__.py
T
LeoVasanko 4591a023dd Clean-slate storage: realms Config, Credential.rp_id, Session rp_id/issuer, per-realm OIDC
- Config is now a realm list (first = default); DB.oidc keyed by rp-id
- Database at fixed paskia.kantadb; user files under paskia.data/users/
- Legacy <rp-id>.paskiadb reader/converter in db/legacy.py (to be deleted eventually)
- paskia init / paskia serve CLI split; serve adopts a lone legacy database
- Realm registry (paskia/realms.py) with cross-realm validation
- Per-realm OIDC keys in oidjwt; backchannel logout uses Session.rp_id/issuer
- Schema migrations discarded; on-disk legacy format assumed current
2026-09-06 03:50:06 +00:00

147 lines
2.9 KiB
Python

"""
Database module for WebAuthn passkey authentication.
Read: Access data() directly for structs.
CTX: data().session_ctx(key) returns SessionContext with effective permissions.
Write: Functions validate and commit, or raise ValueError.
Usage:
from paskia import db
# Read (after init)
user_data = db.data().users[user_uuid]
# Context
ctx = db.data().session_ctx(session_key)
# Write
db.create_user(user)
"""
import paskia.db.operations as operations
from paskia.db.bootstrap import bootstrap
from paskia.db.operations import (
add_permission_to_org,
add_permission_to_role,
create_credential,
create_credential_session,
create_oid_client,
create_org,
create_permission,
create_realm,
create_reset_token,
create_role,
create_user,
delete_credential,
delete_oid_client,
delete_org,
delete_permission,
delete_realm,
delete_reset_token,
delete_role,
delete_session,
delete_sessions_for_user,
delete_user,
is_username_taken,
login,
oidc_login,
remove_permission_from_org,
remove_permission_from_role,
reset_oid_client_secret,
set_session_host,
update_config,
update_credential_sign_count,
update_oid_client,
update_org_name,
update_permission,
update_realm,
update_role_name,
update_session,
update_user_display_name,
update_user_info,
update_user_role,
)
from paskia.db.structs import (
DB,
OIDC,
Client,
Config,
Credential,
Org,
Permission,
RealmConfig,
ResetToken,
Role,
Session,
SessionContext,
User,
)
def data() -> DB:
"""Get the database instance for direct read access."""
return operations._db
__all__ = [
# Types
"Config",
"Credential",
"DB",
"Client",
"OIDC",
"Org",
"Permission",
"RealmConfig",
"ResetToken",
"Role",
"Session",
"SessionContext",
"User",
# Instance
"data",
# Read ops
# Write ops
"add_permission_to_org",
"add_permission_to_role",
"bootstrap",
"create_credential",
"create_credential_session",
"create_org",
"create_permission",
"create_realm",
"create_reset_token",
"create_role",
"create_user",
"delete_credential",
"delete_org",
"delete_permission",
"delete_realm",
"delete_reset_token",
"delete_role",
"delete_session",
"delete_sessions_for_user",
"delete_user",
"login",
"oidc_login",
"remove_permission_from_org",
"remove_permission_from_role",
"set_session_host",
"update_config",
"update_credential_sign_count",
"update_org_name",
"update_permission",
"update_realm",
"update_role_name",
"update_session",
"update_user_display_name",
"update_user_info",
"update_user_role",
"is_username_taken",
# OIDC
"create_oid_client",
"update_oid_client",
"reset_oid_client_secret",
"delete_oid_client",
]