Löschen-Benutzer-Funktion funktioniert nicht mehr in Staging/Produktion Docker-Setups, aber funktioniert lokal (kein Docker-Setup)

Hallo zusammen,

Ich habe ein Problem, bei dem das sekundäre Fenster zum Löschen von Benutzern (das Fenster, das den Benutzer tatsächlich löscht, wird auf Staging/Prod (Docker-Setup) nicht angezeigt, funktioniert aber lokal einwandfrei - kein Docker-Setup)


Es passiert nichts, wenn ich nur auf Löschen klicke. Lokal wird dann “Lösche…” angezeigt und der Benutzer gelöscht.

Es hat vor ein paar Wochen aufgehört zu funktionieren. Ich habe es im Dezember letzten Jahres zum Löschen von Benutzern verwendet.

Hallo Stephan :wave:

Können Sie Ihre Discourse-Version mitteilen?

Gibt es Fehler in der Konsole der Browser-Entwicklertools?

Gibt es Fehler in den Protokollen des Discourse-Admin-Panels?

Nichts irgendwo, es ist, als ob der Code nicht aufgerufen wird. Ich habe ihn lokal überprüft und debuggt, alles läuft in Ordnung. Es ist wirklich seltsam.

Installiert

2.5.0.beta7

( 2a17124a5b )

2.5 ist jetzt ziemlich alt – etwa zweieinhalb Jahre, Discourse hat gerade 3.0 erreicht.

Gibt es einen Grund, warum Sie nicht upgraden?

Ach, so viele tatsächlich :slight_smile:

Wir haben ein benutzerdefiniertes Plugin, das die gesamte Logik ausführt, wodurch Discourse nur als Werkzeug zur Datenspeicherung und zur Handhabung grundlegender Autorisierungs- und Authentifizierungsfunktionen dient. Wir betreiben eine Mobile-First-API, die auch die Zahlungsvalidierung und soziale Logins mit mobilen Apps (benutzerdefinierte Flows) neben anderen erweiterten Funktionen übernimmt :slight_smile:

Mein Problem liegt nicht wirklich in der Discourse-Einrichtung als Ganzes oder in der Version, da sie 3 Jahre lang gut lief und noch ein paar Jahre laufen wird, da sie keine strengen Abhängigkeiten von irgendetwas hat und wir sie auf einem dedizierten Server hosten.

Ich brauche wirklich jemanden, der mir sagt, wie ich herausfinden kann, warum nichts passiert, wenn ich auf die Aktion klicke… Soweit ich das sehe, ist alles 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" });
  },

Haben Sie sich die Commits angesehen, die dieser bestimmten Veröffentlichung gefolgt sind?

Es könnte sich nur um einen Fehler handeln, der spezifisch für diese Version ist. Wenn es jemals auf diesem Build funktioniert hat, würde ich untersuchen, was sich sonst noch geändert hat.

Haben Sie seit der Sperrung auf diesem Build etwas aktualisiert? Irgendwelche Drittanbieter-Plugins?

Nein.. es funktionierte etwa Mitte Januar nicht mehr, während die App bereits lief. Das ist sehr seltsam.

Und gibt es keine Fehler in /logs oder in der Browserkonsole?

Dies ist meine Plugin-Liste :slight_smile:

Die Leute bei docker_manager haben kürzlich einige Dinge getan, DEV: Resolve deprecations in upgrade-notice component (#162) · discourse/docker_manager@98205ea · GitHub, die mein Setup für ein paar Tage lahmgelegt haben, bis ich es herausfand… Aber das ist so ziemlich alles.

Haben Sie die Discourse-Version in Ihrer app.yml angeheftet?

Wenn Sie ein benutzerdefiniertes Plugin haben, warum wird es dann nicht in der Plugin-Liste angezeigt? Wie wurde diese Instanz installiert?

Es ist irgendwie schwer, etwas in der Konfiguration zu bewegen :slight_smile:

Ich habe die Version von der bereitgestellten Version gesendet, der Docker wird mit dieser Version erstellt und alles ist angepinnt.

Nun, ich habe es geschrieben :slight_smile:
Es zieht Daten, wenn der Container erstellt und ausgeführt wird :slight_smile: daher ist es nur im Code sichtbar.

Besteht irgendein Risiko, dass das Basis-Image aktualisiert wurde? Discourse_docker wurde im Januar auf Ruby 3.1 aktualisiert und wir haben eine Reihe älterer Umgebungen gesehen, die sich unvorhersehbar mit der Änderung verhalten haben.

Nein, der Code verknüpft sich mit einem geklonten Branch in unserem Repository und der Art und Weise, wie wir das Docker-Image erstellen. Niemand hat Zugriff, um ein weiteres zu erstellen. Auf keinen Fall.

Ich habe das letzte Docker-Image vor etwa 5-6 Monaten erstellt… Und ich glaube immer noch, dass es auf die Docker-Version verwiesen hat, die aktuell war, als meine Discourse-Version neu war :slight_smile: da wir alles im Voraus gespeichert haben. - Ja, 24. Juni 2020 :slight_smile:

FYI: docker_manager wurde ebenfalls entfernt. Nichts hat sich geändert.

Vorerst habe ich mich entschieden, einen Löschvorgang in unserem Admin-Dashboard zu erstellen. Ich bin mir nicht sicher, was im UI passiert, aber der DELETE-Endpunkt funktioniert ordnungsgemäß und schlägt für einfache Benutzer (nicht Administratoren, nicht Moderatoren) nicht fehl.

Wenn jemand dabei helfen kann, wäre das schön :slight_smile: