Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //database.js
- var fs = require('fs');
- var uuid = require('uuid/v1');
- var bcrypt = require('bcrypt-nodejs');
- module.exports = function(db) {
- db.on('error',function(err) {
- console.log(err);
- db = require('mysql')
- .createConnection(require('../dbinfo.json'));
- require('./database')(db);
- });
- // Create uuid
- createUuid = function() {
- var id = uuid();
- while(id.includes('-'))id = id.replace('-','');
- return id;
- }
- // Get all user data
- getUserByID = function (id,cb) {
- db.query('select * from user where id = ?',
- [id], function(err,result) {
- if(err)console.log(err);
- cb(result[0]);
- });
- }
- // Get user profile image
- getProfilePictureByID = function(id,cb) {
- db.query('select profile_image from user where id = ?',
- [id,id],function(err,result) {
- if(err)console.log(err);
- console.log(result);
- cb(result);
- });
- }
- // Upload profile picture
- uploadProfilePictureByID = function(id,filedata,cb) {
- db.query('update user set profile_image = ?, where id = ?',
- [filedata,filedata.length,id],function(err,result) {
- if(err)console.log(err);
- cb(result);
- });
- }
- // Create post
- createPost = function(user_id,course_id,post_text,fileArr,cb) {
- var post_id = createUuid();
- // creates the post
- db.query('insert into post (id,user_id,course_id,post_text,post_date,post_status) values (?,?,?,?,?,?)',
- [post_id,user_id,course_id,post_text,new Date().toLocaleString(),'pending'],function(err,results){
- if(err) console.log(err); else {
- console.log("Post Created");
- fileArr.forEach(function(file) {
- console.log("File Created");
- fs.readFile(file.path,function(err,data) {
- db.query('insert into file(id,post_id,file_name,file_size,file_type,file_data) values(?,?,?,?,?,?)',
- [createUuid(),post_id,file.name,file.size,file.type,data],
- function(err,results) {
- if(err) console.log(err);
- // Removes file from temp_uploads
- fs.unlinkSync(file.path);
- });
- });
- });
- } cb();
- });
- }
- // check if user is admin
- checkIfAdmin = function(user_id,cb) {
- }
- // check if user is admin or mod
- checkIfAdminOrMod = function(user_id,cb) {
- }
- // get the courses that the user is following
- getUserCourses = function(user_id,cb) {
- db.query('select * from course, (' +
- 'select * from followed where user_id = ?) c ' +
- 'where course.id = c.course_id',
- [user_id],function(err,result){
- if(err) console.log(err);
- else cb(result);
- });
- }
- // Posts for the courses that the user is following
- getUserViewPosts = function(user_id,cb) {
- }
- // For admin/mod use only
- getAllPendingPosts = function(cb) {
- }
- //For admin/mod use only
- getAllPost = function(cb) {
- }
- //For admin/mod use only
- acceptPost = function(post_id,cb) {
- }
- //For admin/mod use only
- declinePost = function(post_id,cb) {
- }
- //For admin/mod use only
- suspendUser = function(user_id,suspend_length,cb) {
- }
- // For admin/mod use only
- banUser = function(user_id,cb) {
- }
- removeUserSession = function(user_id, cb) {
- }
- // Register User Information
- register = function (firstname,lastname,email,password,type,cb) {
- var id = createUuid();
- db.query('insert into user(id,firstname,lastname,email,password,profile_desc,acc_type,acc_status) values(?,?,?,?,?,?,?,?)',
- [id,firstname.trim(),lastname.trim(),email,bcrypt.hashSync(password, null, null),"",type,"active"],
- function(err, result) {
- if(err){
- console.log(err);
- } else cb(id);
- });
- }
- // Validate the Login information
- login = function (email,password,cb) {
- db.query('select id from user where email = ?',
- [email],//,bcrypt.hashSync(password, null, null)
- function(err, result) {
- if(err)console.log(err);
- else cb(result[0]);
- });
- }
- }
- // app/routes.js
- var fs = require('fs');
- var path = require('path');
- module.exports = function(app, io, db, passport) {
- app.get('/profile', function (req,res) {
- res.redirect("/");
- });
- app.get('/department', function (req,res) {
- res.render("department")
- });
- app.get('/search', function (req,res) {
- if(req.query.q != undefined) {
- data = req.query.q.split(" ");
- console.log(data)
- res.render("search");
- } else res.render("search-blank");
- });
- app.get('/profile_image/:uid', function (req,res) {
- uid = req.params.uid;
- if(req.isAuthenticated())
- getProfilePictureByID(uid,function(result) {
- if(result[0].profile_image) {
- console.log()
- res.setHeader('Content-disposition', 'attachment; filename=profile.svg');
- res.send(result[0].profile_image);
- } else res.status(404).end();
- });
- });
- app.get('/', function (req,res) {
- if(req.isAuthenticated()) {
- getUserCourses(req.user.id,function(courses) {
- res.render('home', {
- user: req.user,
- courses: courses
- // myPosts: {},
- // savedPosts: {},
- // interests: {},
- // notifications: {},
- // posts: {}
- });
- });
- }else{
- res.render('auth',{});
- }
- });
- app.post('/login', function(req, res) {
- var email = req.fields.email,
- password = req.fields.password;
- login(email,password,function(result) {
- if(result != undefined) {
- id = result.id;
- req.login(id, function(err) {
- if(err)console.log(err);
- res.redirect('/');
- });
- } else {
- req.flash('alert alert-danger',
- '<b>Sorry!</b> Incorrect login information.');
- res.redirect('/');
- }
- });
- });
- app.post('/register', function(req,res) {
- var firstname = req.fields.first_name || '',
- lastname = req.fields.last_name || '',
- email = req.fields.email || '',
- password = req.fields.password || '',
- type = 'general';
- // validate here
- if(firstname != "" && lastname != "" && email != "" && password != "")
- register(firstname,lastname,email,password,type,function(id) {
- if(id != undefined) {
- req.login(id,
- function(err) {
- if(err) console.log(err);
- res.redirect('/');
- });
- } else {
- req.flash('alert alert-danger','Incorrect login information.');
- res.redirect('/');
- }
- }); else {
- req.flash('alert alert-danger','Missing information');
- res.redirect('/');
- }
- });
- app.post('/post', function(req, res) {
- if(!req.isAuthenticated()) res.redirect('/');
- var fileArr = [];
- if(req.files.fileAttachments.length)
- fileArr = req.files.fileAttachments;
- else fileArr.push(req.files.fileAttachments);
- numFiles = fileArr.length;
- //course name, post text, file-arr, user-id
- createPost(req.user.id,req.fields.course,req.fields.post_text,fileArr,function(){
- res.redirect("/");
- //for(var i = 0; i < fileArr.length; i++)
- });
- });
- app.get('/infolog',function(req,res) {
- //Check if admin/mod
- if(req.isAuthenticated())
- data = JSON.stringify(req.user,null,4);
- else data = "You are not authenticated"
- res.set('Content-Type', 'application/json');
- res.send(data);
- });
- app.get('/logout', function(req, res) {
- if(req.isAuthenticated())
- req.logout();
- res.redirect('/');
- });
- passport.serializeUser((user, done) => {
- done(null, user)
- });
- passport.deserializeUser((id, done) => {
- getUserByID(id,function(result) {
- done(null, result);
- });
- });
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement