Created
May 13, 2012 19:12
-
-
Save mikevalstar/2689816 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Includes | |
| var crypto = require('crypto'); | |
| function hashString(value) { | |
| hash = crypto.createHash('sha1'); | |
| hash.update(value); | |
| return hash.digest('hex'); | |
| } | |
| var AdminPages = module.exports = function AdminPages(){}; | |
| AdminPages.prototype = { | |
| db: null | |
| , initPages: function(app, db){ | |
| this.db = db; | |
| var self = this; | |
| // login related | |
| app.get ('/Admin/Login', function(req, res) { self.pageLogin(req, res); } ); | |
| app.post('/Admin/Login', function(req, res) { self.pageLoginPost(req, res); } ); | |
| app.get ('/Admin/Logout', function(req, res) { self.pageLogout(req, res); } ); | |
| // post related | |
| app.get ('/Admin/PostList', function(req, res) { self.pagePostList(req, res); } ); | |
| app.get ('/Admin/NewPost', function(req, res) { self.pagePost(req, res); } ); | |
| app.post('/Admin/Post', function(req, res) { self.pagePostPost(req, res); } ); | |
| app.get ('/Admin/Post/:id', function(req, res) { self.pagePost(req, res); } ); | |
| // misc. | |
| app.get ('/Admin', function(req, res) { self.pageIndex(req, res); } ); | |
| } | |
| , _checkLogin: function(req, res){ | |
| if(req.session && req.session.loggedIn === true) | |
| return true; | |
| res.redirect('/Admin/Login'); | |
| return false; | |
| } | |
| , pageLogin: function(req, res){ | |
| res.render('admin/login', { | |
| title: 'Login', | |
| showFullNav: false | |
| }); | |
| } | |
| , pageLogout: function(req, res){ | |
| delete req.session.loggedIn; | |
| res.redirect('/Admin/Login'); | |
| } | |
| , pageLoginPost: function(req, res){ | |
| if(req.body && req.body.password && req.body.email){ | |
| var adminuser = this.db.model('adminUser'); | |
| adminuser.findOne( | |
| { login: req.body.email | |
| , password: hashString(req.body.password) } | |
| , function(err, row){ | |
| if(err){ | |
| res.render('admin/login', { | |
| title: 'Login', | |
| showFullNav: false, | |
| error_text: err | |
| }); | |
| }else{ | |
| if(row){ | |
| req.session.loggedIn = true; // register user is logged in | |
| res.redirect('/Admin'); | |
| }else{ | |
| res.render('admin/login', { | |
| title: 'Login', | |
| showFullNav: false, | |
| error_text: 'User not found, Please try again', | |
| email: req.body.email | |
| }); | |
| } | |
| } | |
| }); | |
| }else{ | |
| res.render('admin/login', { | |
| title: 'Login', | |
| showFullNav: false, | |
| error_text: 'Error processing login.' | |
| }); | |
| } | |
| } | |
| , pageIndex: function(req, res){ | |
| if( !this._checkLogin(req, res) ) return; | |
| res.render('admin/index', { | |
| title: 'Admin Index', | |
| showFullNav: false | |
| }); | |
| } | |
| /* Blog post related */ | |
| , pagePostList: function(req, res){ // List of blog posts | |
| if( !this._checkLogin(req, res) ) return; | |
| var blogpost = this.db.model('blogPost'); | |
| var query = blogpost.find().sort("posted", -1).limit(1000).exec(function(err, docs){ | |
| res.render('admin/postlist', { | |
| title: 'Post Listing', | |
| posts: docs, | |
| showFullNav: false | |
| }); | |
| }); | |
| } | |
| , pagePost: function(req, res){ // Edit/New Page | |
| if( !this._checkLogin(req, res) ) return; | |
| if(req.params.id){ // Old Post | |
| var blogpost = this.db.model('blogPost'); | |
| blogpost.findOne({sid: req.params.id}, function(err, row){ | |
| if(!row){ | |
| res.redirect('/Admin/NewPost'); | |
| return; | |
| } | |
| res.render('admin/post', { | |
| title: req.params.id + ' - ' + row.title, | |
| post: row, | |
| showFullNav: false | |
| }); | |
| }); | |
| }else{ // New Post | |
| var newid = 1; | |
| var blogpost = this.db.model('blogPost'); | |
| blogpost.find().sort("sid", -1).limit(1).exec(function(err, doc){ | |
| if(err) | |
| console.info(err); | |
| if(!doc || doc.length == 0){ | |
| newid = 1; | |
| }else{ | |
| newid = doc[0].sid + 1; | |
| } | |
| res.render('admin/post', { | |
| title: 'New Blog Post', | |
| post: { id : "", | |
| sid : newid, | |
| author : "mikevalstar@gmail.com", | |
| title : "", | |
| img_lg : "", | |
| img_sm : "", | |
| content : "", | |
| short : "", | |
| ext_link: "", | |
| posted : "", | |
| edited : "", | |
| }, | |
| showFullNav: false | |
| }); | |
| }); | |
| } | |
| } | |
| , pagePostPost: function(req, res){ | |
| if( !this._checkLogin(req, res) ) return; | |
| if(req.body.id && req.body.id != ""){ | |
| // old page | |
| var blogpost = this.db.model('blogPost'); | |
| blogpost.update( | |
| {_id: req.body.id}, | |
| { | |
| sid : req.body.sid, | |
| title : req.body.title, | |
| img_lg : req.body.img_lg, | |
| img_sm : req.body.img_sm, | |
| content : req.body.content, | |
| short : req.body.short, | |
| ext_link: req.body.ext_link, | |
| }, | |
| { multi: false }, | |
| function(err, numrows){ | |
| if(err){ | |
| console.log(err); | |
| }else{ | |
| console.log("Updated ("+numrows+") blog post(s) at internal id: " + req.body.id); | |
| } | |
| res.redirect('/Admin/Post/' + req.body.sid); | |
| }); | |
| }else{ | |
| // new page | |
| var blogpost = this.db.model('blogPost'); | |
| // max id + 1 | |
| var newid = 1; | |
| blogpost.find().sort("sid", -1).limit(1).exec(function(err, doc){ | |
| if(err) | |
| console.info(err); | |
| if(!doc || doc.length == 0){ | |
| newid = 1; | |
| }else{ | |
| newid = doc[0].sid + 1; | |
| } | |
| // new blog post | |
| var post = new blogpost({ | |
| sid : req.body.sid == "" ? parseInt(newid) : req.body.sid, | |
| author : "mikevalstar@gmail.com", | |
| title : req.body.title, | |
| img_lg : req.body.img_lg, | |
| img_sm : req.body.img_sm, | |
| content : req.body.content, | |
| short : req.body.short, | |
| ext_link: req.body.ext_link, | |
| }); | |
| post.save(function(err){ | |
| if(err){ | |
| console.log(err); | |
| }else{ | |
| console.log("Inserted new blog post at sid: " + post.sid + " at internal id: " + post.id); | |
| } | |
| res.redirect('/Admin/Post/' + post.sid); | |
| }); | |
| }); | |
| } | |
| } | |
| }; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment