Guest User

Untitled

a guest
Oct 9th, 2018
347
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.49 KB | None | 0 0
  1. // Includes
  2. var crypto = require('crypto');
  3.  
  4. function hashString(value) {
  5. hash = crypto.createHash('sha1');
  6. hash.update(value);
  7. return hash.digest('hex');
  8. }
  9.  
  10. var AdminPages = module.exports = function AdminPages(){};
  11.  
  12. AdminPages.prototype = {
  13.  
  14. db: null
  15.  
  16. , initPages: function(app, db){
  17.  
  18. this.db = db;
  19. var self = this;
  20.  
  21. // login related
  22. app.get ('/Admin/Login', function(req, res) { self.pageLogin(req, res); } );
  23. app.post('/Admin/Login', function(req, res) { self.pageLoginPost(req, res); } );
  24. app.get ('/Admin/Logout', function(req, res) { self.pageLogout(req, res); } );
  25.  
  26. // post related
  27. app.get ('/Admin/PostList', function(req, res) { self.pagePostList(req, res); } );
  28. app.get ('/Admin/NewPost', function(req, res) { self.pagePost(req, res); } );
  29. app.post('/Admin/Post', function(req, res) { self.pagePostPost(req, res); } );
  30. app.get ('/Admin/Post/:id', function(req, res) { self.pagePost(req, res); } );
  31.  
  32. // misc.
  33. app.get ('/Admin', function(req, res) { self.pageIndex(req, res); } );
  34. }
  35.  
  36. , _checkLogin: function(req, res){
  37. if(req.session && req.session.loggedIn === true)
  38. return true;
  39.  
  40. res.redirect('/Admin/Login');
  41. return false;
  42. }
  43.  
  44. , pageLogin: function(req, res){
  45. res.render('admin/login', {
  46. title: 'Login',
  47. showFullNav: false
  48. });
  49. }
  50.  
  51. , pageLogout: function(req, res){
  52. delete req.session.loggedIn;
  53. res.redirect('/Admin/Login');
  54. }
  55.  
  56. , pageLoginPost: function(req, res){
  57. if(req.body && req.body.password && req.body.email){
  58. var adminuser = this.db.model('adminUser');
  59. adminuser.findOne(
  60. { login: req.body.email
  61. , password: hashString(req.body.password) }
  62. , function(err, row){
  63.  
  64. if(err){
  65. res.render('admin/login', {
  66. title: 'Login',
  67. showFullNav: false,
  68. error_text: err
  69. });
  70. }else{
  71. if(row){
  72. req.session.loggedIn = true; // register user is logged in
  73. res.redirect('/Admin');
  74. }else{
  75. res.render('admin/login', {
  76. title: 'Login',
  77. showFullNav: false,
  78. error_text: 'User not found, Please try again',
  79. email: req.body.email
  80. });
  81. }
  82. }
  83. });
  84. }else{
  85. res.render('admin/login', {
  86. title: 'Login',
  87. showFullNav: false,
  88. error_text: 'Error processing login.'
  89. });
  90. }
  91. }
  92.  
  93. , pageIndex: function(req, res){
  94. if( !this._checkLogin(req, res) ) return;
  95.  
  96. res.render('admin/index', {
  97. title: 'Admin Index',
  98. showFullNav: false
  99. });
  100. }
  101.  
  102. /* Blog post related */
  103. , pagePostList: function(req, res){ // List of blog posts
  104. if( !this._checkLogin(req, res) ) return;
  105.  
  106. var blogpost = this.db.model('blogPost');
  107.  
  108. var query = blogpost.find().sort("posted", -1).limit(1000).exec(function(err, docs){
  109. res.render('admin/postlist', {
  110. title: 'Post Listing',
  111. posts: docs,
  112. showFullNav: false
  113. });
  114. });
  115. }
  116.  
  117. , pagePost: function(req, res){ // Edit/New Page
  118. if( !this._checkLogin(req, res) ) return;
  119.  
  120. if(req.params.id){ // Old Post
  121.  
  122. var blogpost = this.db.model('blogPost');
  123. blogpost.findOne({sid: req.params.id}, function(err, row){
  124. if(!row){
  125. res.redirect('/Admin/NewPost');
  126. return;
  127. }
  128.  
  129. res.render('admin/post', {
  130. title: req.params.id + ' - ' + row.title,
  131. post: row,
  132. showFullNav: false
  133. });
  134. });
  135.  
  136. }else{ // New Post
  137. var newid = 1;
  138. var blogpost = this.db.model('blogPost');
  139. blogpost.find().sort("sid", -1).limit(1).exec(function(err, doc){
  140. if(err)
  141. console.info(err);
  142.  
  143. if(!doc || doc.length == 0){
  144. newid = 1;
  145. }else{
  146. newid = doc[0].sid + 1;
  147. }
  148.  
  149. res.render('admin/post', {
  150. title: 'New Blog Post',
  151. post: { id : "",
  152. sid : newid,
  153. author : "mikevalstar@gmail.com",
  154. title : "",
  155. img_lg : "",
  156. img_sm : "",
  157. content : "",
  158. short : "",
  159. ext_link: "",
  160. posted : "",
  161. edited : "",
  162. },
  163. showFullNav: false
  164. });
  165. });
  166. }
  167. }
  168.  
  169. , pagePostPost: function(req, res){
  170. if( !this._checkLogin(req, res) ) return;
  171.  
  172. if(req.body.id && req.body.id != ""){
  173. // old page
  174. var blogpost = this.db.model('blogPost');
  175.  
  176. blogpost.update(
  177. {_id: req.body.id},
  178. {
  179. sid : req.body.sid,
  180. title : req.body.title,
  181. img_lg : req.body.img_lg,
  182. img_sm : req.body.img_sm,
  183. content : req.body.content,
  184. short : req.body.short,
  185. ext_link: req.body.ext_link,
  186. },
  187. { multi: false },
  188. function(err, numrows){
  189. if(err){
  190. console.log(err);
  191. }else{
  192. console.log("Updated ("+numrows+") blog post(s) at internal id: " + req.body.id);
  193. }
  194.  
  195. res.redirect('/Admin/Post/' + req.body.sid);
  196. });
  197.  
  198. }else{
  199. // new page
  200. var blogpost = this.db.model('blogPost');
  201.  
  202. // max id + 1
  203. var newid = 1;
  204. blogpost.find().sort("sid", -1).limit(1).exec(function(err, doc){
  205. if(err)
  206. console.info(err);
  207.  
  208. if(!doc || doc.length == 0){
  209. newid = 1;
  210. }else{
  211. newid = doc[0].sid + 1;
  212. }
  213.  
  214. // new blog post
  215. var post = new blogpost({
  216. sid : req.body.sid == "" ? parseInt(newid) : req.body.sid,
  217. author : "mikevalstar@gmail.com",
  218. title : req.body.title,
  219. img_lg : req.body.img_lg,
  220. img_sm : req.body.img_sm,
  221. content : req.body.content,
  222. short : req.body.short,
  223. ext_link: req.body.ext_link,
  224. });
  225.  
  226. post.save(function(err){
  227. if(err){
  228. console.log(err);
  229. }else{
  230. console.log("Inserted new blog post at sid: " + post.sid + " at internal id: " + post.id);
  231. }
  232.  
  233. res.redirect('/Admin/Post/' + post.sid);
  234. });
  235.  
  236. });
  237.  
  238. }
  239. }
  240.  
  241. };
Add Comment
Please, Sign In to add comment