implement patches

This commit is contained in:
2026-04-17 16:35:44 -04:00
parent 15f8a38ba3
commit b0a475642d
8 changed files with 334 additions and 26 deletions
+35
View File
@@ -1,6 +1,7 @@
from flask import Blueprint, request, jsonify, g
from app import db
from app.models.vault_item import VaultItem, ItemType
from app.models.audit_log import AuditLog
from app.services.auth_service import require_jwt
vault_bp = Blueprint('vault', __name__)
@@ -8,6 +9,11 @@ vault_bp = Blueprint('vault', __name__)
VALID_TYPES = {t.value for t in ItemType}
def _client_ip():
from flask import request as _req
return _req.headers.get('X-Forwarded-For', _req.remote_addr or '').split(',')[0].strip()
@vault_bp.route('', methods=['GET'])
@require_jwt
def list_items():
@@ -44,6 +50,15 @@ def create_item():
)
try:
db.session.add(item)
db.session.flush() # populate item.id before logging
AuditLog.log(
user_id=g.current_user_id,
action='vault_item.create',
resource_type='vault_item',
resource_id=item.id,
detail=f'Created {item_type} item: "{name}"',
ip_address=_client_ip(),
)
db.session.commit()
except Exception as e:
db.session.rollback()
@@ -80,6 +95,15 @@ def update_item(item_id):
if 'iv' in data:
item.iv = data['iv']
db.session.flush()
AuditLog.log(
user_id=g.current_user_id,
action='vault_item.update',
resource_type='vault_item',
resource_id=item.id,
detail=f'Updated item: "{item.name}"',
ip_address=_client_ip(),
)
db.session.commit()
return jsonify(item.to_dict()), 200
@@ -90,6 +114,17 @@ def delete_item(item_id):
item = VaultItem.query.filter_by(id=item_id, user_id=g.current_user_id).first()
if not item:
return jsonify({'error': 'Item not found'}), 404
item_name = item.name
item_id = item.id
db.session.delete(item)
db.session.flush()
AuditLog.log(
user_id=g.current_user_id,
action='vault_item.delete',
resource_type='vault_item',
resource_id=item_id,
detail=f'Deleted item: "{item_name}"',
ip_address=_client_ip(),
)
db.session.commit()
return jsonify({'message': 'Item deleted'}), 200