/* 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 { Users } from '/imports/collections/users/index'; /** * General Components */ import NotFound from '/imports/client/views/org/NotFound'; /** * Org Components */ import { EnterModule } from '/imports/client/views/org/enter/module/index'; import { AdminAppModule } from '/imports/client/views/org/admin/app/module/Index'; import { DashboardController } from '/imports/client/views/org/admin/dashboard/index'; import { Orgs } from '/imports/collections/orgs/index'; import { importCsvController } from '/imports/client/views/org/importCsv/index' /** Admin **/ //settings import { AdminSettingsModule } from '/imports/client/views/org/admin/settings/module/index' import { AdminSettingsController } from '/imports/client/views/org/admin/settings/basic/index' import { UserRolesController } from '/imports/client/views/org/admin/settings/userroles/index' import { ClassInfoController } from '/imports/client/views/org/admin/settings/classinfo/index' import { AdminUsersModule } from '/imports/client/views/org/admin/users/module/index' import { AdminUsersListController } from '/imports/client/views/org/admin/users/list/index' import { StudentDataController } from '/imports/client/views/org/admin/users/students/index' import { staffViewController } from '/imports/client/views/org/admin/users/staff/index' import { ParentViewController } from '/imports/client/views/org/admin/users/parents/index' //Admin mail import { AdminMailModule } from '/imports/client/views/org/admin/mailbox/module/index' import { AdminInboxController } from '/imports/client/views/org/admin/mailbox/inbox/index' import { AdminComposeMailController } from '/imports/client/views/org/admin/mailbox/compose/index' import { AdminSentMailController } from '/imports/client/views/org/admin/mailbox/sent/index' import { AdminImportantMailController } from '/imports/client/views/org/admin/mailbox/important/index' import { FeeInfoController } from '/imports/client/views/org/admin/finance/feestrucure/index' //students //teachers //parents /** * Invalid Org Components */ /** There are three types of routes 1)getOrgRoutes: all the routes that should be present for a registered org 2)getInvalidOrgRoute: all the routes where someone tries to enter a subdomain which hasn't been registered yet (404 mostly :D) 3)getNonOrgRoutes: all routes linked to normal site, ie signing up a new org. CHeking out demo and everything internal **/ const getOrgAdminRoutes = () => ( ) const getOrgNonLoggedInRoutes = () => ( ) const getInvalidOrgRoute = () => ( ) /** * NonOrg Components */ import Signup from '/imports/client/views/nonOrg/enter/SignupView'; import { NonOrgApp } from '/imports/client/layouts/NonOrgApp'; import {NonOrgAppModule} from '/imports/client/views/nonOrg/app/module/Index'; const getNonOrgRoutes = () => ( ) //Authenticate function to give access to users only const authenticate = (nextState, replace) => { if (!Meteor.loggingIn() && !Meteor.userId()) { replace({ pathname: '/login', state: { nextPathname: nextState.location.pathname }, }); } }; /** **/ const detectOrg = () => { orgSlug = ""; //www.app.ydapp.in // var hostnameArray = document.location.hostname.split( "." ); //['www','app', 'ydapp','in']; if(hostnameArray[0] !== "www"){ if((hostnameArray[1]==='localhost'||hostnameArray[1]==='ydapp')){ orgSlug = hostnameArray[0]; } }else{ if((hostnameArray[2]==='localhost'||hostnameArray[2]==='ydapp')){ orgSlug = hostnameArray[1]; } } if(orgSlug!==""){ console.log(orgSlug); Meteor.call('checkExistingOrg', {slug:orgSlug}, function(err, res) { console.log(err); console.log(res); if(res){ Session.set('orgId', res._id); Session.set('orgSlug', orgSlug); if(Meteor.loggingIn() || Meteor.userId()){ userRole = _.find(res.users, {userId: Meteor.user()._id}).role; Session.set('userRole', userRole); if(userRole=='ADMIN'){ render(getOrgAdminRoutes(),document.getElementById('app')); }else{ } }else{ render(getOrgNonLoggedInRoutes(),document.getElementById('app')); } }else{ render(getInvalidOrgRoute(),document.getElementById('app')); } }); }else{ render(getNonOrgRoutes(),document.getElementById('app')); } } const checkSlug = (nextState, replace) => { orgId = Session.get('orgId'); } Meteor.startup(() => { detectOrg(); });