Рубрики
Без рубрики

Угловой Meteor & Ionic Framework Основные счета демонстрационные

В этом руководстве показана интеграция углового метера с ионной структурой для создания учетных записей пользователей и вход в систему с ними. Это может быть началом вашего полного стека, кроссплатформенного мобильного решения

Автор оригинала: Aaron Saunders.

В этом руководстве показана интеграция угловой метеор с Ионные рамки Для создания учетных записей пользователей и войти с ними. Это может быть началом вашего полного стека, кроссплатформенного мобильного решения

Создать пустой ионный проект

ionic start meteorIonic2 blank

Теперь давайте изменим index.html Чтобы поддержать мнения, которые мы будем создавать. Заменить весь Тело Тег с кодом ниже. Это где шаблоны, идентифицированные в UI-роутер будет отображаться на основе указанного маршрута.


  

Создать страницу входа в систему/создать учетную запись

Мы собираемся сохранить этот простой с базовым экраном входа в систему и базовый экран профиля. Сосредоточенность здесь действительно на интеграции с метером и менее на спецификах ионных и HTML шаблонов в Angularjs.

Создайте новый каталог под названием взгляды

Создайте новый файл в Виды каталог с именем login.html ; Добавьте следующий код


  
    
      
Enter User Name and Password to Login to Application

Еще раз для простоты мы создаем и учетную запись используя именно имя пользователя и пароль. Таким образом, мы можем использовать только одну HTML-страницу и один контроллер для поддержки усилий.

Мы создали $ Scope Объект для удержания учетных данных и включенных функций, которые будут называться, когда пользователь нажимает на кнопку входа или создания учетной записи. Дологификация и DocreateAccountaction Отказ Вы увидите код для этих функций в Lancktrl который будет создан в предстоящем разделе.

Создать страницу информации о пользователе

Страница «Домашняя/пользовательская страница» будет видна, когда пользователь вошел только в систему. Он покажет информацию о пользователе и имеет кнопку выхода для пользователя для завершения текущего сеанса



  
  
    
  

  
    
      
You Are Logged Into the Application

Мы создали $ Scope Объект для удержания учетных данных и включенных функций, которые будут называться, когда пользователь нажимает на кнопку «Выход», домутакция . Вы увидите код для этой функции в Homectrl который будет создан в предстоящем разделе.

Создать базовую маршрутизацию

Внутри app.js Файл Добавьте блок конфигурации для маршрутизации. У нас здесь два состояния, один для страницы входа в систему и один для домашней страницы. На данный момент нет аутентификации, просто определенные маршруты для доступа.

  .config(function($stateProvider, $urlRouterProvider) {

      // For any unmatched url, send to /login
      $urlRouterProvider.otherwise("/login");

      $stateProvider
        .state('login', {
          url: '/login',
          // loaded into ui-view of parent's template
          templateUrl: 'views/login.html',
          controller : 'LoginCtrl'
        })
        .state('home', {
          url: '/home',
          // loaded into ui-view of parent's template
          templateUrl: 'home.html',
          controller: 'HomeCtrl'
        })
    });

Создайте контроллеры

Мы создадим новый файл под названием Controllers.js В файле добавьте код для двух контроллеров, указанных выше. Чтобы проверить поток приложений из событий Click, мы сделаем кнопки вызывать соответствующие функции и предупредить пользователям по поведению.

angular
  .module('starter')
  .controller('LoginCtrl', LoginCtrl)
  .controller('HomeCtrl', HomeCtrl);

function LoginCtrl($scope, $state) {

  $scope.doLoginAction = function($scope) {
    alert("in doLoginAction");
    setTimeout(function() {
      $state.go('home');
    }, 1000);
  }

  $scope.doCreateAccountAction = function() {
    alert("in doCreateAccountAction");
    setTimeout(function() {
      $state.go('home');
    }, 1000);
  }
}

function HomeCtrl($scope, $state) {
  $scope.doLogoutAction = function() {
    alert("in doLogoutAction");
    setTimeout(function() {
      $state.go('login');
    }, 1000);
  }

}

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

Теперь давайте изменим index.html Для поддержки контроллеров мы только что добавили. Включите новый тег скрипта, чтобы добавить контроллеры в приложение.

  
  
   // <== ADD THIS LINE

В этот момент приложение должно работать и показать поток между состояниями. Следующие шаги начнут добавлять пользовательские функции Meteor к приложению.

Создайте метеорную часть приложения

Добавьте необходимые пакеты Meteor Bower

bower install meteor-client-side angular-meteor accounts-base-client-side accounts-password-client-side --save-dev

Сделайте изменения в index.html Чтобы включить файлы библиотеки JavaScript из углового метера и поддерживать пакет учетных записей для создания учетных записей пользователей и входа в приложение

  
  
  
  
  
  

