2016-05-03 13 views
6

Ich benutze UI-Router in meinem Projekt. Die Startseite meiner Anwendung besteht aus 4 Tabs, die jeweils zu einer anderen Vorlage weitergeleitet werden. Dies ist mein aktueller Routing-Code, wobei ich forEach verwende, um 6 Routen zu erstellen.UI-Router: Standardroute basierend auf Benutzerrolle

Standardmäßig, wenn der Benutzer sich anmeldet, geht es zu "root.jobs.list.draft". Wie wird auf einen bestimmten Status basierend auf der Rolle des angemeldeten Benutzers umgeleitet (Admin, Benutzer, Clerk usw.). Wenn Sie möchten, alle Benutzer umzuleiten, die

Ich hatte ursprünglich diese im Controller Teil des „Engineer“ oder „Lead Engineer“ Rolle „root.jobs.list.inprogress“ sind, aber wie Sie sehen können, es hat nicht funktioniert, weil jedes Mal, wenn ich auf eine Registerkarte geklickt haben, um es zu „root.jobs.list.inprogress“

if (user !== undefined) { 
     if (user.BusinessRole == "Engineer" || user.BusinessRole == "Lead Engineer") 
      $state.go('root.jobs.list.inprogress'); 
    } 

Antwort

6

ich habe das immer wieder Strecken bereits lösen hatte:

Ich habe einen Status registriert, der nur dazu verwendet wurde, die Standardseite basierend auf der Rolle zu behandeln.

 $urlRouterProvider.otherwise("/"); 
     $stateProvider.state("default", { 
      url:"/", 
      templateUrl: "app/core/home/default.html", 
      controller: "DefaultController" 
     }); 

Die die Steuerung war einfach:

(function() { 
    "use strict"; 

    angular.module("core").controller("DefaultController", [ 
     "$rootScope", 
     "$state", 
     "roles", 
     function ($rootScope, $state, roles) { 
      if ($rootScope.hasPermission(roles.SomeRoleName)) { 
       $state.go("someStateName"); 
      } else if ($rootScope.hasPermission(roles.SomeRoleName)) { 
       $state.go("someStateName"); 
      } 
     } 
    ]); 
})(); 
1

Wenn die Verknüpfung des Standardstatus für jede Rolle gleiche ist beispiels /user/home sowohl für Admin und Benutzer. Eine Sache, die wir tun können, ist, verschiedene HTML-Vorlagen im Standardzustand der App basierend auf Rollen anzuzeigen. Der ui-Router stellt den @ stateProvider-Dienst mit den Eigenschaften templateProvider und ControllerProvider bereit. Wir können sie verwenden, um herauszufinden, welche Vorlage und welchen Controller wir für denselben Standardzustand verwenden möchten. Here ist der Dokumentationslink.

Verwandte Themen