How to change user role based on select field with pro forms

Hi,
I’m not a developper sorry, but here is my problem (and my english is not so good, sorry for that):

I have a bricksforge pro form with a dropdown with 3 values : client , chauffeur, agency
(The user is already logged in, and it’s a client by default).
I want the current user to be able to update it’s role in wordpress.

In Pro Forms “Actions” i’ve set “Update user meta”
How can I update the column wp_capabilities with the right value based on the dropdown?

Thank you so much!

Here is the code, generated with Chatgpt for those who need, simply translate and adapt it:

 
function custom_update_user_meta_action( $form ) {  
  // Récupérer les valeurs des champs soumis
  $fields = $form->get_fields();

  // Récupérer la valeur du champ avec l'ID b96730
  $account_type = sanitize_text_field($fields['form-field-b96730']);

  // Vérifier que la valeur du champ est 'client', 'chauffeur' ou 'agence'
  $valid_account_types = ['client', 'chauffeur', 'agence'];
  if (in_array($account_type, $valid_account_types)) {
    // Récupérer l'utilisateur connecté
    $current_user = wp_get_current_user();

    // Vérifier que l'utilisateur est connecté
    if ($current_user->ID != 0) {
      // Vérifier les capacités de l'utilisateur, par exemple si l'utilisateur peut éditer son propre profil
      if (current_user_can('edit_user', $current_user->ID)) {
        // Mettre à jour le rôle de l'utilisateur
        $current_user->set_role($account_type);

        // Mettre à jour la valeur de ox_ctf_user_level
        $level_updated = update_user_meta($current_user->ID, 'ox_ctf_user_level', 0);

        // Vérifier si les mises à jour ont réussi
        if ($current_user->has_cap($account_type) && $level_updated) {
          $form->set_result([
            'action' => 'custom_update_user_meta_action',
            'type'    => 'success',
            'message' => esc_html__('Type de compte défini', 'bricks'),
          ]);
        } else {
          $form->set_result([
            'action' => 'custom_update_user_meta_action',
            'type'    => 'error',
            'message' => esc_html__('Une erreur est survenue lors de la mise à jour du type de compte.', 'bricks'),
          ]);
        }
      } else {
        $form->set_result([
          'action' => 'custom_update_user_meta_action',
          'type'    => 'error',
          'message' => esc_html__('Permissions insuffisantes.', 'bricks'),
        ]);
      }
    } else {
      $form->set_result([
        'action' => 'custom_update_user_meta_action',
        'type'    => 'error',
        'message' => esc_html__('Aucun utilisateur connecté.', 'bricks'),
      ]);
    }
  } else {
    $form->set_result([
      'action' => 'custom_update_user_meta_action',
      'type'    => 'error',
      'message' => esc_html__('Type de compte non valide.', 'bricks'),
    ]);
  }
}
add_action( 'bricks/form/custom_action', 'custom_update_user_meta_action', 10, 1 );

:grinning: :grinning: :grinning: :grinning: