Database refactor to separate modules.
This commit is contained in:
@@ -356,7 +356,7 @@ async def admin_add_role_permission(
|
||||
db.get_permission(permission_id)
|
||||
org = db.get_organization(str(org_uuid))
|
||||
if permission_id not in org.permissions:
|
||||
raise ValueError(f"Permission not grantable by organization")
|
||||
raise ValueError("Permission not grantable by organization")
|
||||
|
||||
db.add_permission_to_role(role_uuid, permission_id)
|
||||
return {"status": "ok"}
|
||||
@@ -593,14 +593,10 @@ async def admin_get_user_detail(
|
||||
status_code=403, detail="Insufficient permissions", mode="forbidden"
|
||||
)
|
||||
user = db.get_user_by_uuid(user_uuid)
|
||||
cred_ids = db.get_credentials_by_user_uuid(user_uuid)
|
||||
user_creds = db.get_credentials_by_user_uuid(user_uuid)
|
||||
creds: list[dict] = []
|
||||
aaguids: set[str] = set()
|
||||
for cid in cred_ids:
|
||||
try:
|
||||
c = db.get_credential_by_id(cid)
|
||||
except ValueError: # pragma: no cover - race condition handling
|
||||
continue
|
||||
for c in user_creds:
|
||||
aaguid_str = str(c.aaguid)
|
||||
aaguids.add(aaguid_str)
|
||||
creds.append(
|
||||
|
||||
@@ -13,6 +13,7 @@ from fastapi import (
|
||||
from fastapi.responses import JSONResponse
|
||||
from fastapi.security import HTTPBearer
|
||||
|
||||
from paskia import db
|
||||
from paskia.authsession import (
|
||||
EXPIRES,
|
||||
get_reset,
|
||||
@@ -21,7 +22,6 @@ from paskia.authsession import (
|
||||
)
|
||||
from paskia.fastapi import authz, session, user
|
||||
from paskia.fastapi.session import AUTH_COOKIE, AUTH_COOKIE_NAME
|
||||
from paskia import db
|
||||
from paskia.globals import passkey as global_passkey
|
||||
from paskia.util import frontend, hostutil, htmlutil, passphrase, userinfo
|
||||
from paskia.util.tokens import session_key
|
||||
|
||||
@@ -15,11 +15,10 @@ from uuid import UUID
|
||||
import base64url
|
||||
from fastapi import FastAPI, WebSocket, WebSocketDisconnect
|
||||
|
||||
from paskia import remoteauth
|
||||
from paskia import db, remoteauth
|
||||
from paskia.authsession import create_session
|
||||
from paskia.fastapi.session import infodict
|
||||
from paskia.fastapi.wsutil import validate_origin, websocket_error_handler
|
||||
from paskia import db
|
||||
from paskia.globals import passkey
|
||||
from paskia.util import passphrase, pow
|
||||
|
||||
|
||||
@@ -27,9 +27,9 @@ async def _resolve_targets(query: str | None):
|
||||
targets: list[tuple] = []
|
||||
try:
|
||||
q_uuid = UUID(query)
|
||||
perm_orgs = await _db.get_permission_organizations("auth:admin")
|
||||
perm_orgs = _db.get_permission_organizations("auth:admin")
|
||||
for o in perm_orgs:
|
||||
users = await _db.get_organization_users(str(o.uuid))
|
||||
users = _db.get_organization_users(str(o.uuid))
|
||||
for u, role_name in users:
|
||||
if u.uuid == q_uuid:
|
||||
return [(u, role_name)]
|
||||
@@ -38,9 +38,9 @@ async def _resolve_targets(query: str | None):
|
||||
pass
|
||||
# Substring search
|
||||
needle = query.lower()
|
||||
perm_orgs = await _db.get_permission_organizations("auth:admin")
|
||||
perm_orgs = _db.get_permission_organizations("auth:admin")
|
||||
for o in perm_orgs:
|
||||
users = await _db.get_organization_users(str(o.uuid))
|
||||
users = _db.get_organization_users(str(o.uuid))
|
||||
for u, role_name in users:
|
||||
if needle in (u.display_name or "").lower():
|
||||
targets.append((u, role_name))
|
||||
@@ -53,10 +53,10 @@ async def _resolve_targets(query: str | None):
|
||||
deduped.append((u, role_name))
|
||||
return deduped
|
||||
# No query -> master admin
|
||||
perm_orgs = await _db.get_permission_organizations("auth:admin")
|
||||
perm_orgs = _db.get_permission_organizations("auth:admin")
|
||||
if not perm_orgs:
|
||||
return []
|
||||
users = await _db.get_organization_users(str(perm_orgs[0].uuid))
|
||||
users = _db.get_organization_users(str(perm_orgs[0].uuid))
|
||||
admin_users = [pair for pair in users if pair[1] == "Administration"]
|
||||
return admin_users[:1]
|
||||
|
||||
@@ -64,9 +64,9 @@ async def _resolve_targets(query: str | None):
|
||||
async def _create_reset(user, role_name: str):
|
||||
token = passphrase.generate()
|
||||
expiry = _authsession.reset_expires()
|
||||
await _db.create_reset_token(
|
||||
user_uuid=user.uuid,
|
||||
_db.create_reset_token(
|
||||
key=_tokens.reset_key(token),
|
||||
user_uuid=user.uuid,
|
||||
expiry=expiry,
|
||||
token_type="manual reset",
|
||||
)
|
||||
|
||||
@@ -10,6 +10,7 @@ from fastapi import (
|
||||
)
|
||||
from fastapi.responses import JSONResponse
|
||||
|
||||
from paskia import db
|
||||
from paskia.authsession import (
|
||||
delete_credential,
|
||||
expires,
|
||||
@@ -17,7 +18,6 @@ from paskia.authsession import (
|
||||
)
|
||||
from paskia.fastapi import authz, session
|
||||
from paskia.fastapi.session import AUTH_COOKIE
|
||||
from paskia import db
|
||||
from paskia.util import hostutil, passphrase, tokens
|
||||
from paskia.util.tokens import decode_session_key, session_key
|
||||
|
||||
|
||||
@@ -2,11 +2,11 @@ from uuid import UUID
|
||||
|
||||
from fastapi import FastAPI, WebSocket
|
||||
|
||||
from paskia import db
|
||||
from paskia.authsession import create_session, get_reset, get_session
|
||||
from paskia.fastapi import authz, remote
|
||||
from paskia.fastapi.session import AUTH_COOKIE, infodict
|
||||
from paskia.fastapi.wsutil import validate_origin, websocket_error_handler
|
||||
from paskia import db
|
||||
from paskia.globals import passkey
|
||||
from paskia.util import passphrase
|
||||
from paskia.util.tokens import create_token, session_key
|
||||
|
||||
Reference in New Issue
Block a user