update: Add Global Search on Header, Add Global Audit log for all actions.
This commit is contained in:
@@ -6,6 +6,7 @@ from auth.dependencies import require_permission
|
||||
from auth.models import TokenPayload
|
||||
from notes import service
|
||||
from notes.models import EntryCreate, EntryUpdate, EntryOut, EntryListResponse, LinksReplaceIn
|
||||
from shared.audit import log_action
|
||||
|
||||
router = APIRouter(prefix="/api/notes", tags=["notes"])
|
||||
|
||||
@@ -49,7 +50,10 @@ async def create_entry(
|
||||
db: AsyncSession = Depends(get_pg_session),
|
||||
_user: TokenPayload = Depends(require_permission("crm", "add")),
|
||||
):
|
||||
return await service.create_entry(db, body, _user.sub, _user.name or _user.email)
|
||||
entry = await service.create_entry(db, body, _user.sub, _user.name or _user.email)
|
||||
await log_action(db, _user.sub, _user.name or _user.email, "CREATE", "note",
|
||||
str(entry.id), entry.title or entry.type)
|
||||
return entry
|
||||
|
||||
|
||||
@router.patch("/{entry_id}", response_model=EntryOut)
|
||||
@@ -58,7 +62,10 @@ async def update_entry(
|
||||
db: AsyncSession = Depends(get_pg_session),
|
||||
_user: TokenPayload = Depends(require_permission("crm", "edit")),
|
||||
):
|
||||
return await service.update_entry(db, entry_id, body)
|
||||
entry = await service.update_entry(db, entry_id, body)
|
||||
await log_action(db, _user.sub, _user.name or _user.email, "UPDATE", "note",
|
||||
str(entry_id), entry.title or entry.type)
|
||||
return entry
|
||||
|
||||
|
||||
@router.patch("/{entry_id}/links", response_model=EntryOut)
|
||||
@@ -67,7 +74,11 @@ async def replace_links(
|
||||
db: AsyncSession = Depends(get_pg_session),
|
||||
_user: TokenPayload = Depends(require_permission("crm", "edit")),
|
||||
):
|
||||
return await service.replace_links(db, entry_id, body.links)
|
||||
entry = await service.replace_links(db, entry_id, body.links)
|
||||
await log_action(db, _user.sub, _user.name or _user.email, "UPDATE", "note",
|
||||
str(entry_id), entry.title or entry.type,
|
||||
meta={"action_detail": "links_updated"})
|
||||
return entry
|
||||
|
||||
|
||||
@router.delete("/{entry_id}", status_code=204)
|
||||
@@ -76,4 +87,7 @@ async def delete_entry(
|
||||
db: AsyncSession = Depends(get_pg_session),
|
||||
_user: TokenPayload = Depends(require_permission("crm", "delete")),
|
||||
):
|
||||
entry = await service.get_entry(db, entry_id)
|
||||
await service.delete_entry(db, entry_id)
|
||||
await log_action(db, _user.sub, _user.name or _user.email, "DELETE", "note",
|
||||
str(entry_id), entry.title or entry.type if entry else str(entry_id))
|
||||
|
||||
Reference in New Issue
Block a user