La funzione di eliminazione utente ha smesso di funzionare nelle configurazioni docker di staging/produzione, ma funziona in locale (nessuna configurazione docker)

Ciao a tutti,

Ho un problema per cui la finestra secondaria di eliminazione utente (quella che effettivamente elimina l’utente, non viene visualizzata su staging/prod (configurazione docker), ma funziona correttamente in locale - nessuna configurazione docker)


Non succede nulla quando premo solo elimina. In locale, procede a mostrare “Eliminazione…” ed elimina l’utente.

Ha smesso di funzionare solo poche settimane fa. Lo stavo usando per eliminare utenti a dicembre dello scorso anno.

Ciao Stephan :wave:

Puoi condividere la tua versione di Discourse?

Ci sono errori nella console degli strumenti per sviluppatori del browser?

Ci sono errori nei log del pannello di amministrazione di Discourse?

Non c’è niente da nessuna parte, è come se il codice non venisse chiamato, l’ho esaminato localmente e l’ho eseguito con il debugger, funziona tutto bene. È davvero strano.

Installato

2.5.0.beta7

( 2a17124a5b )

2.5 è piuttosto vecchio ormai, circa due anni e mezzo, Discourse ha appena raggiunto la 3.0.

C’è qualche motivo per cui non stai aggiornando?

Sì, così tanti in effetti :slight_smile:

Abbiamo un plugin personalizzato che esegue tutta la logica, rendendo Discourse solo uno strumento per archiviare dati e gestire l’autorizzazione e l’autenticazione di base. Gestiamo un’API mobile-first che gestisce anche la convalida dei pagamenti e gli accessi social con app mobili (flussi personalizzati) tra altre funzionalità avanzate :slight_smile:

Il mio problema non riguarda tanto la configurazione di Discourse nel suo complesso, né la versione, poiché ha funzionato bene per 3 anni e continuerà a funzionare per qualche anno perché non ha dipendenze rigide da nulla, e lo ospitiamo su un server dedicato.

Ho davvero bisogno che qualcuno mi dica come procedere per scoprire perché, quando si preme l’azione, non succede nulla… Per come la vedo io, è tutto JavaScript.

destroy(opts) {
    const user = this;
    const message = I18n.t("admin.user.delete_confirm");
    const location = document.location.pathname;

    const performDestroy = function(block) {
      bootbox.dialog(I18n.t("admin.user.deleting_user"));
      let formData = { context: location };
      if (block) {
        formData["block_email"] = true;
        formData["block_urls"] = true;
        formData["block_ip"] = true;
      }
      if (opts && opts.deletePosts) {
        formData["delete_posts"] = true;
      }
      return ajax(`/admin/users/${user.get("id")}.json`, {
        type: "DELETE",
        data: formData
      })
        .then(function(data) {
          if (data.deleted) {
            if (/^\\/admin\\/users\\/list\\//.test(location)) {
              document.location = location;
            } else {
              document.location = getURL("/admin/users/list/active");
            }
          } else {
            bootbox.alert(I18n.t("admin.user.delete_failed"));
            if (data.user) {
              user.setProperties(data.user);
            }
          }
        })
        .catch(function() {
          AdminUser.find(user.get("id")).then(u => user.setProperties(u));
          bootbox.alert(I18n.t("admin.user.delete_failed"));
        });
    };

    const buttons = [
      {
        label: I18n.t("composer.cancel"),
        class: "btn",
        link: true
      },
      {
        label:
          `${iconHTML("exclamation-triangle")} ` +
          I18n.t("admin.user.delete_and_block"),
        class: "btn btn-danger",
        callback: function() {
          performDestroy(true);
        }
      },
      {
        label: I18n.t("admin.user.delete_dont_block"),
        class: "btn btn-primary",
        callback: function() {
          performDestroy(false);
        }
      }
    ];

    bootbox.dialog(message, buttons, { classes: "delete-user-modal" });
  },

Hai esaminato i commit che hanno seguito quella particolare release?

Potrebbe essere semplicemente un bug specifico di quella versione. Se mai ha funzionato su quella build, indagheresti su cos’altro è cambiato.

Hai aggiornato qualcosa da quando ti sei bloccato su quella build? Plugin di terze parti?

No.. ha smesso di funzionare verso metà gennaio, mentre l’app era già in esecuzione. È molto strano.

E non ci sono errori nei log o nella console del tuo browser?

Questa è la mia lista di plugin :slight_smile:

Le persone di docker_manager hanno fatto alcune cose di recente, DEV: Resolve deprecations in upgrade-notice component (#162) · discourse/docker_manager@98205ea · GitHub, che hanno bloccato la mia configurazione per alcuni giorni finché non l’ho scoperto… Ma è più o meno tutto.

Hai bloccato la versione di Discourse nel tuo file app.yml?

Se hai un plugin personalizzato, perché non compare nell’elenco dei plugin? Come è stata installata questa istanza?

È un po’ difficile avere qualcosa che si muova nella configurazione :slight_smile:

Ho inviato la versione dalla versione distribuita, il docker è stato creato con quella versione e tutto è bloccato.

L’ho scritto io :slight_smile:
Estrae i dati quando il container viene creato ed eseguito :slight_smile: quindi è visibile solo nel codice.

C’è il rischio che l’immagine di base sia stata aggiornata? Discourse_docker è passato a ruby 3.1 a gennaio e abbiamo visto un numero di ambienti più vecchi comportarsi in modo imprevedibile con la modifica.

No, il codice fa riferimento a un branch clonato all’interno del nostro repository e al modo in cui costruiamo l’immagine Docker, nessuno ha accesso per costruirne un’altra. Nessun modo.

Quindi ho creato l’ultima immagine Docker circa 5-6 mesi fa… E penso ancora che puntasse alla versione di Docker che era attiva quando la mia versione di Discourse era nuova :slight_smile: dato che abbiamo salvato tutto in anticipo. - Sì, 24 giugno 2020 :slight_smile:

Per tua informazione: ho rimosso anche docker_manager. Non è cambiato nulla.

Per ora, ho deciso di creare un flusso di eliminazione nella nostra dashboard di amministrazione, non sono molto sicuro di cosa succeda nell’interfaccia utente, ma l’endpoint DELETE funziona correttamente e non fallisce per gli utenti semplici (non amministratori, non moderatori).

Se qualcuno può aiutarmi con questo, sarebbe bello :slight_smile: