2016-05-03 2 views
4

Я хотел бы отправить запрос на создание пользователя в группу, но не знаю, как это сделать в express-stormpath.Создайте пользователя Stormpath и назначьте группу одним вызовом

Сейчас я использую до и после регистрации обработчиков, чтобы получить поле, удалить его из FormData, перейти к Рез, затем установите группу на пост регистрации обработчика:

preRegistrationHandler: function (formData, req, res, next) { 
    res.locals.describes = formData.describes; 
    delete formData.describes; 

    next(); 
}, 

postRegistrationHandler: function (account, req, res, next) { 
    var seekerHref = config.SEEKERS_HREF; 
    var employerHref = config.EMPLOYERS_HREF; 

    if (res.locals.describes === "seeker") { 
     //Adding to seeker group 
     account.addToGroup(seekerHref, function(err, membership) { 
      console.log(membership); 
     }); 
    } else if (res.locals.describes === "employers") { 
     //Adding to the employer group 
     account.addToGroup(employerHref, function(err, membership) { 
      console.log(membership); 
     }); 
    } 
    delete res.locals.describes; 

    next(); 
} 

Это Безразлично» Похоже, это хорошая идея. Что произойдет, если соединение станет недоступным и сбой группового назначения? Пользователь может застрять в состоянии неопределенности без группы.

ответ

8

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

экспресс-stormpath сохранит поле формы для пользовательских данных автоматически, если определить его в form configuration:

web: { 
    register: { 
    form: { 
     fields: { 
     describes: { 
      enabled: true, 
      label: 'Position', 
      name: 'describes', 
      placeholder: 'e.g. employer, seeker', 
      required: true, 
      type: 'text' 
     } 
     } 
    } 
    } 
} 

Затем в обработчике после регистрации, получения значения пользовательских данных и использовать его для назначения Группа:

postRegistrationHandler: function (account, req, res, next) { 
    var seekerHref = config.SEEKERS_HREF; 
    var employerHref = config.EMPLOYERS_HREF; 

    account.getCustomData(function(err, customData) { 
     if (customData.describes === "seeker") { 
      //Adding to seeker group 
      account.addToGroup(seekerHref, function(err, membership) { 
       console.log(membership); 
      }); 
     } else if (customData.describes === "employers") { 
      //Adding to the employer group 
      account.addToGroup(employerHref, function(err, membership) { 
       console.log(membership); 
      }); 
     } 

     customData.remove('describes'); 
     customData.save(function(err) { 
      if (err) throw err; 
     }); 
    }); 

    next(); 
} 

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

+0

Я думал об этом, и теперь я это сделаю. Я полагаю, что я также могу проверить обработчик после входа в систему, и если у пользователя нет группы в этот момент, я могу установить его снова, и если это не удастся, запишите его и выйдите из системы и перейдите на страницу, чтобы связаться с нами. Спасибо Нейту. –

+5

Также просто понял, что вы работаете на Stormpath - это отличные парни программного обеспечения, вы взяли то, что мне не нравится, и делали это когда-либо так красиво. Возможно, я попрошу, чтобы в будущем мы могли назначить группу при регистрации, как при создании учетной записи в консоли Stormpath. –

+0

Мы <3 отзывов клиентов @ Stormpath. Если вы хотите предложить идеи, у Stormpath есть портал для улучшения функций: ideas.stormpath.com –

Смежные вопросы