防止Meteor帐户创建中的默认重复电子邮件拒绝

时间:2015-07-10 13:31:12

标签: javascript meteor accounts

我正在构建一个有两种类型用户的应用程序。专业用户及其客户。帐户类型完全不同,没有重叠。因此,注册为Pro的电子邮件仍可用于注册为客户端,如果Pro用户尝试使用客户端表单登录,则其帐户将不存在。

问题: Meteor自动防止在创建用户帐户时使用重复的电子邮件。我的想法是使用自定义验证来允许行为,并基本上创建两组不同的用户。以下是我为“专业”用户尝试验证的示例。

Accounts.onCreateUser(function(options, user) {
var email = user.email;
   if (Meteor.users.find({emails: email, isPro : true}).count() > 0) {
        throw new Meteor.Error(403, "This email address is already registered");
   }
   user.isPro = true;
   return user;    

});

但是流星仍然使用其默认的重复电子邮件拒绝。关于如何覆盖这种行为的任何想法,还是有更好的方法来创建两个不同的用户组?

1 个答案:

答案 0 :(得分:0)

您可以在mongo shell中执行此操作

public void centerTitleAndSubtitle(Toolbar toolbar){
    // Save current title and subtitle
    final CharSequence originalTitle = toolbar.getTitle();
    final CharSequence originalSubtitle = toolbar.getSubtitle();

    // Temporarily modify title and subtitle to help detecting each
    toolbar.setTitle("title");
    toolbar.setSubtitle("subtitle");

    for(int i = 0; i < toolbar.getChildCount(); i++){
        View view = toolbar.getChildAt(i);

        if(view instanceof TextView){
            TextView textView = (TextView) view;


            if(textView.getText().equals("title")){
                // Customize title's TextView
                Toolbar.LayoutParams params = new Toolbar.LayoutParams(Toolbar.LayoutParams.WRAP_CONTENT, Toolbar.LayoutParams.MATCH_PARENT);
                params.gravity = Gravity.CENTER_HORIZONTAL;
                textView.setLayoutParams(params);

            } else if(textView.getText().equals("subtitle")){
                // Customize subtitle's TextView
                Toolbar.LayoutParams params = new Toolbar.LayoutParams(Toolbar.LayoutParams.WRAP_CONTENT, Toolbar.LayoutParams.MATCH_PARENT);
                params.gravity = Gravity.CENTER_HORIZONTAL;
                textView.setLayoutParams(params);
            }
        }

        // Restore title and subtitle
        toolbar.setTitle(originalTitle);
        toolbar.setSubtitle(originalSubtitle);
    }
}

这样做可能不是最好的主意,可能会产生意想不到的后果。我也认为评论中讨论的解决方案会更好。