модальное всплывающее окно для входа в систему, чтобы перейти на скрытую страницу с состоянием разрешения

Требование: когда я набираю URL-адрес какой-либо скрытой страницы, страница не должна отображаться в данный момент, сначала должно появиться одно модальное окно для входа в систему, если вход выполнен успешно, скрытая страница должна отображаться на экране. .

Моя идея: использовать разрешение в состоянии, так как я использую ui-router для своего приложения.

Но я не понимаю, как я могу открыть модальное окно при запросе какой-либо страницы и одновременно как я могу предотвратить это.

.state('deviceManagement', {
        url: "/deviceManagement",
        templateUrl: "partials/settings/deviceManagement.html",
        controller: "deviceManagementCtrl",
        resolve: {
            check: function(engineerPageFactory){
                engineerPageFactory.loginEngineer();
            }
        }
    })

Моя идея заключается в том, что я открою модальное окно на фабрике, которую я вызвал из решения.

app.factory('engineerModalFactory', function($modal){
    return {
        loginEngineer: function($modal){
            $modal.open({
                 templateUrl: "engineerModal.html"
            })
        }
    }
});

Что-то вроде этого. Пожалуйста, направьте меня правильно. Как я могу сделать это возможным. Заранее спасибо!


person PiyaModi    schedule 02.08.2016    source источник
comment
Я думаю, вы можете добиться этого, не используя разрешение, чтобы узнать подробности, проверьте мой ответ.   -  person The Mechanic    schedule 02.08.2016
comment
Я могу рассказать вам, что я сделал, чтобы справиться с этой самой ситуацией. Когда пользователь входит в систему, определяются некоторые $rootScope данные (например, данные пользователя). Контроллер скрытой страницы проверяет, определены ли эти переменные, и, если нет, устанавливает страницу пересылки в $rootScope, направляет на index.html, который также проверяет параметры и, при необходимости, представляет диалог входа в систему и, при успешном входе в систему , маршрут к скрытой странице. Не уверен, что это лучший и самый элегантный подход, но он работает для меня.   -  person FDavidov    schedule 02.08.2016
comment
Спасибо за ответ вам обоим! @TheMechanic, не могли бы вы рассказать мне, как я могу добиться этого с решимостью или без нее?   -  person PiyaModi    schedule 02.08.2016


Ответы (3)


Для этого вам не нужно решать

создайте службу checkUserService, которая будет возвращать обещание.

в то время как ваш контроллер загружает вызов метода checkUserService, чтобы определить, вошел ли пользователь в систему или нет?

В обещании вы получите ответ true или false.

если пользователь не вошел в систему, перенаправьте его в другое состояние, например:

$state.go('login')

и в loginController вы можете открыть модель

person The Mechanic    schedule 02.08.2016
comment
Я не хочу проверять, я хочу открывать модальный режим для входа в систему всякий раз, когда вызывается скрытие страницы. - person PiyaModi; 02.08.2016

Вы должны взять переменную toogle внутри модального окна и открыть страницу в истинном и ложном состоянии.

person Ankur r    schedule 02.08.2016

Просто вызовите динамический URL-адрес шаблона с тем же состоянием.

 $stateProvider.state('deviceManagement', {
   templateUrl: function (MyAuthService){

      MyAuthService
         .checkLogin()
         .then(function(loggedInFlag){
            if(loggedInFlag ===true){
               return 'partials/settings/deviceManagement.html';
            }
            else {
               return 'partials/auth/loginModal.html';
            }

         })
   }
 })

Для получения дополнительной информации проверьте этот ответ.

person Nishchit    schedule 02.08.2016