Проверьте учетные данные для входа из локального хранилища Sencha - PullRequest
1 голос
/ 22 декабря 2011

У меня есть форма на странице входа с текстовыми полями для имени пользователя и пароля. Теперь, когда пользователь регистрирует учетную запись, я хочу добавить его в модель User. И когда он входит в систему, мне нужно проверить, правильна ли комбинация имени пользователя и пароля, чтобы разрешить вход в приложение Sencha.

Я понятия не имею, как проверить комбо логин / пароль. Кто-нибудь помогите !!! Вот мой код

Модель:

App.models.Users = Ext.regModel('Expense',{

fields : [
    { name : 'id', type : 'integer'},
    { name : 'email', type : 'string'},
    { name : 'pass', type : 'string'}
],

validations : [
    { name : 'email', type : 'presence', message : 'cannot leave field blank'},
    { name : 'pass', type : 'presence', message : 'cannot leave field blank'}
],

proxy : {
    type : 'localstorage',
    id : 'user-creds'
}
});

Магазин:

App.stores.User = new Ext.data.Store ({
  model : 'Users',
  autoLoad : true,
  autoSave : true
});

Форма является базовой, с текстовым полем xtype для электронной почты и паролем для пароля.

Как мне проверить, что данные, введенные в форму, совпадают с данными, хранящимися в местном хранилище ???

1 Ответ

4 голосов
/ 22 декабря 2011

Когда вы нажимаете кнопку для входа, вам нужно попытаться найти адрес электронной почты, введенный в магазине.

App.stores.User.findRecord('email', < the value entered on the form >) ;

Этот метод возвращает запись, если найдено совпадение. Получив запись, вы можете проверить, что пароль в записи совпадает с паролем, введенным в форме.

См. Магазин в документации Sencha Touch

Обновление:

Предполагая, что вы следуете шаблону MVC ...

Вам нужно:

  1. Текстовые поля в FormPanel
  2. Контроллер

По вашему мнению, кнопка входа в систему отправляется на контроллер:

    this.loginButton = new Ext.Button({
        text: 'Login',
        ui: 'action',
        handler: function() {
            Ext.dispatch({
                controller: App.controllers.loginController,
                action: 'login'
            });
        },
        scope: this
    });

В вашем контроллере код извлекает значения формы:

'login': function (options) {

    var formDetails = App.views.loginView.getRecord();

    var store = Ext.StoreMgr.get('users');
    var record = store.findRecord('username', formDetails.get('username'), 0, false, true);

    if (record != null) {

      if (formDetails.get('password') == record.get('password')) {
        // valid login
      } else {
        // wrong password
      }          

    } else {
      // username doesn't exist
    }

 }

Надеюсь, это поможет.

...