2016-05-22 16 views
2

私はそれは私がこれまでやってされてきた方法です、私のユーザーのスキーマとパスワードの検証を行う方法を見つけ出すのに苦労しています:流星のパスワード検証

これはスキーマです:

Schema = {}; 
Schema.UserProfile = new SimpleSchema({ 
    //LOTS OF FIELDS WORKING FINE 
}); 

Schema.User = new SimpleSchema({ 
    username: { 
     type: String, 
     optional: true 
    }, 
    emails: { 
     type: Array, 
    }, 
    "emails.$": { 
     type: Object 
    }, 
    "emails.$.address": { 
     type: String, 
     regEx: SimpleSchema.RegEx.Email 
    }, 
    "emails.$.verified": { 
     type: Boolean 
    }, 
    createdAt: { 
     type: Date 
    }, 
    profile: { 
     type: Schema.UserProfile, 
     label: "Perfil", 
     optional: false 
    }, 
    services: { 
     type: Object, 
     blackbox: true 
    }, 
    "services.$": { 
     type: Object, 
     blackbox: true 
    }, 
    "services.$.password": { // IS IT RIGHT? 
     type: String, 
     label: "Senha", 
     min: 8 
    }, 
    roles: { 
     type: String, 
     optional: true 
    } 
}); 

Meteor.users.attachSchema(Schema.User); 

そして、これは私が節約している方法です:

let company = {}; 
company = { 
    email: $('#email').val(), 
    password: $('#password').val(), 
    roles: 'company', 
    profile: companyProfile 
} 

Meteor.call('saveUser', company, function(error, result) { 
    if (error) { 
    console.log(error);  
    } 
} 

Meteor.methods({ 
    saveUser: function(data) { 
    return Accounts.createUser(data); 
    } 
}); 

私はまだ初心者ですから、ここで何かを迷惑にしている可能性があります。ユーザーを作成しようとすると、いずれかのフィールドで問題が発生した場合、検証によって予期したとおりにエラーがスローされます。しかし、私がパスワードを紛失した場合にはエラーはスローされません。ここで間違っているアイデアはありますか?

-------------------------------更新-------------- --------------------

ありがとう@aedmあなたの答えです。私は本当に私は、パスワードとパスワードの確認を検証するために、このようなものを持っていることがしたい:

password: { 
    type: String, 
    label: "Senha", 
     min: 8 
    }, 
    password_confirmation: { 
    type: String, 
    label: "Confirmação de Senha", 
    min: 8, 
    custom: function() { 
     if (this.value !== this.field('password').value) { 
     return "passwordMismatch"; 
     } 
    } 
    }, 

私はそれが、その後は不可能だと思う、それはありますか?

答えて

0

Meteorはパスワードのbcryptハッシュのみを格納しますが、常に8文字を超えます。

代わりに、パスワードの基準が満たされていないと、saveUserメソッドでエラーが発生するはずです。

Meteor.methods({ 
    saveUser: function(data) { 
    if (data.password.length < 8) throw new Meteor.Error("Password too short"); 
    return Accounts.createUser(data); 
    } 
}); 

私は、ユーザーのスキーマを定義する回避しようと思い、流星は1なしでかなりよくそれを処理し、それはそれを正しく行う方法些細ではありません。