feat(settings): agregar opcion global para habilitar o deshabilitar saludo y selector de rol en dashboard
This commit is contained in:
@@ -1832,13 +1832,18 @@ def get_all_settings():
|
||||
'sync_interval_minutes': int(SystemSetting.get_value('moodle_sync_interval_minutes', 15))
|
||||
}
|
||||
|
||||
ui_config = {
|
||||
'show_role_banner': SystemSetting.get_value('dashboard_role_banner_enabled', 'true') in ['true', 'True', '1', True]
|
||||
}
|
||||
|
||||
return jsonify({
|
||||
'status': 'success',
|
||||
'settings': {
|
||||
'smtp': smtp_config,
|
||||
'auth_providers': auth_providers,
|
||||
'google_oauth': google_oauth,
|
||||
'moodle': moodle_config
|
||||
'moodle': moodle_config,
|
||||
'ui': ui_config
|
||||
}
|
||||
}), 200
|
||||
|
||||
@@ -2021,6 +2026,47 @@ def update_auth_providers():
|
||||
}), 200
|
||||
|
||||
|
||||
@api_admin_bp.route('/settings/ui', methods=['POST'])
|
||||
@jwt_required
|
||||
def update_ui_settings():
|
||||
"""Habilita o deshabilita elementos de interfaz de usuario, como el banner de saludo institucional y selector de roles."""
|
||||
from app.models.setting import SystemSetting
|
||||
from app.models.audit_log import AuditLog
|
||||
|
||||
acting_user = getattr(g, 'jwt_user', None)
|
||||
if not (acting_user and (acting_user.is_admin() or getattr(acting_user, 'role', '').upper() == 'ADMIN')):
|
||||
return jsonify({'error': 'Forbidden', 'message': 'Solo administradores pueden modificar las preferencias de interfaz.'}), 403
|
||||
|
||||
data = request.get_json(silent=True) or request.form.to_dict() or {}
|
||||
show_banner_input = data.get('show_role_banner')
|
||||
if show_banner_input is None:
|
||||
show_banner_input = data.get('dashboard_role_banner_enabled')
|
||||
|
||||
show_val = 'true' if show_banner_input in [True, 'true', '1', 'on', 1] else 'false'
|
||||
SystemSetting.set_value('dashboard_role_banner_enabled', show_val, 'Mostrar banner de saludo y selector de rol en Dashboard', category='ui')
|
||||
|
||||
try:
|
||||
audit = AuditLog(
|
||||
user_id=acting_user.id,
|
||||
user_email=acting_user.email,
|
||||
action='UPDATE_UI_SETTINGS',
|
||||
module='settings',
|
||||
details=f"Preferencia de interfaz actualizada: banner_saludo_rol={show_val}"
|
||||
)
|
||||
db.session.add(audit)
|
||||
db.session.commit()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
return jsonify({
|
||||
'status': 'success',
|
||||
'message': 'Preferencia de interfaz guardada correctamente.',
|
||||
'ui': {
|
||||
'show_role_banner': show_val == 'true'
|
||||
}
|
||||
}), 200
|
||||
|
||||
|
||||
@api_admin_bp.route('/settings/demo-mode', methods=['GET', 'POST'])
|
||||
@jwt_required
|
||||
def toggle_demo_mode_api():
|
||||
|
||||
Reference in New Issue
Block a user