/* eslint-disable no-undef */ import { browserHistory } from 'react-router'; import { Accounts } from 'meteor/accounts-base'; import { Bert } from 'meteor/themeteorchef:bert'; import { Loading } from '/imports/client/components/Loading'; import '/imports/client/components/validation'; import { Orgs } from '/imports/collections/orgs/index'; let component; const getUserData = () => ({ email: document.querySelector('[name="emailAddress"]').value, password: document.querySelector('[name="password"]').value, orgSlug: document.querySelector('[name="orgSlug"]').value, orgName: document.querySelector('[name="orgName"]').value, profile: { name: { first: document.querySelector('[name="firstName"]').value, last: document.querySelector('[name="lastName"]').value, }, }, }); const signup = () => { const user = getUserData(); Accounts.createUser(user, (error) => { if (error) { Bert.alert(error.reason, 'danger'); } else { browserHistory.push('/'); Bert.alert('Welcome!', 'success'); } }); }; $.validator.addMethod( "uniqueSlug", function(value, element) { slug = Orgs.find({slug:value}).fetch(); if(slug.length>0){ return false; }else{ return true } }, "Name is Already Taken" ); const validate = () => { $(component.signupForm).validate({ rules: { orgSlug: { required: true, uniqueSlug: true }, firstName: { required: true, }, lastName: { required: true, }, emailAddress: { required: true, email: true, }, password: { required: true, minlength: 6, }, }, messages: { orgSlug: { required: 'Choose your school url', uniqueSlug: 'This has already been taken!' }, firstName: { required: 'First name?', }, lastName: { required: 'Last name?', }, emailAddress: { required: 'Need an email address here.', email: 'Is this email address legit?', }, password: { required: 'Need a password here.', minlength: 'Use at least six characters, please.', }, }, submitHandler() { signup(); }, }); }; export default function handleSignup(options) { component = options.component; validate(); }