В метеорите я использую поле ввода по умолчанию. Тем не менее, я хотел бы, чтобы пользователь создал уникальный идентификатор пользователя при создании учетной записи. Я мог бы сделать это жестко, но мне было интересно, есть ли способ сделать это, изменив поле loginButton каким-то образом. Кто-нибудь знает, как добавить дополнительные поля в общем, что пользовательская регистрация будет принудительно заполнена? Например, имя, имя пользователя и т.д.?
Как создать пользовательские поля входа в Meteor?
Ответ 1
Вспомогательный помощник loginButtons
предназначен для простого прототипирования. Для настройки вам необходимо создать свои собственные формы входа/регистрации. Это довольно легко с документированным API учетных записей. Вот простой пример пользовательских форм регистрации/регистрации:
<template name="signupForm">
<form id="signup-form">
<h2>Sign Up</h2>
<label for="signup-username">Username</label>
<input type="text" id="signup-username" placeholder="Username" />
<label for="signup-password">Password</label>
<input type="password" id="signup-password" placeholder="Password" />
<label for="signup-name">Full Name</label>
<input type="text" id="signup-name" placeholder="Full Name" />
<button type="submit">Sign Up</button>
</form>
</template>
<template name="loginForm">
<form id="login-form">
<h2>Log In</h2>
<label for="login-username">Username</label>
<input type="text" id="login-username" placeholder="Username" />
<label for="login-password">Password</label>
<input type="password" id="login-password" placeholder="Password" />
<button type="submit">Log In</button>
</form>
</template>
<template name="logoutForm">
<form id="logout-form">
<button type="submit">Log Out</button>
</form>
</template>
Template.signupForm.events({
"submit #signup-form": function(event, template) {
event.preventDefault();
Accounts.createUser({
username: template.find("#signup-username").value,
password: template.find("#signup-password").value,
profile: {
name: template.find("#signup-name").value
// Other required field values can go here
}
}, function(error) {
if (error) {
// Display the user creation error to the user however you want
}
});
}
});
Template.loginForm.events({
"submit #login-form": function(event, template) {
event.preventDefault();
Meteor.loginWithPassword(
template.find("#login-username").value,
template.find("#login-password").value,
function(error) {
if (error) {
// Display the login error to the user however you want
}
}
);
}
});
Template.logoutForm.events({
"submit #logout-form": function(event, template) {
event.preventDefault();
Meteor.logout(function(error) {
if (error) {
// Display the logout error to the user however you want
}
});
}
});
Вы можете использовать методы Accounts.validateNewUser()
и Accounts.onCreateUser()
для проверки полей пользователя и выполнения дальнейшая настройка на пользовательские объекты, соответственно. Например, в обратном вызове onCreateUser
вы можете изменить поле пользователя _id
на все, что захотите, прежде чем возвращать объект пользователя, который будет вставлен в БД.
Обратите внимание, что этот пример не включает код, когда пользователь забыли свой пароль и захочет reset его. Вы можете использовать методы Accounts.forgotPassword
и Accounts.resetPassword
.
Ответ 2
Если у вас есть электронная почта как поле в вашей коллекции пользователей, и вы вводите идентификатор электронной почты вместо имени пользователя, он вводит систему в систему, поскольку мы не используем учетные записи здесь. Таким образом, мы не сможем использовать средство настройки учетных записей ui.