Создайте Meteor Server

Создайте каталог сервера Meteor, запустив команду в корневом каталоге проекта

meteor create server
cd server
del server.*

Изменения в клиентском приложении

Добавьте Директиву на app.js.

angular.module('starter', ['ionic','angular-meteor'])

Теперь давайте введем $ METEOR Объект в контроллеры, добавить в начало Lancktrl функция

  LoginCtrl.$inject = ['$scope', '$state', '$meteor'];

Затем добавьте в начало Homectrl функция

  HomeCtrl.$inject = ['$scope', '$state', '$meteor'];

Загрузите все боковые пакеты Meteor клиента

Перейдите в каталог сервера и запустите следующую команду

meteor add accounts-base accounts-password

Теперь поддерживаемые пакеты добавляются на ваш сервер, вы можете перезагрузить свой сервер, запустив команду METEOR

meteor

Пересмотр маршрутизатора для проверки аутентификации

Что нам нужно будет сделать, это проверить действительный объект пользователя при попытке доступа к указанному маршруту. Мы можем использовать маршрутизаторы решить Функциональность здесь, чтобы проверить, существует ли пользователь. Если пользователь не существует, A StateChangeError Обращается, и мы можем перенаправлять на состояние входа в систему.

Добавьте проверку пользователя на маршруте, используя Тревоектор Метод от Угловой метеор API. Изменить Главная состояние, чтобы выглядеть так

.state('home', {
  url: '/home',
  // loaded into ui-view of parent's template
  templateUrl: 'views/home.html',
  controller: 'HomeCtrl',
  resolve: {
    "currentUser": function($meteor) {
      return $meteor.requireUser();
    }
  }
})

Когда этот код работает, если нет вошедших в систему пользователей, $ meteor.requireUser () Вызов отклонит обещание и StateChangeError будет брошен. Мы можем поймать ошибку, добавив следующий код в функцию запуска в app.js Отказ

Сначала обновите функцию, чтобы включить $ rootscope

.run(function($ionicPlatform, $rootScope) {

Затем добавьте слушателя на $ StatechangeError.

// checking for errors in state change
$rootScope.$on('$stateChangeError',
  function(event, toState, toParams, fromState, fromParams, error) {
    // We can catch when the $requireUser promise is rejected and redirect to login state
    if (error === 'AUTH_REQUIRED') {
      event.preventDefault();
      console.log("no user");
      $state.go('login');
    }
  });

Это должно заставить пользователю Вход состояние, когда нет пользователя; Теперь давайте использовать Meteor и пакет счетов, чтобы добавить пользователя. Meteor Документация по созданию пользователя

Исходный код, чтобы добавить в DocreateAccountaction В Lancktrl позвонит функцию Meteor, чтобы создать пользователь, а затем перенаправлять обратно к Главная государственный. Если это все разработано нормально, следует присутствовать пользователю, а домашнее государство должно быть оказано.

  $scope.doCreateAccountAction = function() {
    alert("in doCreateAccountAction");
    $meteor.createUser({
      username: $scope.credentials.username,
      email: $scope.credentials.username,
      password: $scope.credentials.password,
      profile: {
        createdOn: new Date()
      }
    }).then(function(_response) {
      console.log('doCreateAccountAction success');
      alert("user created: " + $scope.credentials.username );
      $state.go('home');
    }, function(_error) {
      console.log('Login error - ', _error);
      alert("Error: " + _error.reason);
    });
    return false;
  }

Теперь, чтобы войти в систему созданного пользователя, давайте добавим следующий исходный код для Дологификация В Lancktrl позвонит функцию Meteor, чтобы войти пользователю, а затем перенаправить обратно в Главная государственный. Если это все разработано нормально, следует присутствовать пользователю, а домашнее государство должно быть оказано.

Meteor Документация для регистрации пользователя с паролем

$scope.doLoginAction = function() {
  $meteor.loginWithPassword($scope.credentials.username, $scope.credentials.password)
    .then(function() {
      console.log('Login success ');
      alert("logged in: " + $scope.credentials.username);
      $state.go('home');
    }, function(_error) {
      console.log('Login error - ', _error);
      alert("Error: " + _error.reason);
    });
  return false;
}

Давайте обновим home.html Чтобы показать информацию о пользователе, создаваемой или вошедшей в систему



  
    
      
    
  
  
    
      

You Are Logged Into the Application:

 {{currentUser | json}} 

Теперь, когда у нас есть Meteor Integrated, и мы можем войти в систему пользователей, давайте закончим функцию выхода из системы для Homectrl Отказ

Meteor Документация по выходу

Вот код, чтобы добавить в Homectrl В файле Контроллеры

  $scope.doLogoutAction = function() {
    alert("in doLogoutAction");
    $meteor.logout().then(function(_response) {
      $state.go('login');
    });
  };