Я действительно надеюсь, что это мой последний вопрос об API Stormpath на какое-то время. Переход с C# и PHP на Node был довольно сложным.
Я пытаюсь реализовать социальный вход на странице регистрации. Предварительно созданный вариант размещает его только на странице входа.
Отображение страницы и добавление элементов в представление Jade достаточно просто, но мне нужно получить oauthStateToken. Теперь я посмотрел, как это делает код login.js:
var oauth = require('../oauth');
var oauthStateToken = oauth.common.resolveStateToken(req, res);
var formActionUri = (config.web.login.uri + (nextUri ? ('?next=' + nextUri) : ''));
var hasSocialProviders = _.some(config.web.social, function (socialProvider) {
return socialProvider.enabled;
});
extend(options, {
form: form,
formActionUri: formActionUri,
oauthStateToken: oauthStateToken,
hasSocialProviders: hasSocialProviders
});
Таким образом, по сути, он вызывает файлы присяги и выполняет код, теоретически я мог бы сделать что-то подобное на register.js - по существу (просто пример кода):
var oauth = require('../oauth');
var _ = require('lodash');
var hasSocialProviders = _.some(config.web.social, function (socialProvider) {
return socialProvider.enabled;
});
var oauthStateToken = '';
if (hasSocialProviders) {
oauthStateToken = oauth.common.resolveStateToken(req, res);
}
helpers.render(req, res, view, {
form: helpers.sanitizeFormData(req.body),
formModel: viewModel.form
oauthStateToken : oauthStateToken,
hasSocialProviders: hasSocialProviders
});
Но, конечно, я не хотел бы вмешиваться в файлы ядра и думал о создании функции промежуточного программного обеспечения, что-то вроде app.use('/register', callFunction, router);
, но у меня есть некоторые трудности с осмыслением того, как это будет работать. Кажется, я понимаю, как stormpath позволяет мне генерировать токен oauth, который я сохраняю в виде файла cookie с помощью JWT, но мне трудно объединить его в рабочий код без репликации большого количества кода, уже существующего в библиотеке.
Я даже могу заставить его работать с помощью REST API, но я хотел бы использовать его в библиотеке express-stormpath. Так что некоторые пояснения в контексте библиотеки express-stormpath также будут поучительны. ИЛИ я слишком много думаю об этом, должен ли я просто разветвить библиотеку, внести изменения в register.js и попытаться выполнить толчок вверх по течению?
Еще раз спасибо, ребята,