Ich habe impersonate Methode in meiner Meteor-Anwendung erstellt, um sich als ein anderer Benutzer anmelden, basierend auf folgendem Artikel: https://dweldon.silvrback.com/impersonating-a-user. Ich habe auch Intercom-Integration (Chat-Widget und Benutzer-Tracking). Ich möchte auf der Client-Seite dieses Intercom-Widget deaktivieren können, um jede Verfolgung von Intercom-Anwendung zu vermeiden, wenn ich als ein anderer Benutzer angemeldet bin (imitieren). Ich habe darüber nachgedacht, im Benutzerprofil die Boolesche Eigenschaft impersonate zu erstellen und sie auf true zu aktualisieren, wenn ich diese Impersonate-Methode für einen Benutzer auslöst. Das Problem ist, dass ich keine Ahnung habe, wie man es auf false setzt, wenn die Impersonate-Methode beendet ist. Laut Artikel können Sie aufhören, sich zu imitieren, wenn Sie den Browser manuell aktualisieren. Könnten Sie mir bitte helfen und den besten Weg finden?Indentifizieren Benutzer in Meteor
0
A
Antwort
3
Wir können dies in zwei Teile lösen:
Wenn wir einen Benutzer beginnen Identitätswechsel, zu verfolgen, die die Identitätswechsel. Lassen Sie uns dies tun, indem zuerst die impersonate
Methode im Tutorial erstreckt:
Meteor.methods({
impersonate: function(userId) {
check(userId, String);
if (!Meteor.users.findOne(userId))
throw new Meteor.Error(404, 'User not found');
if (!Meteor.user().isAdmin)
throw new Meteor.Error(403, 'Permission denied');
Meteor.users.update(this.userId, { $set: { 'profile.impersonating': userId }});
this.setUserId(userId);
}
});
Als nächstes werden wir einen neuen Login hören müssen Sie
Meteor.onLogin(() => {
Meteor.call('clearImpersonation', (err, result) => {
if (err) console.log('Error clearing impersonation: ',err);
});
});
Meteor.methods({
clearImpersonation(){
const user = Meteor.users.findOne(this.userId);
if (user && user.impersonating) Meteor.users.update(user._id,{ $unset: 'profile.impersonating' });
return;
}
});
Jetzt in Ihrem UI (die auf einem Browser refresh passieren sollte) kann Intercom durch die Prüfung auf die Existenz von Meteor.user().profile.impersonating
Verwandte Themen
- 1. mehr Konten Benutzer in Meteor
- 2. Benutzer Abmelden Rückruf in Meteor
- 3. Meteor facebook Benutzer
- 4. Meteor Angular bekomme alle Benutzer
- 5. Meteor Benutzer viele Hash-Token
- 6. Meteor: Registrierung Benutzer dann Autologin
- 7. Aktueller Benutzer email erhalten meteor
- 8. Meteor veröffentlicht keine korrekten Benutzer
- 9. Linking Benutzer von ID in Meteor veröffentlichen
- 10. Meteor + Reagieren Iterieren von Dokumenten in Benutzer
- 11. Benutzer-Avatar nicht in Meteor angezeigt reagieren
- 12. Versuche, Benutzer in Meteor zu veröffentlichen
- 13. aktualisieren Benutzer E-Mail-Adresse in Meteor
- 14. Alle Benutzer in Meteor React Client anzeigen
- 15. Meteor Querying andere Benutzer per E-Mail
- 16. Wie melde ich einen Benutzer mit Meteor
- 17. Meteor - Hinzufügen neuer Benutzer, ändert den angemeldeten Benutzer
- 18. Meteor Yogiben: Admin Filterung durch eingeloggte Benutzer
- 19. Synchroner Countdown über Benutzer auf Meteor
- 20. Meteor Methode ‚/ Benutzer/Einfügen‘ nicht gefunden
- 21. Meteor, wie man alle Benutzer erhält
- 22. Mehrere Benutzer auf demselben Konto Meteor
- 23. Wie bekomme ich die Benutzer-IP-Adresse in Meteor Server?
- 24. Erhalte Daten aller registrierten Benutzer in Meteor Js
- 25. Wie Benutzer nach ID in Meteor JS auswählen?
- 26. So löschen Sie Benutzer mit einer bestimmten Rolle in Meteor
- 27. In Meteor, ist es möglich, Benutzer über die Eingabeaufforderung aufzulisten
- 28. Meteor Versprechen in Accounts.onCreateUser
- 29. Race condition in Meteor
- 30. Persistente Sitzungen in Meteor
Hallo Michael, danke für den Vorschlag, aber es scheint ein Problem mit onConnection und Meteor.user() oder Meteor.userId() -Methoden. Beide können nur in Meteor-Methodenaufrufen oder Publikationen aufgerufen werden. Wenn ich diese Methoden in OnConnection-Methode verwende, erhalte ich folgenden Fehler: Ausnahme in OnConnection-Rückruf: Fehler: Meteor.userId kann nur in Methodenaufrufen oder Publikationen aufgerufen werden. – wlodi83
Ah ja, Entschuldigung. Ich habe eine Methode hinzugefügt, um den Identitätswechsel zu löschen. –
Hallo Michael, dieser Ansatz funktioniert immer noch nicht. Die Methoden meteor.user(), this.userId und Meteor.userId() geben in der Methode clearImpersonation null zurück. – wlodi83