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:
@@ -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
90
app/passport.js
Normal 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);
|
||||
});
|
||||
}));
|
||||
|
||||
};
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user