I have given this a bit more thought, and I have decided perhaps the best 
thing for me to do would be to set it up so when a user visits '/' they are 
either redirected to '/popular' if they are logged in and if they are not 
logged in they see '/'. How might I be able to set something like this up?

On Thursday, 31 July 2014 03:36:40 UTC+12, Eric Eslinger wrote:
>
> I have a similar thing, but instead of having an actual login state, I 
> loaded all my login controls into the base scope (the scope on the main, 
> top level element controller), and attached a modal-style high-zindex div 
> to the site header.
>
> That div has an ng-if on it. So if the user isn't logged in, or logs out, 
> I set user.apiToken to false, and the "click here to pick an OAUTH 
> provider" div appears.
>
> The benefit to this is, it keeps the user from having to re-navigate to 
> their preferred location after a successful login (otherwise it's 
> annoying). This way users coming in on a deep link (say they got an email 
> with one) land on the right place without having to deal with fancy state 
> memory in the login route.
>
> If you really want to do those sorts of things, I'd consider putting the 
> login test inside a resolve block on your state, and then catch 
> $stateChangeErrors to decide if they derive from being not-authorized (403) 
> or not-authenticated (401). 403 (and 404 while we're here) errors tend to 
> be permanent, and probably *do* need either a redirect or at least a toast, 
> but 401s are temporary.
>
> Finally, I prefer $state.go 'app.login' over $location.path, as it 
> continues to exist within the ui-router's state controller rather than 
> manually setting a url.
>
> e
>
>
>
>
> On Tue, Jul 29, 2014 at 10:58 PM, Damien Metcalf <[email protected] 
> <javascript:>> wrote:
>
>> If user visits the base url or '/' and they are *not logged in* to the 
>> application I would like them to see the *'welcome' state*. However *if 
>> a user is logged in* I would like them to see the *'home' state*. So a 
>> user would be able to browse around the site but when ever they went to '/' 
>> they will only see the state they have permission to see.
>>
>> I am using the angular-fullstack generator with express, sockets & 
>> MongoDB and Ui-Router
>>
>> Here is how I currently have things:
>>
>> 'use strict';
>>
>>
>> angular.module('cbuiRouterApp', [
>>   'ngCookies',
>>   'ngResource',
>>   'ngSanitize',
>>   'ui.bootstrap',
>>   'btford.socket-io',
>>   'ui.router',
>> ])
>>
>>   .config(function ($stateProvider, $urlRouterProvider, $locationProvider
>> , $httpProvider) {
>>     $urlRouterProvider
>>       .otherwise('/');
>>
>>     $stateProvider
>>       .state('main', {
>>         url: '/',
>>         templateUrl: 'app/main/main.html',
>>         controller: 'MainCtrl',
>>         title: 'Main',
>>         mainClass: 'main'
>>       })
>>       .state('welcome', {
>>         url: '/',
>>         templateUrl: 'app/welcome/welcome.html',
>>         controller: 'WelcomeCtrl',
>>         title: 'Welcome',
>>         mainClass: 'welcome'
>>       })
>>            .state('login', {
>>         url: '/login',
>>         templateUrl: 'app/account/login/login.html',
>>         controller: 'LoginCtrl'
>>             });
>>
>>
>>     $locationProvider.html5Mode(true);
>>     $httpProvider.interceptors.push('authInterceptor');
>>   })
>>
>>
>>   .factory('authInterceptor', function ($rootScope, $q, $cookieStore, 
>> $location) {
>>     return {
>>       // Add authorization token to headers
>>       request: function (config) {
>>         config.headers = config.headers || {};
>>         if ($cookieStore.get('token')) {
>>           config.headers.Authorization = 'Bearer ' + $cookieStore.get(
>> 'token');
>>         }
>>         return config;
>>       },
>>
>>
>>       // Intercept 401s and redirect you to login
>>       responseError: function(response) {
>>         if(response.status === 401) {
>>           $location.path('/login');
>>           // remove any stale tokens
>>           $cookieStore.remove('token');
>>           return $q.reject(response);
>>         }
>>         else {
>>           return $q.reject(response);
>>         }
>>       }
>>     };
>>   })
>>
>>
>>   .run(function ($rootScope, $location, Auth) {
>>     // Redirect to login if route requires auth and you're not logged in
>>     $rootScope.$on('$stateChangeStart', function (event, next) {
>>       if (next.authenticate && !Auth.isLoggedIn()) {
>>         $location.path('/login');
>>       }
>>     });
>>   });
>>
>>
>>
>>  -- 
>> You received this message because you are subscribed to the Google Groups 
>> "AngularJS" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> Visit this group at http://groups.google.com/group/angular.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to