diff --git a/.meteor/packages b/.meteor/packages index 3a5c064..272054d 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -8,7 +8,7 @@ meteor-base@1.0.4 # Packages every Meteor app needs to have mobile-experience@1.0.4 # Packages for a great mobile UX mongo@1.1.15 # The database Meteor supports right now reactive-var@1.0.11 # Reactive variable for tracker -session@1.1.7 +session tracker@1.1.2 # Meteor's client-side reactive programming library standard-minifier-css@1.3.3 # CSS minifier run for production mode diff --git a/imports/collections/orgs/methods.js b/imports/collections/orgs/methods.js new file mode 100644 index 0000000..ce69eb5 --- /dev/null +++ b/imports/collections/orgs/methods.js @@ -0,0 +1,36 @@ +// import { } from '/imports/collections/orgs/methods'; +import _ from 'lodash'; +import { Meteor } from 'meteor/meteor'; +import { ValidatedMethod } from 'meteor/mdg:validated-method'; +import { SimpleSchema } from 'meteor/aldeed:simple-schema'; +import { DDPRateLimiter } from 'meteor/ddp-rate-limiter'; +import { Bert } from 'meteor/themeteorchef:bert'; +import { Users } from '/imports/collections/users/index'; +import { Orgs } from '/imports/collections/orgs/index'; +// import { sendNotificationAPN } from '/imports/server/push/methods'; +export const orgMethod = new ValidatedMethod({ + name: 'org.method', + + validate: new SimpleSchema({ + itemId: { type: String }, + }).validator(), + + run({itemId}) { + return {}; + }, + +}); + +export const checkExistingOrg = new ValidatedMethod({ + name: 'checkExistingOrg', + validate: new SimpleSchema({ + slug: { type: String }, + }).validator(), + + run({slug}) { + org = Orgs.find({slug:slug}).fetch(); + console.log(org); + return org; + }, + +}); diff --git a/imports/modules/signup.js b/imports/modules/signup.js index 1171c90..4376a4e 100644 --- a/imports/modules/signup.js +++ b/imports/modules/signup.js @@ -68,9 +68,12 @@ const validate = () => { }, }, messages: { + orgSlug: { + required: 'Choose your school url', + uniqueSlug: 'This has already been taken!' + }, firstName: { required: 'First name?', - uniqueSlug: "This Name is already taken" }, lastName: { required: 'Last name?', diff --git a/imports/startup/client/routes.js b/imports/startup/client/routes.js index 572cff1..7b1042e 100644 --- a/imports/startup/client/routes.js +++ b/imports/startup/client/routes.js @@ -1,20 +1,22 @@ /* eslint-disable max-len */ -import React from 'react'; -import { render } from 'react-dom'; -import { Router, Route, IndexRoute, browserHistory } from 'react-router'; -import { Meteor } from 'meteor/meteor'; -import App from '../../ui/layouts/App.js'; -import Documents from '../../ui/pages/Documents.js'; -import NewDocument from '../../ui/pages/NewDocument.js'; -import EditDocument from '../../ui/containers/EditDocument.js'; -import ViewDocument from '../../ui/containers/ViewDocument.js'; -import Index from '../../ui/pages/Index.js'; -import Login from '../../ui/pages/Login.js'; -import NotFound from '../../ui/pages/NotFound.js'; -import RecoverPassword from '../../ui/pages/RecoverPassword.js'; -import ResetPassword from '../../ui/pages/ResetPassword.js'; -import Signup from '../../ui/pages/Signup.js'; +import React from 'react'; +import { render } from 'react-dom'; +import { Router, Route, IndexRoute, browserHistory } from 'react-router'; +import { Meteor } from 'meteor/meteor'; +import App from '../../ui/layouts/App.js'; +import Documents from '../../ui/pages/Documents.js'; +import NewDocument from '../../ui/pages/NewDocument.js'; +import EditDocument from '../../ui/containers/EditDocument.js'; +import ViewDocument from '../../ui/containers/ViewDocument.js'; +import Index from '../../ui/pages/Index.js'; +import Login from '../../ui/pages/Login.js'; +import NotFound from '../../ui/pages/NotFound.js'; +import RecoverPassword from '../../ui/pages/RecoverPassword.js'; +import ResetPassword from '../../ui/pages/ResetPassword.js'; +import Signup from '../../ui/pages/Signup.js'; +import { Orgs } from '/imports/collections/orgs/index'; + const authenticate = (nextState, replace) => { if (!Meteor.loggingIn() && !Meteor.userId()) { @@ -24,34 +26,63 @@ const authenticate = (nextState, replace) => { }); } }; -const detectOrg = () => { +const detectOrg = (nextState, replace) => { + orgSlug = ""; var hostnameArray = document.location.hostname.split( "." ); if(hostnameArray[1]=='localhost'){ orgSlug = hostnameArray[0]; + } + if(orgSlug!=""){ + Meteor.call('checkExistingOrg', {slug:orgSlug}, function(err, res) { + if(res.length>0){ + console.log(res); + console.log(res[0]._id._str); + Session.set('orgId', res[0]._id._str); + render(getOrgRoutes(),document.getElementById('react-root')); + }else{ + render(getInvalidOrgRoute(),document.getElementById('react-root')); + } + }); }else{ - orgSlug = hostnameArray[0]; + render(getNonOrgRoutes(),document.getElementById('react-root')); } - } +const checkSlug = (nextState, replace) => { + orgId = Session.get('orgId'); + console.log("orgId"); + console.log(orgId); +} +const getOrgRoutes = () => ( + + + + + + + + + +) +const getNonOrgRoutes = () => ( + + + + + + + +) +const getInvalidOrgRoute = () => ( + + + + + + +) -Meteor.startup(() => { - render( - - - - - - - - - - - - - - , - document.getElementById('react-root') - ); +Meteor.startup(() => { + detectOrg(); }); diff --git a/imports/startup/server/api.js b/imports/startup/server/api.js index d284bbb..a5e8d21 100644 --- a/imports/startup/server/api.js +++ b/imports/startup/server/api.js @@ -1,2 +1,5 @@ import '../../api/documents/methods.js'; import '../../api/documents/server/publications.js'; + +import '/imports/collections/orgs/publications' +import '/imports/collections/orgs/methods'; diff --git a/imports/startup/server/index.js b/imports/startup/server/index.js index 1e35f2a..7806cb2 100644 --- a/imports/startup/server/index.js +++ b/imports/startup/server/index.js @@ -3,7 +3,3 @@ import './accounts/creation'; import './browser-policy'; import './fixtures'; import './api'; - - - -import '/imports/collections/orgs/publications'