Uaktualniam do [email protected]
i próbuję ustalić, jaki jest najlepszy sposób przekierowania użytkownika do innego stanu, jeśli nie ma on wymaganych uprawnień.Przekierowanie UI-Router 1.0 oparte na roli użytkownika
To jest to, co mam:
.state('company_dashboard', {
url: '/dashboard',
templateUrl: 'dashboard.html',
controller: 'CompanyDashboardCtrl',
resolve: {
user: function(UserService) {
return UserService.getActiveUser();
},
company: function(UserService) {
return CompanyService.getActiveCompany();
},
permissions: function(CompanyService, user, company){
return CompanyService.getUserPermissions(company, user);
}
},
onEnter: function($state, permissions) {
if (permissions.canAccessDashboard === false)
return $state.go('company_landing_page');
}
})
Powyższy przykład działa, ale rejestruje się następujący błąd: TransitionRejection(type: 2, message: The transition has been superseded by a different transition, detail: Transition#1(''{} -> 'company_landing_page'{}))
który sprawia, że myślę, że powinien być lepszy sposób.
Pytanie boczne, czy dobrą praktyką jest sprawdzanie uprawnień podczas resolve
?
UPDATE:
Zmiana $state.go()
do $state.target()
pomógł mi pozbyć się błędów konsoli. This comment pomógł. Chociaż pytanie jest ważne, czy robię to we właściwym miejscu?
Kiedyś sprawdzałem pozwolenie na szablonie zbudowanym przez wiosnę lub ramkę backendu, myślę, że sprawdzanie uprawnień na interfejsie nie jest dobre, ponieważ każdy może zobaczyć kod. –