2015-01-15 20 views
8

Я создаю часть системы администратора в Meteor, которая позволяет администраторам добавлять/редактировать других администраторов. Я использую Meteor Accounts и Autoform, но я не могу понять, как обращаться с ним, чтобы пользователи были проверены с помощью Autoform и сохранены правильно. Из того, что я нашел, похоже, мне нужно использовать метод Accounts.createUser и сделать форму type="method" или что-то в этом роде, но я не уверен, как справиться с этим, или если это даже правильный путь.Как добавлять/редактировать пользователей с учетными записями meteor и autoform

Вот мой код прямо сейчас:

схемы:

Schema = {}; 

Schema.UserProfile = new SimpleSchema({ 
    name: { 
     type: String, 
     label: "Name" 
    } 
}); 

Schema.User = new SimpleSchema({ 
    email: { 
     type: String, 
     regEx: SimpleSchema.RegEx.Email 
    }, 
    password: { 
     type: String, 
     label: "Password", 
     min: 6 
    }, 
    passwordConfirmation: { 
     type: String, 
     min: 6, 
     label: "Password Confirmation", 
     custom: function() { 
     if (this.value !== this.field('password').value) { 
      return "passwordMissmatch"; 
     } 
     } 
    }, 
    createdAt: { 
     type: Date, 
     autoValue: function() { 
     if (this.isInsert) { 
      return new Date; 
     } else if (this.isUpsert) { 
      return {$setOnInsert: new Date}; 
     } else { 
      this.unset(); 
     } 
     } 
    }, 
    profile: { 
     type: Schema.UserProfile 
    }, 
    services: { 
     type: Object, 
     optional: true, 
     blackbox: false 
    } 
}); 

Meteor.users.attachSchema(Schema.User); 

Маршруты:

Router.route('/admin/admins', { 
    controller: 'AdminController', 
    name: 'adminAdmins', 
    title: 'Admins', 
    parent: 'adminHome', 
}); 

Router.route('/admin/admins/new', { 
    controller: 'AdminController', 
    name: 'adminAdminNew', 
    title: 'New Admin', 
    parent: 'adminAdmins', 
}); 

Router.route('/admin/admins/:_id/edit', { 
    controller: 'AdminController', 
    name: 'adminAdminEdit', 
    title: 'Edit Admin', 
    parent: 'adminAdmins', 
    data: function() { 
     return Meteor.users.findOne(this.params._id); 
    } 
}); 

Администратор Форма:

{{#autoForm collection="Meteor.users" doc=this id="adminAdminForm" type=formType}} 

    {{> afQuickField name='profile.name'}} 
    {{> afQuickField name='email'}} 
    {{> afQuickField name='password'}} 
    {{> afQuickField name='passwordConfirmation'}} 

    <button type="submit" class="btn btn-block btn-secondary">Save Changes</button> 
{{/autoForm}} 

ответ

3

Вы должны добавить Крючки, чтобы иметь возможность изменить коллекциюто, что должно выглядеть так

AutoForm.hooks({ 
    adminAdminForm: { 
    onSubmit: function (doc) { 
     schemas.User.clean(doc); 
     this.done(); 
     return false; 
    }, 
    onSuccess:function(operation, result, template){ 
     Router.go('users.show',{'username':template.data.doc.username}); 
    }, 
    onError: function(operation, error, template) { 
     console.log(operation,error) 
    } 
    } 
}); 

Вы можете найти более подробную информацию о специальной документации https://github.com/aldeed/meteor-autoform#callbackshooks

+0

сделал это решение от Геп решить вашу проблему? @NineBlindEyes –

Смежные вопросы