diff --git a/app/services/ConvsServ.js b/app/services/ConvsServ.js index ab240f8..22ad990 100644 --- a/app/services/ConvsServ.js +++ b/app/services/ConvsServ.js @@ -1,87 +1,91 @@ var ConvModl = require('../models/ConvModl'); -var MessServ = require('../services/MessServ'); +var DosssServ = require('../services/DosssServ'); var async = require('async'); -var ConvsServ = {}; +var ConvsServ = module.exports = { -ConvsServ.simple = ['_id', 'titre', 'parent', 'hidden']; + simple: ['_id', 'titre', 'parent', 'hidden'], -ConvsServ.simpleData = function (convD, cb) { - // TODO Démarré par - // TODO Dernier message - var conv = {}; - for (var prop of ConvsServ.simple) { - conv[prop] = convD[prop]; - } - cb(null, conv); -}; - -ConvsServ.detailedData = function (convD, cb) { - async.parallel([ - function (cba) { - var conv = {}; - for (var prop of ConvsServ.simple) { - conv[prop] = convD[prop]; - } - cba(null, conv); - }, - function (cba) { - MessServ.children(convD._id, function (err, children) { + simpleData: function (convD, cb) { + // TODO Démarré par + // TODO Dernier message + var conv = {}; + for (var prop of ConvsServ.simple) { + conv[prop] = convD[prop]; + } + cb(null, conv); + }, - if (err) { - cba(err); - } else { - async.map(children, MessServ.simpleData, cba); + detailedData: function (convD, cb) { + async.parallel([ + function (cba) { + var conv = {}; + for (var prop of ConvsServ.simple) { + conv[prop] = convD[prop]; } - }); - } - ], function (err, res) { - if (err) { - cb(err); - } else { - conv = res[0]; - conv.messs = res[1]; + cba(null, conv); + }, + function (cba) { + MessServ = require('../services/MessServ') + MessServ.children(convD._id, function (err, children) { + if (err) { + cba(err); + } else { + async.map(children, MessServ.simpleData, cba); + } + }); + } + ], function (err, res) { + if (err) { + cb(err); + } else { + conv = res[0]; + conv.messs = res[1]; - cb(null, conv); - } - }); -}; + cb(null, conv); + } + }); + }, -ConvsServ.get = function (id, cb) { - ConvModl.findById(id, cb); -}; + get: function (id, cb) { + ConvModl.findById(id, cb); + }, -ConvsServ.children = function (id, cb) { // Conversations filles du dossier en paramètre - ConvModl.find({ - parent: id, - $or: [{ - hidden: false - }, { - hidden: undefined - }] - }, cb); -}; + children: function (id, cb) { // Conversations filles du dossier en paramètre + ConvModl.find({ + parent: id, + $or: [{ + hidden: false + }, { + hidden: undefined + }] + }, cb); + }, -ConvsServ.assert = function (conv, cb) { - cb(null, conv.titre, conv.parent); -}; + assert: function (conv, cb) { + cb(null, conv.titre, conv.parent); + }, -ConvsServ.add = function (data, cb) { - ConvModl.create({ - titre: data.titre, - parent: data.parent - }, cb); -}; + add: function (data, cb) { + ConvModl.create({ + titre: data.titre, + parent: data.parent + }, cb); + }, -ConvsServ.remove = function (id, cb) { - async.waterfall([function (cba) { - ConvsServ.get(id, cba); - }, function (conv, cba) { - cba(conv ? null : 'notfound', conv); - }, function (conv, cba) { - conv.parent = 'trash'; - conv.save(cba); - }], cb); + remove: function (id, cb) { + async.waterfall([function (cba) { + ConvsServ.get(id, cba); + }, function (conv, cba) { + cba(conv ? null : 'notfound', conv); + }, function (conv, cba) { + DosssServ.get('trash', function (err, trash) { + console.log(21, trash); + cba(err, conv, trash); + }); + }, function (conv, trash, cba) { + conv.parent = trash._id; + conv.save(cba); + }], cb); + } }; - -module.exports = ConvsServ; diff --git a/app/services/DecryptServ.js b/app/services/DecryptServ.js index 879f42f..e52acff 100644 --- a/app/services/DecryptServ.js +++ b/app/services/DecryptServ.js @@ -1,36 +1,37 @@ var ursa = require('ursa'); var fs = require('fs'); -var DecryptServ = {}; +var DecryptServ = { -DecryptServ.decrypter = false; + decrypter: false, -DecryptServ.whenOk = function (cb) { - if (this.encrypter) { - cb(); - } else { - this.prepare(cb); - } -}; - -DecryptServ.prepare = function (cb) { - fs.readFile('config/ci_com.pem', function (err, data) { - if (err) { - throw err; + whenOk: function (cb) { + if (this.encrypter) { + cb(); + } else { + this.prepare(cb); } - this.decrypter = ursa.createPrivateKey(data); - cb(); - }); -}; + }, -DecryptServ.preload = function (cb) { - this.whenOk(cb); -}; + prepare: function (cb) { // TODO Juste charger au lancement du script + fs.readFile('config/ci_com.pem', function (err, data) { + if (err) { + throw err; + } + this.decrypter = ursa.createPrivateKey(data); + cb(); + }); + }, + + preload: function (cb) { + this.whenOk(cb); + }, -DecryptServ.decrypt = function (string, cb) { - this.whenOk(function () { - cb(this.decrypter.decrypt(string, 'base64', 'utf8', ursa.RSA_PKCS1_PADDING)); - }); + decrypt: function (string, cb) { + this.whenOk(function () { + cb(this.decrypter.decrypt(string, 'base64', 'utf8', ursa.RSA_PKCS1_PADDING)); + }); + } }; module.exports = DecryptServ; diff --git a/app/services/DosssServ.js b/app/services/DosssServ.js index 03f9728..34b63c0 100644 --- a/app/services/DosssServ.js +++ b/app/services/DosssServ.js @@ -1,9 +1,6 @@ var DossModl = require('../models/DossModl'); -var ConvsServ = require('../services/ConvsServ'); var async = require('async'); -var DosssServ = {}; - (function init() { DossModl.find({ special: 'root' @@ -27,107 +24,112 @@ var DosssServ = {}; }); })(); -DosssServ.simple = ['_id', 'titre', 'parent', 'special', 'hidden']; - -DosssServ.simpleData = function (dossD, cb) { - var doss = {}; - for (var prop of DosssServ.simple) { - doss[prop] = dossD[prop]; - } - // TODO Dernier message - cb(null, doss); -}; +var DosssServ = module.exports = { + simple: ['_id', 'titre', 'parent', 'special', 'hidden'], -DosssServ.detailedData = function (dossD, cb) { - async.parallel([ - function (cba) { - var doss = {}; - for (var prop of DosssServ.simple) { - doss[prop] = dossD[prop]; - } - cba(null, doss); - }, - function (cba) { - DosssServ.children(dossD._id, function (err, children) { - if (err) { - cba(err); - } else { - async.map(children, DosssServ.simpleData, cba); - } - }); - }, - function (cba) { - ConvsServ.children(dossD._id, function (err, children) { - if (err) { - cba(err); - } else { - async.map(children, ConvsServ.simpleData, cba); - } - }); + simpleData: function (dossD, cb) { + var doss = {}; + for (var prop of DosssServ.simple) { + doss[prop] = dossD[prop]; } - ], function (err, res) { - if (err) { - cb(err); - } else { - doss = res[0]; - doss.dosss = res[1]; - doss.convs = res[2]; - cb(null, doss); - } - }); -}; + // TODO Dernier message + cb(null, doss); + }, + -DosssServ.get = function (special, cb) { - console.log(special); - DossModl.findById(special).exec(function (err, doss) { - if (!err && doss) { - cb(null, doss); - } else { - DossModl.findOne({ - special: special - }).exec(function (err2, doss) { - if (err2) { - cb(err); - } else { - cb(null, doss ? doss : null); + detailedData: function (dossD, cb) { + async.parallel([ + function (cba) { + var doss = {}; + for (var prop of DosssServ.simple) { + doss[prop] = dossD[prop]; } - }); - } - }); -}; + cba(null, doss); + }, + function (cba) { + DosssServ.children(dossD._id, function (err, children) { + if (err) { + cba(err); + } else { + async.map(children, DosssServ.simpleData, cba); + } + }); + }, + function (cba) { + ConvsServ = require('../services/ConvsServ'); + ConvsServ.children(dossD._id, function (err, children) { + if (err) { + cba(err); + } else { + async.map(children, ConvsServ.simpleData, cba); + } + }); + } + ], function (err, res) { + if (err) { + cb(err); + } else { + doss = res[0]; + doss.dosss = res[1]; + doss.convs = res[2]; + cb(null, doss); + } + }); + }, -DosssServ.children = function (id, cb) { - DossModl.find({ - parent: id, - $or: [{ - hidden: false - }, { - hidden: undefined - }] - }, cb); -}; + get: function (special, cb) { + DossModl.findById(special).exec(function (err, doss) { + if (!err && doss) { + cb(null, doss); + } else { + DossModl.findOne({ + special: special + }).exec(function (err2, doss) { + if (err2) { + cb(err); + } else { + cb(null, doss ? doss : null); + } + }); + } + }); + }, -DosssServ.assert = function (data, cb) { - cb(data.titre && data.parent); -}; + children: function (id, cb) { + DossModl.find({ + parent: id, + $or: [{ + hidden: false + }, { + hidden: undefined + }] + }, cb); + }, -DosssServ.add = function (data, cb) { - DossModl.create({ - titre: data.titre, - parent: data.parent - }, cb); -}; + assert: function (data, cb) { + cb(null, data.titre && data.parent); + }, -DosssServ.remove = function (id, cb) { - async.waterfall([function (cba) { - DosssServ.get(id, cba); - }, function (doss, cba) { - cba(doss ? null : 'notfound', doss); - }, function (doss, cba) { - doss.parent = 'trash'; - doss.save(cba); - }], cb); -}; + add: function (data, cb) { + DossModl.create({ + titre: data.titre, + parent: data.parent + }, cb); + }, -module.exports = DosssServ; + remove: function (id, cb) { + async.waterfall([function (cba) { + DosssServ.get(id, cba); + }, function (doss, cba) { + cba(doss ? null : 'notfound', doss); + }, function (doss, cba) { + DosssServ.get('trash', function (err, trash) { + cba(err, doss, trash); + }); + }, function (doss, trash, cba) { + doss.parent = trash._id; + doss.save(cba); + }], cb); + } +}; diff --git a/app/services/MembresServ.js b/app/services/MembresServ.js index af66b90..802ee5e 100644 --- a/app/services/MembresServ.js +++ b/app/services/MembresServ.js @@ -2,105 +2,103 @@ var MembreModl = require('../models/MembreModl'); var PolyUserServ = require('../services/PolyUserServ'); var async = require('async'); -var MembresServ = {}; - -MembresServ.public = ['_id', 'login', 'role']; - -MembresServ.simpleData = function (membreD, cb) { - async.parallel([ - function (cba) { - var membre = {}; - for (var prop of MembresServ.public) { - membre[prop] = membreD[prop]; +var MembresServ = module.exports = { + + public: ['_id', 'login', 'role'], + + simpleData: function (membreD, cb) { + async.parallel([ + function (cba) { + var membre = {}; + for (var prop of MembresServ.public) { + membre[prop] = membreD[prop]; + } + + cba(null, membre); + }, + function (cba) { + PolyUserServ.get(membreD.login, cba); + }, + function (cba) { + MembresServ.estMembre(membreD.login, cba); + }, + function (cba) { + MembresServ.estBureau(membreD.login, cba); } - - cba(null, membre); - }, - function (cba) { - PolyUserServ.get(membreD.login, cba); - }, - function (cba) { - MembresServ.estMembre(membreD.login, cba); - }, - function (cba) { - MembresServ.estBureau(membreD.login, cba); - } - ], function (err, res) { - if (err) { - cb(err); - } else { - membre = res[0]; - - membre.nom = res[1].nom; - membre.section = res[1].section; - membre.membre = res[2]; - membre.bureau = res[3]; - cb(null, membre); - } - }); -}; - -MembresServ.get = function (id, cb) { - MembreModl.findById(id, cb); -}; - -MembresServ.getLogin = function (login, cb) { - MembreModl.findOne({ - login: login - }, cb); -}; - -MembresServ.list = function (cb) { - MembreModl.find({ - $or: [{ - hidden: false - }, { - hidden: undefined - }] - }, cb); -}; - -MembresServ.assert = function (membre, cb) { - - cb(null, membre.login && membre.role); -}; - -MembresServ.add = function (data, cb) { - - MembreModl.create({ - login: data.login, - role: data.role - }, cb); -}; - -MembresServ.remove = function (id, cb) { - MembreModl.remove({ - _id: id - }, cb); -}; - -MembresServ.estMembre = function (login, cb) { - MembreModl.findOne({ - login: login - }, function (err, data) { - if (!err && data) { - cb(null, true); - } else { - cb(null, false); - } - }); -}; - -MembresServ.estBureau = function (login, cb) { - MembreModl.findOne({ - login: login - }, function (err, data) { - if (!err && data && ['Président', 'Vice-président', 'Trésorier', 'Secrétaire'].indexOf(data.role) > -1) { - cb(null, true); - } else { - cb(null, false); - } - }); + ], function (err, res) { + if (err) { + cb(err); + } else { + membre = res[0]; + membre.nom = res[1].nom; + membre.section = res[1].section; + membre.membre = res[2]; + membre.bureau = res[3]; + cb(null, membre); + } + }); + }, + + get: function (id, cb) { + MembreModl.findById(id, cb); + }, + + getLogin: function (login, cb) { + MembreModl.findOne({ + login: login + }, cb); + }, + + list: function (cb) { + MembreModl.find({ + $or: [{ + hidden: false + }, { + hidden: undefined + }] + }, cb); + }, + + assert: function (membre, cb) { + + cb(null, membre.login && membre.role); + }, + + add: function (data, cb) { + + MembreModl.create({ + login: data.login, + role: data.role + }, cb); + }, + + remove: function (id, cb) { + MembreModl.remove({ + _id: id + }, cb); + }, + + estMembre: function (login, cb) { + MembreModl.findOne({ + login: login + }, function (err, data) { + if (!err && data) { + cb(null, true); + } else { + cb(null, false); + } + }); + }, + + estBureau: function (login, cb) { + MembreModl.findOne({ + login: login + }, function (err, data) { + if (!err && data && ['Président', 'Vice-président', 'Trésorier', 'Secrétaire'].indexOf(data.role) > -1) { + cb(null, true); + } else { + cb(null, false); + } + }); + } }; - -module.exports = MembresServ; diff --git a/app/services/MessServ.js b/app/services/MessServ.js index 0a21968..114c744 100644 --- a/app/services/MessServ.js +++ b/app/services/MessServ.js @@ -2,84 +2,83 @@ var MessModl = require('../models/MessModl'); var MembresServ = require('../services/MembresServ'); var async = require('async'); -var MesssServ = {}; +var MesssServ = module.exports = { -MesssServ.simple = ['_id', 'login', 'content', 'conv', 'date', 'hidden']; + simple: ['_id', 'login', 'content', 'conv', 'date', 'hidden'], -MesssServ.simpleData = function (messD, cb) { + simpleData: function (messD, cb) { - async.parallel([ - function (cba) { - var mess = {}; - for (var prop of MesssServ.simple) { - mess[prop] = messD[prop]; - } - cba(null, mess); - }, - function (cba) { - async.waterfall([ - function (cbaa) { - - MembresServ.getLogin(messD.login, cbaa); - }, - function (membre, cbaa) { - MembresServ.simpleData(membre, cbaa); + async.parallel([ + function (cba) { + var mess = {}; + for (var prop of MesssServ.simple) { + mess[prop] = messD[prop]; } - ], cba); - } - ], function (err, res) { - if (err) { - cb(err); - } else { - mess = res[0]; - mess.auteur = res[1]; - cb(null, mess); - } - }); -}; + cba(null, mess); + }, + function (cba) { + async.waterfall([ + function (cbaa) { -MesssServ.get = function (id, cb) { - MessModl.findById(id, cb); -}; + MembresServ.getLogin(messD.login, cbaa); + }, + function (membre, cbaa) { + MembresServ.simpleData(membre, cbaa); + } + ], cba); + } + ], function (err, res) { + if (err) { + cb(err); + } else { + mess = res[0]; + mess.auteur = res[1]; + cb(null, mess); + } + }); + }, -MesssServ.children = function (conv, cb) { - MessModl.find({ - conv: conv, - $or: [{ - hidden: false - }, { - hidden: undefined - }] - }, cb); -}; + get: function (id, cb) { + MessModl.findById(id, cb); + }, -MesssServ.assert = function (mess, cb) { - cb(null, mess.login && mess.content && mess.conv); -}; + children: function (conv, cb) { + MessModl.find({ + conv: conv, + $or: [{ + hidden: false + }, { + hidden: undefined + }] + }, cb); + }, -MesssServ.add = function (data, cb) { - MessModl.create({ - content: data.content, - login: data.login, - conv: data.conv - }, cb); -}; + assert: function (mess, cb) { + cb(null, mess.login && mess.content && mess.conv); + }, -MesssServ.edit = function (mess, data, cb) { - mess.content = data.content; - // TODO Edit date - mess.save(cb); -}; + add: function (data, cb) { + MessModl.create({ + content: data.content, + login: data.login, + conv: data.conv + }, cb); + }, -MesssServ.remove = function (id, cb) { - async.waterfall([function (cba) { - MesssServ.get(id, cba); - }, function (mess, cba) { - cba(mess ? null : 'notfound', mess); - }, function (mess, cba) { - mess.hidden = true; - mess.save(cba); - }], cb); -}; + edit: function (mess, data, cb) { + mess.content = data.content; + // TODO Edit date + mess.save(cb); + }, -module.exports = MesssServ; + remove: function (id, cb) { + async.waterfall([function (cba) { + MesssServ.get(id, cba); + }, function (mess, cba) { + cba(mess ? null : 'notfound', mess); + }, function (mess, cba) { + mess.hidden = true; + mess.save(cba); + }], cb); + } +}; diff --git a/app/services/PolyUserServ.js b/app/services/PolyUserServ.js index 14b0f90..4bba105 100644 --- a/app/services/PolyUserServ.js +++ b/app/services/PolyUserServ.js @@ -8,132 +8,131 @@ var cache = new NodeCache({ stdTTL: 24 * 60 * 60 }); -var PolyUserServ = {}; +var PolyUserServ = module.exports = { -PolyUserServ.readPasswd = function (login, cb) { - passwdF = 'config/passwd'; - fs.readFile(passwdF, function (err, file) { - if (err) { - cb(err); - } else { - lines = file.toString('utf8').split('\n'); - async.detect(lines, function (line, cba) { - ex = line.split(':'); - cba(ex[0] == login); - }, function (res) { - if (res) { - ex = res.split(':'); - cb(null, { - 'username': ex[0], - 'password': ex[1], - 'UID': ex[2], - 'GID': ex[3], - 'GECOS': ex[4], - 'home': ex[5], - 'shell': ex[6] - }); - } else { - cb(null, null); - } - }); - } - }); -}; + readPasswd: function (login, cb) { + passwdF = 'config/passwd'; + fs.readFile(passwdF, function (err, file) { + if (err) { + cb(err); + } else { + lines = file.toString('utf8').split('\n'); + async.detect(lines, function (line, cba) { + ex = line.split(':'); + cba(ex[0] == login); + }, function (res) { + if (res) { + ex = res.split(':'); + cb(null, { + 'username': ex[0], + 'password': ex[1], + 'UID': ex[2], + 'GID': ex[3], + 'GECOS': ex[4], + 'home': ex[5], + 'shell': ex[6] + }); + } else { + cb(null, null); + } + }); + } + }); + }, -PolyUserServ.readGroup = function (gid, cb) { - groupF = 'config/group'; - fs.readFile(groupF, function (err, file) { - if (err) { - cb(err); - } else { - lines = file.toString('utf8').split('\n'); - async.detect(lines, function (line, cba) { - ex = line.split(':'); - cba(ex[2] == gid); - }, function (res) { - if (res) { - ex = res.split(':'); - cb(null, { - 'name': ex[0], - 'password': ex[1], - 'GID': ex[2], - 'list': ex[3] + readGroup: function (gid, cb) { + groupF = 'config/group'; + fs.readFile(groupF, function (err, file) { + if (err) { + cb(err); + } else { + lines = file.toString('utf8').split('\n'); + async.detect(lines, function (line, cba) { + ex = line.split(':'); + cba(ex[2] == gid); + }, function (res) { + if (res) { + ex = res.split(':'); + cb(null, { + 'name': ex[0], + 'password': ex[1], + 'GID': ex[2], + 'list': ex[3] + }); + } else { + cb(null, null); + } + }); + } + }); + }, + + grabInfos: function (login, cb) { + async.waterfall([ + function (cba) { + PolyUserServ.readPasswd(login, cba); + }, + function (passwd, cba) { + if (passwd && passwd.GID) { + PolyUserServ.readGroup(passwd.GID, function (err, group) { + cba(err, passwd, group); }); } else { - cb(null, null); + cba(null, passwd, null); } - }); - } - }); -}; - -PolyUserServ.grabInfos = function (login, cb) { - async.waterfall([ - function (cba) { - PolyUserServ.readPasswd(login, cba); - }, - function (passwd, cba) { - if (passwd && passwd.GID) { - PolyUserServ.readGroup(passwd.GID, function (err, group) { - cba(err, passwd, group); - }); + } + ], function (err, passwd, group) { + if (err) { + cb(err); } else { - cba(null, passwd, null); + cb(null, { + nom: (passwd && passwd.GECOS) ? passwd.GECOS : login.toUpperCase(), + section: (group && group.name) ? group.name.toUpperCase() : ((passwd && passwd.GID) ? passwd.GID : 'Inconnu') + }); } - } - ], function (err, passwd, group) { - if (err) { - cb(err); - } else { - cb(null, { - nom: (passwd && passwd.GECOS) ? passwd.GECOS : login.toUpperCase(), - section: (group && group.name) ? group.name.toUpperCase() : ((passwd && passwd.GID) ? passwd.GID : 'Inconnu') - }); - } - }); -}; + }); + }, -PolyUserServ.add = function (login, cb) { - PolyUserServ.grabInfos(login, function (err, data) { - if (err) { - cb(err); - } else { - cb(null, data); - cache.set(login, data); - } - }); -}; - -PolyUserServ.get = function (login, cb) { - cache.get(login, function (err, data) { - if (err) { - cb(err); - } else { - if (data) { + add: function (login, cb) { + PolyUserServ.grabInfos(login, function (err, data) { + if (err) { + cb(err); + } else { cb(null, data); + cache.set(login, data); + } + }); + }, + + get: function (login, cb) { + cache.get(login, function (err, data) { + if (err) { + cb(err); } else { - PolyUserServ.add(login, cb); + if (data) { + cb(null, data); + } else { + PolyUserServ.add(login, cb); + } } - } - }); -}; + }); + }, -PolyUserServ.verify = function (login, pass, cb) { - var conn = new Client(); - conn.on('ready', function () { - cb(null, true); - }).on('error', function (err) { - if (err.level === 'client-authentication') { - cb(null, false); - } else { - cb(err); - } - }).connect({ - host: creds.host, - port: creds.port, - username: login, - password: pass - }); + verify: function (login, pass, cb) { + var conn = new Client(); + conn.on('ready', function () { + cb(null, true); + }).on('error', function (err) { + if (err.level === 'client-authentication') { + cb(null, false); + } else { + cb(err); + } + }).connect({ + host: creds.host, + port: creds.port, + username: login, + password: pass + }); + } }; - -module.exports = PolyUserServ; -- libgit2 0.21.2