fix(auth/users): corregir edicion de contraseñas de usuarios, cambio de contraseña y evitar pantalla en blanco
This commit is contained in:
@@ -444,6 +444,38 @@ def get_document_types():
|
||||
'document_types': DOCUMENT_TYPES
|
||||
}), 200
|
||||
|
||||
@api_admin_bp.route('/users/<int:id>/password', methods=['POST', 'PUT'])
|
||||
@jwt_required
|
||||
def reset_user_password(id):
|
||||
"""
|
||||
Permite a los administradores restablecer la contraseña de acceso de cualquier usuario.
|
||||
"""
|
||||
if not g.jwt_user.is_admin():
|
||||
return jsonify({
|
||||
'error': 'Forbidden',
|
||||
'message': 'Solo los administradores institucionales pueden restablecer contraseñas.'
|
||||
}), 403
|
||||
|
||||
user = User.query.get_or_404(id)
|
||||
data = request.get_json(silent=True) or request.form.to_dict() or {}
|
||||
new_password = (data.get('password') or data.get('new_password') or '').strip()
|
||||
|
||||
if not new_password or len(new_password) < 6:
|
||||
return jsonify({
|
||||
'error': 'BadRequest',
|
||||
'message': 'La nueva contraseña debe contener al menos 6 caracteres.'
|
||||
}), 400
|
||||
|
||||
user.set_password(new_password)
|
||||
db.session.commit()
|
||||
|
||||
return jsonify({
|
||||
'status': 'success',
|
||||
'message': f'Contraseña restablecida exitosamente para {user.name}.',
|
||||
'user_id': user.id
|
||||
}), 200
|
||||
|
||||
|
||||
@api_admin_bp.route('/users/<int:id>/toggle', methods=['POST'])
|
||||
@jwt_required
|
||||
def toggle_user(id):
|
||||
|
||||
Reference in New Issue
Block a user