Initial commit. Modified the Meteor todos app to create the Petit Teton data tracking app. Has working data for sales. Requires a Mongo database.
This commit is contained in:
68
imports/startup/both/accounts.js
Normal file
68
imports/startup/both/accounts.js
Normal file
@@ -0,0 +1,68 @@
|
||||
import { AccountsTemplates } from 'meteor/useraccounts:core';
|
||||
|
||||
AccountsTemplates.configure({
|
||||
forbidClientAccountCreation: true,
|
||||
showForgotPasswordLink: true,
|
||||
defaultTemplate: 'atForm',
|
||||
defaultLayout: 'Full',
|
||||
defaultContentRegion: 'content',
|
||||
defaultLayoutRegions: {}
|
||||
// defaultTemplate: 'Auth_page',
|
||||
// defaultLayout: 'Body',
|
||||
// defaultContentRegion: 'content',
|
||||
// defaultLayoutRegions: {}
|
||||
});
|
||||
|
||||
// This removes the password field but returns it,
|
||||
// so that you can re-add it later, preserving the
|
||||
// desired order of the fields
|
||||
// let pwd = AccountsTemplates.removeField('password');
|
||||
// AccountsTemplates.removeField('email');
|
||||
// AccountsTemplates.addFields([
|
||||
// {
|
||||
// _id: "username",
|
||||
// type: "text",
|
||||
// displayName: "username",
|
||||
// required: true,
|
||||
// minLength: 5,
|
||||
// },
|
||||
// pwd
|
||||
// ]);
|
||||
let pwd = AccountsTemplates.removeField('password');
|
||||
AccountsTemplates.removeField('email');
|
||||
AccountsTemplates.addFields([
|
||||
{
|
||||
_id: "username",
|
||||
type: "text",
|
||||
displayName: "username",
|
||||
required: true,
|
||||
minLength: 5,
|
||||
},
|
||||
{
|
||||
_id: 'email',
|
||||
type: 'email',
|
||||
required: true,
|
||||
displayName: "email",
|
||||
re: /.+@(.+){2,}\.(.+){2,}/,
|
||||
errStr: 'Invalid email',
|
||||
},
|
||||
pwd
|
||||
]);
|
||||
|
||||
|
||||
AccountsTemplates.configureRoute('signIn', {
|
||||
name: 'signin',
|
||||
path: '/signin'
|
||||
});
|
||||
|
||||
// AccountsTemplates.configureRoute('signUp', {
|
||||
// name: 'join',
|
||||
// path: '/join'
|
||||
// });
|
||||
|
||||
AccountsTemplates.configureRoute('forgotPwd');
|
||||
|
||||
AccountsTemplates.configureRoute('resetPwd', {
|
||||
name: 'resetPwd',
|
||||
path: '/reset-password',
|
||||
});
|
||||
1
imports/startup/both/index.js
Normal file
1
imports/startup/both/index.js
Normal file
@@ -0,0 +1 @@
|
||||
import './accounts.js';
|
||||
1
imports/startup/client/index.js
Normal file
1
imports/startup/client/index.js
Normal file
@@ -0,0 +1 @@
|
||||
import './routes.js';
|
||||
80
imports/startup/client/routes.js
Normal file
80
imports/startup/client/routes.js
Normal file
@@ -0,0 +1,80 @@
|
||||
//Look in /libs/startup/both/useraccounts.js for the login/logout/signup routing.
|
||||
|
||||
let pri = FlowRouter.group({
|
||||
triggersEnter: [AccountsTemplates.ensureSignedIn]
|
||||
});
|
||||
|
||||
pri.route('/', {
|
||||
triggersEnter: [function(context, redirect) {redirect("/sales");}]
|
||||
});
|
||||
|
||||
pri.route('/menu', {
|
||||
name: 'Menu',
|
||||
action: function(params, queryParams) {
|
||||
require("/imports/ui/Menu.js");
|
||||
BlazeLayout.render('Body', {content: 'Menu'});
|
||||
}
|
||||
});
|
||||
pri.route('/admin', {
|
||||
name: 'UserManager',
|
||||
action: function(params, queryParams) {
|
||||
require("/imports/ui/UserManager.js");
|
||||
BlazeLayout.render('Body', {content: 'UserManager'});
|
||||
}
|
||||
});
|
||||
pri.route('/measures', {
|
||||
name: 'Measures',
|
||||
action: function(params, queryParams) {
|
||||
require("/imports/ui/Measures.js");
|
||||
BlazeLayout.render('Body', {content: 'Measures'});
|
||||
}
|
||||
});
|
||||
pri.route('/products', {
|
||||
name: 'Products',
|
||||
action: function(params, queryParams) {
|
||||
require("/imports/ui/Products.js");
|
||||
BlazeLayout.render('Body', {content: 'Products'});
|
||||
}
|
||||
});
|
||||
pri.route('/productTags', {
|
||||
name: 'ProductTags',
|
||||
action: function(params, queryParams) {
|
||||
require("/imports/ui/ProductTags.js");
|
||||
BlazeLayout.render('Body', {content: 'ProductTags'});
|
||||
}
|
||||
});
|
||||
// pri.route('/subcategories', {
|
||||
// name: 'Items',
|
||||
// action: function(params, queryParams) {
|
||||
// require("/imports/ui/Subcategories.js");
|
||||
// BlazeLayout.render('Body', {content: 'Subcategories'});
|
||||
// }
|
||||
// });
|
||||
pri.route('/userManagement', {
|
||||
name: 'UserManagement',
|
||||
action: function(params, queryParams) {
|
||||
require("/imports/ui/UserManagement.js");
|
||||
BlazeLayout.render('Body', {content: 'UserManagement'});
|
||||
}
|
||||
});
|
||||
pri.route('/sales', {
|
||||
name: 'Sales',
|
||||
action: function(params, queryParams) {
|
||||
require("/imports/ui/Sales.js");
|
||||
BlazeLayout.render('Body', {content: 'Sales'});
|
||||
}
|
||||
});
|
||||
pri.route('/production', {
|
||||
name: 'Production',
|
||||
action: function(params, queryParams) {
|
||||
require("/imports/ui/Production.js");
|
||||
BlazeLayout.render('Body', {content: 'Production'});
|
||||
}
|
||||
});
|
||||
pri.route('/pricing', {
|
||||
name: 'Pricing',
|
||||
action: function(params, queryParams) {
|
||||
require("/imports/ui/Pricing.js");
|
||||
BlazeLayout.render('Body', {content: 'Pricing'});
|
||||
}
|
||||
});
|
||||
12
imports/startup/server/email.js
Normal file
12
imports/startup/server/email.js
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
Accounts.emailTemplates.from = "Do Not Reply <administrator@declarativeengineering.com>";
|
||||
Accounts.emailTemplates.siteName = "Petit Teton App";
|
||||
// Accounts.emailTemplates.verifyEmail.subject = function (user) {
|
||||
// return "Welcome to My Site! Please verify your email";
|
||||
// };
|
||||
//
|
||||
// Accounts.emailTemplates.verifyEmail.html = function (user, url) {
|
||||
// return "Hi " + user.profile.firstName + " " + user.profile.lastName + ",\n\n" +
|
||||
// " Please verify your email by simply clicking the link below:\n\n" +
|
||||
// url;
|
||||
// };
|
||||
1
imports/startup/server/index.js
Normal file
1
imports/startup/server/index.js
Normal file
@@ -0,0 +1 @@
|
||||
import "./email.js"
|
||||
33
imports/startup/server/postStartup/version.js
Normal file
33
imports/startup/server/postStartup/version.js
Normal file
@@ -0,0 +1,33 @@
|
||||
let AppVersion = new Mongo.Collection('AppVersion');
|
||||
let AppVersionSchema = new SimpleSchema({
|
||||
version: {
|
||||
type: Number,
|
||||
optional: false,
|
||||
defaultValue: 0
|
||||
}
|
||||
});
|
||||
AppVersion.attachSchema(AppVersionSchema);
|
||||
|
||||
try {
|
||||
let appVersions = AppVersion.find({}).fetch();
|
||||
let appVersion;
|
||||
|
||||
if(!appVersions || appVersions.length == 0) { //This will happen only when first creating a database.
|
||||
appVersion = {version: 0};
|
||||
appVersion._id = AppVersion.insert(appVersion);
|
||||
}
|
||||
else if(appVersions.length > 1) { //This should never happen. Remove all but the first app version.
|
||||
for(let i = 1; i < appVersions.length; i++) {
|
||||
AppVersion.remove(appVersions[i]._id);
|
||||
}
|
||||
}
|
||||
else {
|
||||
appVersion = appVersions[0];
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
catch(err) {
|
||||
console.log("Caught an error while upgrading the app version: " + err);
|
||||
process.exit(1);
|
||||
}
|
||||
Reference in New Issue
Block a user