thingsboard-developers

Details

diff --git a/ui/src/app/api/user.service.js b/ui/src/app/api/user.service.js
index 64075b8..71c04ce 100644
--- a/ui/src/app/api/user.service.js
+++ b/ui/src/app/api/user.service.js
@@ -27,6 +27,7 @@ function UserService($http, $q, $rootScope, adminService, dashboardService, time
         currentUserDetails = null,
         lastPublicDashboardId = null,
         allowedDashboardIds = [],
+        redirectParams = null,
         userTokenAccessEnabled = false,
         userLoaded = false;
 
@@ -56,6 +57,7 @@ function UserService($http, $q, $rootScope, adminService, dashboardService, time
         refreshTokenPending: refreshTokenPending,
         updateAuthorizationHeader: updateAuthorizationHeader,
         setAuthorizationRequestHeader: setAuthorizationRequestHeader,
+        setRedirectParams: setRedirectParams,
         gotoDefaultPlace: gotoDefaultPlace,
         forceDefaultPlace: forceDefaultPlace,
         updateLastPublicDashboardId: updateLastPublicDashboardId,
@@ -110,34 +112,24 @@ function UserService($http, $q, $rootScope, adminService, dashboardService, time
         lastPublicDashboardId = null;
         userTokenAccessEnabled = false;
         allowedDashboardIds = [];
-        var deferred = $q.defer();
         if (!jwtToken) {
             clearTokenData();
             if (notify) {
                 $rootScope.$broadcast('unauthenticated', doLogout);
-                deferred.reject();
             }
-            deferred.resolve();
         } else {
             updateAndValidateToken(jwtToken, 'jwt_token', true);
             updateAndValidateToken(refreshToken, 'refresh_token', true);
             if (notify) {
                 loadUser(false).then(function success() {
                     $rootScope.$broadcast('authenticated');
-                    deferred.resolve();
                 }, function fail() {
                     $rootScope.$broadcast('unauthenticated');
-                    deferred.reject();
                 });
             } else {
-                loadUser(false).then(function success() {
-                    deferred.resolve();
-                }, function fail() {
-                    deferred.reject();
-                });
+                loadUser(false);
             }
         }
-        return deferred.promise;
     }
 
     function isAuthenticated() {
@@ -551,9 +543,15 @@ function UserService($http, $q, $rootScope, adminService, dashboardService, time
         return false;
     }
 
+    function setRedirectParams(params) {
+        redirectParams = params;
+    }
+
     function gotoDefaultPlace(params) {
         if (currentUser && isAuthenticated()) {
-            var place = 'home.links';
+            var place = redirectParams ? redirectParams.toName : 'home.links';
+            params = redirectParams ? redirectParams.params : params;
+            redirectParams = null;
             if (currentUser.authority === 'TENANT_ADMIN' || currentUser.authority === 'CUSTOMER_USER') {
                 if (userHasDefaultDashboard()) {
                     place = $rootScope.forceFullscreen ? 'dashboard' : 'home.dashboards.dashboard';
diff --git a/ui/src/app/app.run.js b/ui/src/app/app.run.js
index 8a20945..8064ae5 100644
--- a/ui/src/app/app.run.js
+++ b/ui/src/app/app.run.js
@@ -127,7 +127,8 @@ export default function AppRun($rootScope, $window, $injector, $location, $log, 
                         var redirectParams = {};
                         redirectParams.toName = to.name;
                         redirectParams.params = params;
-                        $state.go('login', redirectParams);
+                        userService.setRedirectParams(redirectParams);
+                        $state.go('login', params);
                     }
                 }
             } else {
diff --git a/ui/src/app/login/login.controller.js b/ui/src/app/login/login.controller.js
index 73ad0fb..ffda552 100644
--- a/ui/src/app/login/login.controller.js
+++ b/ui/src/app/login/login.controller.js
@@ -20,7 +20,7 @@ import logoSvg from '../../svg/logo_title_white.svg';
 /* eslint-enable import/no-unresolved, import/default */
 
 /*@ngInject*/
-export default function LoginController(toast, loginService, userService, $state, $stateParams, $rootScope) {
+export default function LoginController(toast, loginService, userService) {
     var vm = this;
 
     vm.logoSvg = logoSvg;
@@ -30,22 +30,14 @@ export default function LoginController(toast, loginService, userService, $state
         password: ''
     };
 
-    vm.params = $stateParams;
+   // vm.params = $stateParams;
     vm.login = login;
 
     function doLogin() {
         loginService.login(vm.user).then(function success(response) {
             var token = response.data.token;
             var refreshToken = response.data.refreshToken;
-            userService.setUserFromJwtToken(token, refreshToken, true).then(function() {
-                if (vm.params.toName && vm.params.toName !== 'login') {
-                    if (vm.params.toName == 'home.dashboards.dashboard' && $rootScope.forceFullscreen) {
-                        $state.go('dashboard', vm.params.params)
-                    } else {
-                        $state.go(vm.params.toName, vm.params.params)
-                    }
-                }
-            });
+            userService.setUserFromJwtToken(token, refreshToken, true);
         }, function fail(/*response*/) {
             /*if (response && response.data && response.data.message) {
                 toast.showError(response.data.message);