In meiner Ember-Anwendung habe ich eine Karte von Routen und CRUD-Berechtigungen, die vom Server zurückgegeben wird. Wenn ein Benutzer keinen Lesezugriff auf eine Seite hat, kann ich den Menüeintrag leicht ausschließen, aber für Create- und Update-Vorgänge muss ich einige Änderungen in router.js vornehmen.Was ist die beste Vorgehensweise zum Registrieren von Routen basierend auf Berechtigungen in Ember.js?
So zur Zeit ist dies der Router habe ich:
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: config.locationType
});
Router.map(function() {
this.route('product-types', function() {
this.route('view', {path: '/:product-type_id'});
this.route('edit', {path: '/:product-type_id/edit'});
});
this.route('products');
this.route('members', function() {
this.route('view', {path: '/:member_id'}, function() {
this.route('member-accounts', function() {
this.route('new');
});
});
this.route('edit', {path: '/:member_id/edit'});
this.route('new');
});
this.route('tasks', function() {
this.route('view', {path: '/:task_id'});
});
});
export default Router;
So möchte ich irgendwie in der Lage sein, einfach nicht um die Strecke zu registrieren: neue und oder bearbeiten, wenn der Benutzer nicht die richtigen Berechtigungen verfügt, :
Aber ich bin auf der Suche nach einer besseren Lösung, da die Routen in großen Zahlen wachsen. Also möchte ich vielleicht diesen Ember's Router anpassen, um dies automatisch zu tun. Ist das möglich?
Das andere Problem ist Löschen. Da Delete keine bestimmte Route hat, möchte ich diese Berechtigung standardmäßig automatisch an jedes Modell übergeben können, so dass jedes Modell prüft, ob ein Löschen möglich ist oder nicht, und dann die Schaltfläche zum Löschen ausblenden.
Ich mache mir keine Sorgen über einen Benutzer hackt die js-Dateien und aktiviert die Seiten und versucht, auf die verbotenen Seiten zuzugreifen, weil sie nichts tun können, da der Server sie stoppen wird und alle Berechtigungen überprüfen, aber ich möchte hier a Mechanismus zum Ausblenden/Anzeigen von Seiten, Schaltflächen basierend auf Berechtigungen. Jede Hilfe wird geschätzt.
Sie schafft keine Routen auf Berechtigungen basiert, sondern nur verstecken Funktionen, die Benutzer haben keinen Zugriff auf als TameBadger schon sagt - das ist viel einfacher – marcoow