2017-09-14 1 views
0

Faire une partie d'enregistrement sur mon projet de météore. J'utilise un module "accounts-password" et je veux savoir, comment puis-je filtrer ou modifier des données dans le paramètre "options"?Comment filtrer les données d'options de Accounts.createUser?

Accounts.createUser(options, [callback]) - il stocke nom d'utilisateur, email, mot de passe. Par exemple, je veux empêcher les utilisateurs de créer des noms d'utilisateur avec des symboles spéciaux (! # @ $), Comme: username.replace(/[^A-Z0-9]/ig, "") Comment puis-je configurer cela?

J'essayais la fonction "Accounts.onCreateUser", mais cela n'aide qu'avec les informations "profil" (supplémentaires).

+0

Essayez de filtrer côté client - n'est pas efficace, parce que quelqu'un peut utiliser développeur console pour vous enregistrer –

Répondre

0

Accounts.onCreateUser() vous permet de modifier le document utilisateur entier. Vous pouvez examiner le champ username et y remplacer autant de caractères que vous le souhaitez.

Exemple:

Accounts.onCreateUser((options, user) => { 
    user.username = user.username.replace(/[^A-Z0-9]/ig, "") 
    return user; 
}); 
0

Jetons un coup d'œil à Accounts.onCreateUser():

ARGUMENTS

foncFonction

Appelé à chaque fois est créé un nouvel utilisateur. Renvoyez le nouvel objet utilisateur ou lancez un Error pour abandonner la création.

Ainsi, pour empêcher utilisateurs d'utiliser des caractères spéciaux dans le nom d'utilisateur, vous devez faire quelque chose comme ceci:

Accounts.onCreateUser((options, user) => { 
    const re = new RegExp('^[a-z0-9]+$', 'i'); 
    if (!re.test(user.username)) { 
    throw new Error('invalid-username', 'Entered username is invalid'); 
    } 
    ... 
});