4

グループでユーザー作成リクエストを送信したいのですが、express-stormpath でそれを行う方法がわかりません。

現在、登録前および登録後のハンドラーを使用してフィールドを取得し、それを formData から削除し、res に渡し、登録後のハンドラーでグループを設定します。

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();
}

これは良い考えではないようです。接続が利用できなくなり、グループの割り当てが失敗した場合はどうなりますか? ユーザーは、グループがない状態で立ち往生している可能性があります。

4

1 に答える 1

8

これを行う別の方法は、値をアカウントのカスタム データ オブジェクトに保存し、それを使用して後でグループを作成することです。

フォーム構成で定義すると、express-stormpath はフォーム フィールドをカスタム データに自動的に保存します。

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();
}

このようにして、値が保存されることが保証されます。登録後ハンドラーが何らかの理由で失敗した場合、アカウントのカスタム データ リソースを調べることで、ユーザーが属するグループを確認できます。

于 2016-05-03T05:16:23.217 に答える