Updates to the website to remove Yaks and AP classes; Updates to the admin site to support user management (not working fully yet).

This commit is contained in:
Wynne Crisman
2016-07-20 15:11:55 -07:00
parent 83a831736a
commit 3340dc7e34
30 changed files with 1400 additions and 1666 deletions

View File

@@ -7,13 +7,14 @@ module.exports = function(sequelize) {
models.Category.count().then(function(count) {
if(count == 0) {
var basicJarIds = [];
models.User.create({login: 'wcrisman', password: models.User.generateHash('landFJ40'), admin: true});
models.Venue.create({name: 'Boonville'});
models.Venue.create({name: 'Clement St Farmers Market in SF'});
models.Venue.create({name: 'Ukiah Farmers Market'});
models.Venue.create({name: 'Mendocino Farmers Market'});
models.Venue.create({name: 'Ft Bragg Farmers Market'});
models.Venue.create({name: 'Healdsburg Farmers Market'});
Promise.each([
models.Measure.create({name: 'Jar 4oz', postfix: '4oz'}),

90
app/passport.js Normal file
View File

@@ -0,0 +1,90 @@
// load all the things we need
var LocalStrategy = require('passport-local').Strategy;
// expose this function to our app using module.exports
module.exports = function(passport, User) {
// =========================================================================
// passport session setup ==================================================
// =========================================================================
// required for persistent login sessions
// passport needs ability to serialize and unserialize users out of session
// used to serialize the user for the session
passport.serializeUser(function(user, done) {
done(null, user.id);
});
// used to deserialize the user
passport.deserializeUser(function(id, done) {
User.find({where: {id: id}}).then(function(user) {
done(null, user);
}).error(function(err) {
done(err, null);
});
});
// =========================================================================
// LOCAL SIGNUP
// =========================================================================
// we are using named strategies since we have one for login and one for signup
// by default, if there was no name, it would just be called 'local'
passport.use('local-signup', new LocalStrategy({
usernameField : 'login',
passwordField : 'password',
passReqToCallback : true // allows us to pass back the entire request to the callback
},
function(req, login, password, done) {
User.find({where: {login: login}}).then(function(user) {
if(user) {
done(null, false, req.flash('signupMessage', 'That login is already taken.'));
}
else {
var user = User.build();
user.login = login;
user.password = user.generateHash(password);
user.save().then(function() {
done(null, user);
}).error(function(err) {
done(null, false, req.flash('signupMessage', 'DB Failure: ' + err));
});
}
}).error(function(err) {
done(err);
});
}));
// =========================================================================
// LOCAL LOGIN
// =========================================================================
// we are using named strategies since we have one for login and one for signup
// by default, if there was no name, it would just be called 'local'
passport.use('local-login', new LocalStrategy({
usernameField : 'login',
passwordField : 'password',
passReqToCallback : true // allows us to pass back the entire request to the callback
},
function(req, login, password, done) {
User.findOne({where: {login: login}}).then(function(user) {
if(!user) {
return done(null, false, req.flash('loginMessage', 'User not found.'));
}
else if(!user.validPassword(password)) {
return done(null, false, req.flash('loginMessage', 'Invalid password.'));
}
else {
return done(null, user);
}
}).error(function(err) {
return done(err);
});
}));
};

View File

@@ -94,7 +94,7 @@ module.exports = function(app, rootPath, passport, smtpTransport, sequelize) {
});
}
else {
console.log("Looking for index.ejs in " + adminPath);
//console.log("Looking for index.ejs in " + adminPath);
//res.render("index.ejs", {root: adminPath});
res.render(path.join(adminPath, req.baseUrl, "index"));
}
@@ -181,6 +181,26 @@ module.exports = function(app, rootPath, passport, smtpTransport, sequelize) {
}
});
});
app.get('/admin/user-data', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
sequelize.models.User.findAll().then(function(values) {
res.json(values);
});
}
else {
}
}
catch(e) {console.log(e);}
});
app.post('/admin/createUser', isLoggedIn, function(req, res) {
try {
res.json({status: 'success'});
} catch(e) {console.log(e);}
});
app.get('/admin/getCategories', isLoggedIn, function(req, res) {
sequelize.models.Category.findAll({attributes: ['id', 'name', 'visible'], order: [['name', 'DESC'], ['visible', 'DESC']]}).then(function(values) {