2016-11-22 4 views
0

in meiner App habe ich viele verschiedene USER ROLE's. Und auf einem Staat muss ich verschiedene Rollen einstellen. Bellow Code, mit nur einer Benutzerrolle, arbeitet okBenutzerrolle auf UI-STATE

.state('distributor-dashboard', { 
       url: '/distributor-dashboard', 
       templateUrl: 'assets/html_templates/distributor-dashboard/distributor-dashboard.html', 
       controller: 'distributorDashboardCtrl', 
       authentication: {role: admin} 
      }) 

Aber, wenn ich versuche, eine andere Rolle hinzuzufügen, sie don‘Arbeit hier ist Beispiel

.state('distributor-dashboard', { 
       url: '/distributor-dashboard', 
       templateUrl: 'assets/html_templates/distributor-dashboard/distributor-dashboard.html', 
       controller: 'distributorDashboardCtrl', 
       authentication: {role: ["admin" || "user"]} 
      }) 

Hier ist, wo ich Benutzerrolle überprüfen

$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) { 


    $rootScope.previousState = fromState.name; 
    var auth = authService.authentication.isAuth; 
    if (toState.name !== "login" && toState.name !== "signup" && toState.name !== "resset-password" && toState.name !== "new-password" && toState.name !== "account-activation" && auth === false) { 
     event.preventDefault(); 
     $state.go('login', {}); 
    } 

    var role = authService.authentication.role; 

    if (toState.authentication !== undefined && toState.authentication.role !== role) { 
     event.preventDefault(); 
     $state.go('login', {}); 
    } 


} 

Thnx.

+0

in Ihrem zweiten Code, Sie zurückgeben 'Array', stellen Sie sicher, dass die gleiche von Service zurückgegeben wird, oder ändern Sie, ' Authentifizierung: {Rolle: ("admin"! = undefiniert? "admin": "user")} ' – Sravan

+0

thnx, aber das funktioniert nicht ... – Arter

+0

Fehler bekommen ?, nur' console.log (toState.authentication) 'und prüfen, was ist cming – Sravan

Antwort

0

Ich fand eine Lösung. Es ist notwendig, unter Authentifizierung eine beliebige Rolle zu setzen, die wir verwenden möchten.

authentication: {roles: ["admin", "user"]} 

und dann eine Prüfung vornehmen, wenn die Rolle in den erlaubten Rollen dort

ist
var userRole = authService.authentication.role; 

    if (toState.authentication !== undefined && toState.authentication.roles.indexOf(userRole) < 0) { 
     event.preventDefault(); 
     $state.go('login', {}); 
    } 

I verwenden indexOf für Scheck, Rollen in Array ist. Wenn jemand eine Frage hat, zögern Sie nicht zu fragen

+0

ja das ist, warum ich sagte, Sie speichern Array dort. – Sravan

+0

ja, thnx, du hilfst mir mit suggestion. Aber ich bin neu, und ich kann keine Abstimmung für jetzt – Arter

+0

kein Problem geben, habe ich keine Antwort hinzugefügt. Wie auch immer, du hast deine Lösung. – Sravan

Verwandte Themen