fix(settings): corregir desincronizacion de metodos de autenticacion, normalizar claves de proveedores y añadir badges reactivos de estado

This commit is contained in:
2026-09-23 17:52:45 -03:00
parent b20e206a76
commit 5771476ee9
5 changed files with 330 additions and 38 deletions
+21 -4
View File
@@ -1746,8 +1746,11 @@ def get_all_settings():
}
auth_providers = {
'local': SystemSetting.get_value('auth_local_enabled', 'true') in ['true', 'True', '1', True],
'local_enabled': SystemSetting.get_value('auth_local_enabled', 'true') in ['true', 'True', '1', True],
'google': SystemSetting.get_value('auth_google_enabled', 'false') in ['true', 'True', '1', True],
'google_enabled': SystemSetting.get_value('auth_google_enabled', 'false') in ['true', 'True', '1', True],
'moodle': SystemSetting.get_value('auth_moodle_enabled', 'false') in ['true', 'True', '1', True],
'moodle_enabled': SystemSetting.get_value('auth_moodle_enabled', 'false') in ['true', 'True', '1', True]
}
@@ -1914,9 +1917,15 @@ def update_auth_providers():
return jsonify({'error': 'Forbidden', 'message': 'Solo administradores pueden modificar los métodos de autenticación.'}), 403
data = request.get_json(silent=True) or request.form.to_dict() or {}
local_val = 'true' if data.get('local_enabled', True) in [True, 'true', '1', 'on'] else 'false'
google_val = 'true' if data.get('google_enabled', False) in [True, 'true', '1', 'on'] else 'false'
moodle_val = 'true' if data.get('moodle_enabled', False) in [True, 'true', '1', 'on'] else 'false'
# Soporte para claves tanto cortas (local) como largas (local_enabled)
local_input = data.get('local_enabled') if 'local_enabled' in data else data.get('local', True)
google_input = data.get('google_enabled') if 'google_enabled' in data else data.get('google', False)
moodle_input = data.get('moodle_enabled') if 'moodle_enabled' in data else data.get('moodle', False)
local_val = 'true' if local_input in [True, 'true', '1', 'on'] else 'false'
google_val = 'true' if google_input in [True, 'true', '1', 'on'] else 'false'
moodle_val = 'true' if moodle_input in [True, 'true', '1', 'on'] else 'false'
SystemSetting.set_value('auth_local_enabled', local_val, 'Habilitar login nativo con usuario/contraseña', category='sso')
SystemSetting.set_value('auth_google_enabled', google_val, 'Habilitar login SSO con Google Workspace', category='sso')
@@ -1937,7 +1946,15 @@ def update_auth_providers():
return jsonify({
'status': 'success',
'message': 'Métodos de autenticación actualizados correctamente.'
'message': 'Métodos de autenticación actualizados correctamente.',
'auth_providers': {
'local': local_val == 'true',
'local_enabled': local_val == 'true',
'google': google_val == 'true',
'google_enabled': google_val == 'true',
'moodle': moodle_val == 'true',
'moodle_enabled': moodle_val == 'true'
}
}), 200