Advertisement
Guest User

Untitled

a guest
Nov 8th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.97 KB | None | 0 0
  1. //database.js
  2. var fs = require('fs');
  3. var uuid = require('uuid/v1');
  4. var bcrypt = require('bcrypt-nodejs');
  5.  
  6. module.exports = function(db) {
  7.  
  8. db.on('error',function(err) {
  9. console.log(err);
  10. db = require('mysql')
  11. .createConnection(require('../dbinfo.json'));
  12. require('./database')(db);
  13. });
  14.  
  15. // Create uuid
  16. createUuid = function() {
  17. var id = uuid();
  18. while(id.includes('-'))id = id.replace('-','');
  19. return id;
  20. }
  21.  
  22. // Get all user data
  23. getUserByID = function (id,cb) {
  24. db.query('select * from user where id = ?',
  25. [id], function(err,result) {
  26. if(err)console.log(err);
  27. cb(result[0]);
  28. });
  29. }
  30.  
  31. // Get user profile image
  32. getProfilePictureByID = function(id,cb) {
  33. db.query('select profile_image from user where id = ?',
  34. [id,id],function(err,result) {
  35. if(err)console.log(err);
  36. console.log(result);
  37. cb(result);
  38. });
  39. }
  40.  
  41. // Upload profile picture
  42. uploadProfilePictureByID = function(id,filedata,cb) {
  43. db.query('update user set profile_image = ?, where id = ?',
  44. [filedata,filedata.length,id],function(err,result) {
  45. if(err)console.log(err);
  46. cb(result);
  47. });
  48. }
  49.  
  50. // Create post
  51. createPost = function(user_id,course_id,post_text,fileArr,cb) {
  52. var post_id = createUuid();
  53. // creates the post
  54. db.query('insert into post (id,user_id,course_id,post_text,post_date,post_status) values (?,?,?,?,?,?)',
  55. [post_id,user_id,course_id,post_text,new Date().toLocaleString(),'pending'],function(err,results){
  56. if(err) console.log(err); else {
  57. console.log("Post Created");
  58. fileArr.forEach(function(file) {
  59. console.log("File Created");
  60. fs.readFile(file.path,function(err,data) {
  61. db.query('insert into file(id,post_id,file_name,file_size,file_type,file_data) values(?,?,?,?,?,?)',
  62. [createUuid(),post_id,file.name,file.size,file.type,data],
  63. function(err,results) {
  64. if(err) console.log(err);
  65. // Removes file from temp_uploads
  66. fs.unlinkSync(file.path);
  67. });
  68. });
  69. });
  70. } cb();
  71. });
  72. }
  73.  
  74. // check if user is admin
  75. checkIfAdmin = function(user_id,cb) {
  76.  
  77. }
  78.  
  79. // check if user is admin or mod
  80. checkIfAdminOrMod = function(user_id,cb) {
  81.  
  82. }
  83.  
  84. // get the courses that the user is following
  85. getUserCourses = function(user_id,cb) {
  86. db.query('select * from course, (' +
  87. 'select * from followed where user_id = ?) c ' +
  88. 'where course.id = c.course_id',
  89. [user_id],function(err,result){
  90. if(err) console.log(err);
  91. else cb(result);
  92. });
  93. }
  94.  
  95. // Posts for the courses that the user is following
  96. getUserViewPosts = function(user_id,cb) {
  97.  
  98. }
  99.  
  100. // For admin/mod use only
  101. getAllPendingPosts = function(cb) {
  102.  
  103. }
  104.  
  105. //For admin/mod use only
  106. getAllPost = function(cb) {
  107.  
  108. }
  109.  
  110. //For admin/mod use only
  111. acceptPost = function(post_id,cb) {
  112.  
  113. }
  114.  
  115. //For admin/mod use only
  116. declinePost = function(post_id,cb) {
  117.  
  118. }
  119.  
  120. //For admin/mod use only
  121. suspendUser = function(user_id,suspend_length,cb) {
  122.  
  123. }
  124.  
  125. // For admin/mod use only
  126. banUser = function(user_id,cb) {
  127.  
  128. }
  129.  
  130. removeUserSession = function(user_id, cb) {
  131.  
  132. }
  133.  
  134. // Register User Information
  135. register = function (firstname,lastname,email,password,type,cb) {
  136. var id = createUuid();
  137. db.query('insert into user(id,firstname,lastname,email,password,profile_desc,acc_type,acc_status) values(?,?,?,?,?,?,?,?)',
  138. [id,firstname.trim(),lastname.trim(),email,bcrypt.hashSync(password, null, null),"",type,"active"],
  139. function(err, result) {
  140. if(err){
  141. console.log(err);
  142. } else cb(id);
  143. });
  144. }
  145.  
  146. // Validate the Login information
  147. login = function (email,password,cb) {
  148. db.query('select id from user where email = ?',
  149. [email],//,bcrypt.hashSync(password, null, null)
  150. function(err, result) {
  151. if(err)console.log(err);
  152. else cb(result[0]);
  153. });
  154. }
  155. }
  156.  
  157. // app/routes.js
  158.  
  159. var fs = require('fs');
  160. var path = require('path');
  161.  
  162. module.exports = function(app, io, db, passport) {
  163.  
  164. app.get('/profile', function (req,res) {
  165. res.redirect("/");
  166. });
  167.  
  168. app.get('/department', function (req,res) {
  169. res.render("department")
  170. });
  171.  
  172. app.get('/search', function (req,res) {
  173. if(req.query.q != undefined) {
  174. data = req.query.q.split(" ");
  175. console.log(data)
  176. res.render("search");
  177. } else res.render("search-blank");
  178. });
  179.  
  180. app.get('/profile_image/:uid', function (req,res) {
  181. uid = req.params.uid;
  182. if(req.isAuthenticated())
  183. getProfilePictureByID(uid,function(result) {
  184. if(result[0].profile_image) {
  185. console.log()
  186. res.setHeader('Content-disposition', 'attachment; filename=profile.svg');
  187. res.send(result[0].profile_image);
  188. } else res.status(404).end();
  189. });
  190. });
  191.  
  192. app.get('/', function (req,res) {
  193. if(req.isAuthenticated()) {
  194. getUserCourses(req.user.id,function(courses) {
  195. res.render('home', {
  196. user: req.user,
  197. courses: courses
  198. // myPosts: {},
  199. // savedPosts: {},
  200. // interests: {},
  201. // notifications: {},
  202. // posts: {}
  203. });
  204. });
  205.  
  206. }else{
  207. res.render('auth',{});
  208. }
  209. });
  210.  
  211. app.post('/login', function(req, res) {
  212. var email = req.fields.email,
  213. password = req.fields.password;
  214. login(email,password,function(result) {
  215. if(result != undefined) {
  216. id = result.id;
  217. req.login(id, function(err) {
  218. if(err)console.log(err);
  219. res.redirect('/');
  220. });
  221. } else {
  222. req.flash('alert alert-danger',
  223. '<b>Sorry!</b> Incorrect login information.');
  224. res.redirect('/');
  225. }
  226. });
  227. });
  228.  
  229. app.post('/register', function(req,res) {
  230. var firstname = req.fields.first_name || '',
  231. lastname = req.fields.last_name || '',
  232. email = req.fields.email || '',
  233. password = req.fields.password || '',
  234. type = 'general';
  235.  
  236. // validate here
  237. if(firstname != "" && lastname != "" && email != "" && password != "")
  238. register(firstname,lastname,email,password,type,function(id) {
  239. if(id != undefined) {
  240. req.login(id,
  241. function(err) {
  242. if(err) console.log(err);
  243. res.redirect('/');
  244. });
  245. } else {
  246. req.flash('alert alert-danger','Incorrect login information.');
  247. res.redirect('/');
  248. }
  249. }); else {
  250. req.flash('alert alert-danger','Missing information');
  251. res.redirect('/');
  252. }
  253. });
  254.  
  255. app.post('/post', function(req, res) {
  256. if(!req.isAuthenticated()) res.redirect('/');
  257.  
  258. var fileArr = [];
  259. if(req.files.fileAttachments.length)
  260. fileArr = req.files.fileAttachments;
  261. else fileArr.push(req.files.fileAttachments);
  262. numFiles = fileArr.length;
  263.  
  264. //course name, post text, file-arr, user-id
  265. createPost(req.user.id,req.fields.course,req.fields.post_text,fileArr,function(){
  266. res.redirect("/");
  267. //for(var i = 0; i < fileArr.length; i++)
  268.  
  269. });
  270.  
  271.  
  272. });
  273.  
  274. app.get('/infolog',function(req,res) {
  275. //Check if admin/mod
  276. if(req.isAuthenticated())
  277. data = JSON.stringify(req.user,null,4);
  278. else data = "You are not authenticated"
  279. res.set('Content-Type', 'application/json');
  280. res.send(data);
  281. });
  282.  
  283. app.get('/logout', function(req, res) {
  284. if(req.isAuthenticated())
  285. req.logout();
  286. res.redirect('/');
  287. });
  288.  
  289. passport.serializeUser((user, done) => {
  290. done(null, user)
  291. });
  292.  
  293. passport.deserializeUser((id, done) => {
  294. getUserByID(id,function(result) {
  295. done(null, result);
  296. });
  297. });
  298. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement