Advertisement
Guest User

Untitled

a guest
Mar 3rd, 2017
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.08 KB | None | 0 0
  1. var express = require("express");
  2. var User = require("./models/user");
  3. var passport = require("passport");
  4. var router = express.Router();
  5. var multer = require('multer');
  6. var portfolio= require("./models/portfolio");
  7. var path = require('path');
  8. var fs = require('fs');
  9. var crypto = require('crypto');
  10.  
  11.  
  12. /**
  13. * Multer Configuration
  14. */
  15.  
  16. const storage = multer.diskStorage({
  17. destination: function (req, file, cb) {
  18. cb(null, './uploads/');
  19. },
  20. filename: function (req, file, cb) {
  21. const buf = crypto.randomBytes(16);
  22. cb(null, Date.now() + buf.toString('hex') + path.extname(file.originalname));
  23. }
  24. });
  25.  
  26. const upload = multer({
  27. storage: storage
  28. });
  29.  
  30.  
  31. router.use(function (req, res, next) {
  32. res.locals.currentUser = req.user;
  33. res.locals.errors = req.flash("error");
  34. res.locals.infos = req.flash("info");
  35. next();
  36. });
  37.  
  38. ///////home Page
  39.  
  40. router.get("/", function (req, res, next) {
  41.  
  42. User.find({
  43. portfolio: {
  44. $not:{
  45. $size:0
  46. }
  47. }
  48. })
  49. .sort({
  50. createdAt: "ascending"//"descending"
  51. })
  52. .exec(function (err, students) { ////users
  53. if (err) {
  54. return next(err);
  55. }
  56. var totalStudents ;
  57. User.find({
  58. portfolio: {
  59. $not:{
  60. $size:0
  61. }
  62. }
  63. }).count(function(err, totalStudents){
  64. var pageSize = 10,
  65. pageCount = Math.ceil(totalStudents/10),
  66. currentPage = 1,
  67. studentsArrays = [],
  68. studentsList = [];
  69.  
  70. // console.log("totalStudents: ",totalStudents);
  71. // console.log("ALL pages: ",pageCount);
  72. //split list into groups
  73. while (students.length > 0) {
  74. studentsArrays.push(students.splice(0, pageSize));
  75. }
  76. //set current page if specifed as get variable
  77. if (typeof req.query.page !== 'undefined') {
  78. currentPage = +req.query.page;
  79. }
  80. //show list of students from group
  81. studentsList = studentsArrays[currentPage - 1];
  82. res.render("index", {
  83. // users: users,
  84. students: studentsList, //current 10 students
  85. pageSize: pageSize,
  86. totalStudents: totalStudents,
  87. pageCount: pageCount,
  88. currentPage: currentPage
  89. });
  90. });
  91. });
  92. });
  93. ////////////////////////////////////////////////////////////////////////////////
  94. function ensureAuthenticated(req, res, next) {
  95. if (req.isAuthenticated()) {
  96. next();
  97. } else {
  98. req.flash("info", "You must be logged in to see this page.");
  99. res.redirect("/login");
  100. }
  101. }
  102.  
  103. router.post("/login", passport.authenticate("login", {
  104. successRedirect: "/",
  105. failureRedirect: "/login",
  106. failureFlash: true
  107. }));
  108. router.get("/logout", function (req, res) {
  109. req.logout();
  110. res.redirect("/");
  111. });
  112. router.get("/signup", function (req, res) {
  113. res.render("signup");
  114. });
  115. router.get("/login", function (req, res) {
  116. res.render("login");
  117. });
  118. router.post("/signup", function (req, res, next) {
  119. var username = req.body.username;
  120. var password = req.body.password;
  121. User.findOne({
  122. username: username
  123. }, function (err, user) {
  124. if (err) {
  125. return next(err);
  126. }
  127. if (user) {
  128. req.flash("error", "User already exists");
  129. return res.redirect("/signup");
  130. }
  131. var newUser = new User({
  132. username: username,
  133. password: password
  134. });
  135. newUser.save(next);
  136. req.flash("info", "Registered Successfully!");
  137. });
  138. }, passport.authenticate("login", {
  139. successRedirect: "/",
  140. failureRedirect: "/signup",
  141. failureFlash: true
  142. }));
  143. router.get("/users/:username", function (req, res, next) {
  144. User.findOne({
  145. username: req.params.username
  146. }).populate("portfolio").exec(function (err, user) {
  147. if (err) {
  148. return next(err);
  149. }
  150. if (!user) {
  151. return next(404);
  152. }
  153. // console.log
  154. console.log(user);
  155. res.render("profile", {
  156. user: user
  157. });
  158. });
  159. });
  160.  
  161.  
  162. router.get("/edit", ensureAuthenticated, function (req, res) {
  163. res.render("edit");
  164. });
  165. router.post("/edit",upload.any(), ensureAuthenticated, function (req, res, next) {
  166. req.user.displayName = req.body.displayname;
  167. req.user.bio = req.body.bio;
  168. if (req.files[0]) {
  169. req.user.profilePicture=req.files[0].filename;
  170. }
  171. req.user.save(function (err) {
  172. if (err) {
  173. next(err);
  174. return;
  175. }
  176. req.flash("info", "Profile updated!");
  177. res.redirect("/users/"+req.user.username);
  178. });
  179. });
  180.  
  181. /////PORTFOLIO SECTION!
  182. router.get("/createfolio", ensureAuthenticated, function (req, res) {
  183. res.render("createfolio");
  184. });
  185.  
  186. router.post("/createfolio", upload.any(), ensureAuthenticated, function (req, res, next) {
  187. req.user.realName=req.body.rname;
  188. const file = req.files[0];
  189. new portfolio({
  190. type: false ,
  191. value: req.files[0].filename
  192. }).save((err, data) =>{
  193. if(err){
  194. throw err;
  195. }
  196. req.user.portfolio.push(data);
  197. req.user.save((err) =>{
  198. console.log('GD');
  199. return res.json('Working');
  200. })
  201. });
  202. });
  203.  
  204. router.get("/addwork", ensureAuthenticated, function (req, res) {
  205. res.render("addwork");
  206. });
  207.  
  208. router.post("/addwork", upload.any(), ensureAuthenticated, function (req, res, next) {
  209. if(req.body.link){
  210. var f= new portfolio(
  211. {type: true, value: req.body.link}
  212. );
  213. req.user.portfolio.push( f );
  214. console.log("LINK:",req.body.link);
  215. }
  216.  
  217. if(req.files[0]){
  218. var f2= new portfolio({
  219. type: false,
  220. value: req.files[0].filename,
  221. });
  222. req.user.portfolio.push( f2 );
  223. console.log("SCREENSHOT:",req.files[0].filename);
  224. console.log("f2value,",
  225. f2.value);
  226. }
  227.  
  228. req.user.save(function (err) {
  229. if (err) {
  230. next(err);
  231. return;
  232. }
  233. req.flash("info", "Your work was successfully added!");
  234. res.redirect("/users/"+req.user.username);
  235. });
  236. });
  237.  
  238.  
  239. module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement