I'm writing a single page application in Angular, specifically angular.dart, but I'm assuming this question still applies to AngularJS.
Take for example the following routes:
/login - Expects nobody to be logged in. If someone is authenticated but not registered, redirect to "register" route, if they are registered, redirect to the "home" route.
/register - Expects an authenticated user who hasn't finished the registration process. If not authenticated, redirect to login. If is authenticated, redirect to home.
/home - Expects an authenticated and registered user. If not authenticated, redirect to "login" route, if not registered, redirect to "register" route.
I've done quite a bit of searching but cannot find a built-in or idiomatic way to check to make sure that certain preconditions are met before loading the controller associated with a particular route, and to redirect appropriately when these preconditions are not met.
Any help would be greatly appreciated!
Angular.Dart and Angular.JS routing frameworks are very/fundamentally different. Angular.Dart is using a third party routing framework (https://github.com/dart-lang/route/tree/experimental_hierarchical) and only implements angular specific features like
ng-view
and ways to bind routes to templates viaViewFactory
.So your question really falls into the
route_hierarchical
package domain. Currently you can veto users attempt to navigate away from a route, but I guess what you want the ability to veto user entering a route depending on if the user is logged in or not. Unfortunately this is not yet supported, but is planned.What you could try in the meantime is creating a custom viewFactory wrapper.
}
DISCLAMER: this is just an idea... might totally not work.