diff --git a/my-todolist/.gitignore b/my-todolist/.gitignore index 78f2710..aa8b37c 100644 --- a/my-todolist/.gitignore +++ b/my-todolist/.gitignore @@ -1,2 +1,3 @@ node_modules/ -.idea/ +*/.idea/ +uploads/ \ No newline at end of file diff --git a/my-todolist/.idea/workspace.xml b/my-todolist/.idea/workspace.xml index 067cc7d..b059be5 100644 --- a/my-todolist/.idea/workspace.xml +++ b/my-todolist/.idea/workspace.xml @@ -18,31 +18,31 @@ - - + + - - + + - - + + - - + + - - + + - - + + @@ -58,28 +58,48 @@ + + + + + + + + + + + + + + + + + + + + - + - + - - + + - + @@ -88,6 +108,16 @@ + + + + + + + + + + @@ -99,15 +129,23 @@ @@ -122,9 +160,9 @@ @@ -141,7 +179,7 @@ - + @@ -212,17 +250,22 @@ - + - + + + + + + @@ -320,11 +363,14 @@ + + + - @@ -336,26 +382,44 @@ - + - + - - - + - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -431,7 +447,6 @@ - @@ -464,7 +479,6 @@ - @@ -497,7 +511,6 @@ - @@ -613,47 +626,62 @@ - + + + + - - + + - - - + + - - + + - + - - - + + - + - - - + + - + + + + + + + + - + + + + + + + + + - + @@ -661,31 +689,34 @@ - - - + + + + + + - + - - + + - + - - + + - + - - + + @@ -698,26 +729,34 @@ - + - - + + - + - - + + - + + + + + + + + + - - + + diff --git a/my-todolist/app.js b/my-todolist/app.js index 3aa28d0..c3ae9e7 100644 --- a/my-todolist/app.js +++ b/my-todolist/app.js @@ -6,6 +6,11 @@ var mongoose=require('mongoose'); var validator=require('validator'); var fs= require('fs'); mongoose.connect('mongodb://localhost:27017/test'); +var user=require('./model/user'); +//nick.save(function(err){console.log('user saved successfully')}) +var morgan=require('morgan'); +var jwt=require('jsonwebtoken'); +var config=require('./config'); var urlencodedParser = bodyParser.urlencoded({ extended: false }); //var fs = require('fs'); var app = express(); @@ -16,8 +21,9 @@ var router=express.Router(); var ObjectId = require('mongodb').ObjectID; // var buf = new Buffer(1024); var id,id1=0; - var arr=[],arr1=[],arr2=[],array1=[],array=[]; + var arr=[],arr1=[],arr2=[],array1=[],array=[],arr3=[],arr4=[]; var gfs; + var token; //var myo=new Object(); /* If there is no to do list in the session, we create an empty one in the form of an array before continuing */ @@ -38,62 +44,59 @@ app.use(function(req, res, next){ if (typeof(arr1) == 'undefined'){ arr1=[]; } - next(); }); function addme(n,m,res) { - Task.find({},"-_id Todo",function(err,task){ - arr=task; - for (var i in arr) - { + //var addme=require("./Routes/addme")(n,m,res); + Task.find({}, "-_id Todo", function (err, task) { + arr = task; + for (var i in arr) { //console.log(arr[i]); - var myo=new Object(); - myo=arr[i]; - arr1[i]=myo.Todo; + var myo = new Object(); + myo = arr[i]; + arr1[i] = myo.Todo; //console.log(myo.Todo); } //console.log(arr[1]); }).skip(n).limit(m); - Task.find({},"-_id Memberassigned",function(err,task){ - arr=task; - for (var i in arr) - { + Task.find({}, "-_id Memberassigned", function (err, task) { + arr = task; + for (var i in arr) { //console.log(arr[i]); - var myo=new Object(); - myo=arr[i]; - array1[i]=myo.Memberassigned; + var myo = new Object(); + myo = arr[i]; + array1[i] = myo.Memberassigned; //console.log(myo.Todo); } // res.json(task); //array1=task }).skip(n).limit(m); - Task.find({},"_id",function(err,task){ - arr=task; - for (var i in arr) - { + Task.find({}, "_id", function (err, task) { + arr = task; + for (var i in arr) { //console.log(arr[i]); - var myo=new Object(); - myo=arr[i]; - array[i]=myo._id; + var myo = new Object(); + myo = arr[i]; + array[i] = myo._id; //console.log(myo.Todo); } // res.json(task); //array1=task }); - Task.find({},"-_id Priority",function(err,task){ + Task.find({}, "-_id Priority", function (err, task) { - arr=task; - for (var i in arr) - { + arr = task; + for (var i in arr) { //console.log(arr[i]); - var myo=new Object(); - myo=arr[i]; - arr2[i]=myo.Priority; + var myo = new Object(); + myo = arr[i]; + arr2[i] = myo.Priority; //console.log(myo.Todo); } - }).sort({KEY:1}).skip(n).limit(m); + }).sort({KEY: 1}).skip(n).limit(m); + //var Task=require(''); Step.find({},"-_id Steps",function(err,step){ arr=step.Steps; @@ -101,42 +104,85 @@ function addme(n,m,res) }); res.render('todo.ejs',{todolist:arr1, priority: array1, member:arr2,index:array}); } -/*router.get('/file/:id',function(req,res){ - var pic_id = req.param('id'); - var gfs = req.gfs; +/* +/* The to do list and the form are displayed */ +router.get('/todo', function(req, res) { + // var token = req.body.token || req.query.token || req.headers['x-access-token']; + if(token) + { + jwt.verify(token, app.get('superSecret'), function (err, decoded) { + if (err) { + return res.json({success: false, message: 'failed to authenticate token'}) + } else { + req.decoded = decoded; + next(); + } + }); + }else + {} +addme(0,10,res); +}); +router.get('/todo/login',function(req,res) { + res.render('login.ejs'); +}); +router.post('/todo/login/', + function(req,res){ + user.findOne({'name':req.body.member,'admin':true},function(err,user){ + if(!user) + { + user.findOne({'name':req.body.member,'admin':false},function(err,user){ + if(!user) { - gfs.files.find({filename: pic_id}).toArray(function (err, files) { + res.json({success:false,message:'Authentication failed.user not found'}) + }else if(user){ + if(user.password!=req.body.password) + { + res.json({success:false,message:'Authentication failed.Wrong password'}) + }} + else + { + req.session.name = user; + res.redirect('/todo/member'); + } + }); - if (err) { - res.json(err); + }else if(user){ + if(user.password!=req.body.password) + { + res.json({success:false,message:'Authentication failed.Wrong password'}) + }else{ + var token1=jwt.sign(user,app.get('supersecret'),{ + expiresInMinutes:1440 + }); + token=token1; + res.redirect('/todo') + } } - if (files.length > 0) { - var mime = 'image/jpeg'; - res.set('Content-Type', mime); - var read_stream = gfs.createReadStream({filename: pic_id}); - read_stream.pipe(res); - } else { - res.json('File Not Found'); + + }); +}); +router.get('/todo/member',function(req,res){ + Task.find({'Memberassigned':req.session.name},"-_id Priority",function(err,task){ + arr = task; + for (var i in arr) { + //console.log(arr[i]); + var myo = new Object(); + myo = arr[i]; + arr3[i] = myo.Priority; + //console.log(myo.Todo); } }); -});*/ -// router.all('/upload',function(req,res){ -// var dirname=require('path').dirname(__dirname); -// var filename=req.files.file.name; -// var type=req.files.file.mimetype; -// var read_stream=fs.creeateReadStream(dirname+'/'+path); -// var conn=req.conn; -// var Grid=require('gridfs-stream'); -// Grid.mongo=mongoose.mongo; -// gfs=Grid(conn.db); -// var writestream=gfs.createWriteStream({ -// filename:filename -// }); -// read_stream.pipe(writestream); -// }); -/* The to do list and the form are displayed */ -router.get('/todo', function(req, res) { -addme(0,10,res); + Task.find({'Memberassigned':req.session.name},"-_id Todo",function(err,task){ + arr = task; + for (var i in arr) { + //console.log(arr[i]); + var myo = new Object(); + myo = arr[i]; + arr4[i] = myo.Todo; + //console.log(myo.Todo); + } + }); + res.render("member.ejs",{prior:arr3,todo:arr4}); }); router.get('/todo/2', function(req, res) { addme(10,10,res); @@ -184,10 +230,14 @@ router.post('/todo/add/', urlencodedParser, function(req, res) { console.log(step); }); upload(req,res,function(err){ - if(err){return res.end("error uploading file")} - res.end("file is uploaded"); + if(err) { + return res.end(err); + //res.end("error uploading file")} + // res.end("file is uploaded"); - }) + } + } + ); task.save(function (err) { if (err) { @@ -249,16 +299,18 @@ router.get('/todo/delete/:id', function(req, res) { }); /* Redirects to the to do list if the page requested is not found */ app.use('/api',router); -app.use(function(req, res, next){ +app.use(function(req, res, next) { if(id1==0) { - res.redirect('/api/todo'); + res.redirect('/api/todo/login'); + } else { res.redirect('/api/todo1'); } }); - +app.set('superSecret',config.secret); +app.use(morgan('dev')); app.listen(8010); \ No newline at end of file diff --git a/my-todolist/config.js b/my-todolist/config.js new file mode 100644 index 0000000..1c344b1 --- /dev/null +++ b/my-todolist/config.js @@ -0,0 +1,4 @@ +module.exports={ + 'secret':'minal', + 'database':'mongodb://localhost:27017/test' +} \ No newline at end of file diff --git a/my-todolist/input.txt b/my-todolist/input.txt index 72a6b06..7215050 100644 --- a/my-todolist/input.txt +++ b/my-todolist/input.txt @@ -1,3 +1,36 @@ fffffffffffffffff,1,wwwwwwwwwwwwwww ffffffffft,tttttttttttttttttt,yyyyyyyyyyyyyyyyy gggggggggggg,,fffffffffffffffffffff +/*router.get('/file/:id',function(req,res){ + var pic_id = req.param('id'); + var gfs = req.gfs; + + gfs.files.find({filename: pic_id}).toArray(function (err, files) { + + if (err) { + res.json(err); + } + if (files.length > 0) { + var mime = 'image/jpeg'; + res.set('Content-Type', mime); + var read_stream = gfs.createReadStream({filename: pic_id}); + read_stream.pipe(res); + } else { + res.json('File Not Found'); + } + }); +});*/ +// router.all('/upload',function(req,res){ +// var dirname=require('path').dirname(__dirname); +// var filename=req.files.file.name; +// var type=req.files.file.mimetype; +// var read_stream=fs.creeateReadStream(dirname+'/'+path); +// var conn=req.conn; +// var Grid=require('gridfs-stream'); +// Grid.mongo=mongoose.mongo; +// gfs=Grid(conn.db); +// var writestream=gfs.createWriteStream({ +// filename:filename +// }); +// read_stream.pipe(writestream); +// }); \ No newline at end of file diff --git a/my-todolist/member.ejs b/my-todolist/member.ejs new file mode 100644 index 0000000..f87ce96 --- /dev/null +++ b/my-todolist/member.ejs @@ -0,0 +1,14 @@ + + + + + + +
    + <% prior.forEach(function(t, index1) { %> + <% todo.forEach(function(p,index2){%> + <%=p%> <%=t%> + <%})});%> +
