3

Meteor は、ユーザーがアカウントを作成するか、これらのサードパーティ認証プロバイダーで再度ログインできるようにする一連のloginWithExternalService()メソッド ( など) を提供します。loginWithTwitter()

しかし、両方のアクションを区別する方法はありますか? つまり、必ずしも同じアクションを介してサインアップさせずに、Twitter でサインインできるようにしますか?

実際のユース ケースは、サインアップが制限されていて、サインアップ用の非公開 URL があるが、サインイン用の公開ページがあるサイトです。初めてサインインするだけでアカウントを作成できないようにする方法を探しています。

4

1 に答える 1

1

おそらくAccounts.onCreateUser(サーバー側)にフックできます

このようなものが役立つかもしれません:

サーバーサイドjs

Accounts.onCreateUser(function(options, user) {

  //Check if this user can be created, if not throw an error
  var canCreate = false

  if(!canCreate) 
      throw new Meteor.Error(403, 'You cant sign up', "Sorry you can only sign in but not sign up");

  //Create the user like normal if we can.
  if (options.profile)
    user.profile = options.profile;
  return user;
});

エラーをスローすると、メソッドが戻ってアカウントを作成できなくなります。誰かがアカウントを作成していて、まだアカウントを持っていない場合にのみ実行されます (外部サービス プロバイダーも)。

クライアントではエラーを処理できますが、accounts-uiパッケージでは「内部サーバー エラー」メッセージが表示されます。おそらくこれを「管理者になる必要がある」などにカスタマイズできます

于 2013-10-27T10:17:19.727 に答える