+ + \ No newline at end of file diff --git a/my-todolist/model/user.js b/my-todolist/model/user.js new file mode 100644 index 0000000..c1501cc --- /dev/null +++ b/my-todolist/model/user.js @@ -0,0 +1,7 @@ +var mongoose=require('mongoose'); +var Schema=mongoose.Schema; +module.exports=mongoose.model('user',new Schema({ + name:String, + password:String, + admin:Boolean +})); diff --git a/my-todolist/package.json b/my-todolist/package.json index 86d5a30..597b494 100644 --- a/my-todolist/package.json +++ b/my-todolist/package.json @@ -10,7 +10,9 @@ "multer": "^1.2.1", "validator": "6.2.1", "path":"0.12.7", - "fs":"0.0.1" + "fs":"0.0.1", + "jsonwebtoken":"7.2.1", + "morgan":"1.7.0" }, "author": "Mateo21 ", "description": "A very basic to do list manager" diff --git a/my-todolist/run.js b/my-todolist/run.js new file mode 100644 index 0000000..f340592 --- /dev/null +++ b/my-todolist/run.js @@ -0,0 +1,22 @@ +/* tried event handling*/ + +var events = require('events'); + +function Door(colour) { + this.colour = colour; + events.EventEmitter.call(this); + + this.open = function() + { + this.emit('open'); + } +} + +Door.prototype.__proto__ = events.EventEmitter.prototype; + +var frontDoor = new Door('brown'); + +frontDoor.on('open', function() { + console.log('ring ring ring'); +}); +frontDoor.open(); \ No newline at end of file diff --git a/my-todolist/uploads/eae94ed0e2e5bbebd4a6b4644be0a62e b/my-todolist/uploads/eae94ed0e2e5bbebd4a6b4644be0a62e deleted file mode 100644 index 33e1e61..0000000 Binary files a/my-todolist/uploads/eae94ed0e2e5bbebd4a6b4644be0a62e and /dev/null differ diff --git a/my-todolist/views/login.ejs b/my-todolist/views/login.ejs new file mode 100644 index 0000000..4baf239 --- /dev/null +++ b/my-todolist/views/login.ejs @@ -0,0 +1,10 @@ +
+

+ +
+ +
+ +

+ +
\ No newline at end of file diff --git a/my-todolist/views/todo.ejs b/my-todolist/views/todo.ejs index c9e3827..5143112 100644 --- a/my-todolist/views/todo.ejs +++ b/my-todolist/views/todo.ejs @@ -16,7 +16,7 @@ <% priority.forEach(function(p,index2){%> <% member.forEach(function(m,index3){%> <% index.forEach(function(l,index4){%> - + <% if((index1==index2) && (index2==index3)&&(index3==index4)){%>
  • delete update <%= todo %> <%=p %> <%=m %>
  • <%}})})})});%>