router.post('/ticket_delete', Validations.ensureAuthenticated, (req, res) => { let ticketID = req.body.delete_ticket_id; let deleteTicket = new Promise((resolve, reject) => { Ticket.findOneAndRemove({ _id: ticketID }, (err, ticket) => { if (err) { reject(err, ticket); } else { resolve(ticket); } }); }); deleteTicket.then(ticket => { Record.remove({ ticket_id: ticket.id }, (err, result) => { req.flash('success_msg', 'El ticket No. ' + ticket.ticketNumber + ' ha sido eliminado exitosamente'); res.redirect('/tickets/' + ticket.ticketType + '/list'); }); }); deleteTicket.catch((err, ticket) => { req.flash('error_msg', 'No se pudo eliminar el ticket. Inténtelo de nuevo más tarde.'); res.redirect('/tickets/' + ticket.ticketType + '/list'); }); });
mod.e.login = function(data,socket){ if(!socket) throw new Error("Who the hell are you?"); // Login is meaningless without a socket context. var p = new Promise(function(resolve,reject){ if(!(data.username && data.password) && !(!!data.token)) throw new Error("You need to supply a username and password."); // Check if valid user bt.dbUsers.done(function(users){ var s = {}; if(data.token) s.token = data.token; if(data.username) s.username = data.username; console.log("OK with",data); users.findOne(s,function(err,undressed){ if(err) throw err; if(undressed){ // Now we need to check the password. Take the salt from the user we found, // and append it to the password provided. Hash it, the compare to the password // hash. var salt = undressed.salt || ""; // If we dont have a salt that isnt an "error" really, its just bad. // No salt here should probably generate a new one and click everything together, since we have the // plaintext password in memory for a moment. TODO for later maybe? var saltedPass = data.password + salt; var hashed = mod.hashPassword(saltedPass); if(undressed.password != hashed && undressed.token != data.token) { reject(new Error("Invalid password")); } else { mod.getDressed(undressed,data.password).done(function(dressed){ socket.profile = dressed; // track the socket var cleaned = mod.clean(socket.profile); // Clean it, but... cleaned.perms = socket.profile.perms; // we need our own perms cleaned.token = socket.profile.token; // we need our own token resolve(cleaned); // tell the sucker }); } } else { reject(new Error("No such user "+data.username)); } }); }); }); // hook events p.then(function(user){ mod.events.emit("login",socket,user); }); p.catch(function(e){ socket.profile = false; }) return p; }
form.parse(req, function (err, fields, files) { let body = fields, contacts; contacts = new Array(); contacts.push(req.user); //Adding the creator user as contact User.find({ company_id: req.company_id }, (err, users) => { for (let i = 0; i < users.length; i++) { if (!_.contains(users[i])) contacts.push(users[i]); } }); var params = { ticketNumber: req.query.ticketNumber, title: body.title, ticketType: req.query.ticketType, deadline: new Date(body.deadline.split('.')[2], body.deadline.split('.')[1], body.deadline.split('.')[0]), priority: body.priority, contacts: contacts, description: body.description, categories: categories, status: "pending", created_by: req.user.id, modified_by: req.user.id } console.log('-req.user.store_id->, ', JSON.stringify(req.user,null,2)); if (req.user.userRole != 'storeEmployee') { params.store_id = body.store; } else { params.store_id = req.user.store_id; } // console.log('params: '+JSON.stringify(params)); var newTicket = new Ticket(params); var ticket_promise = new Promise((resolve, reject) => { Ticket.createTicket(newTicket, (err, ticket) => { if (err) reject(err) else resolve(ticket) }); }); ticket_promise.then(ticket => { new Event({ eventNumber: Math.floor(Math.random() * (99999 - 1 + 1)) + 1, text: ticket.ticketNumber + ";" + ticket.title + ";" + Validations.getLabelESP(ticket.status) + ";" + Validations.getPriorityESP(ticket.priority) + ";" + ticket.advance, start_date: new Date(), end_date: new Date(), ticket_id: ticket.id, created_by: req.user }).save((err, event) => { if (err) console.log(err); else { // console.log('event saved: '+JSON.stringify(event)); (user.userRole === "storeAdmin") ? storeAdminSW = true : storeAdminSW = false; res.redirect('/tickets/new/success?ticketType=' + req.query.ticketType); } }); }); ticket_promise.catch(err => { console.log('error: ' + err); req.flash('error_msg', 'Ha habido un problema al crear el ticket.'); res.redirect('/tickets/new/failed?ticketType=' + req.query.ticketType); }) })
var Promise = require('promise'); var promise = new Promise(function(resolve,reject){ reject(new Error("出错了")); }); promise.catch(function(error) { console.error(error); }); Promise.reject(new Error("出错了")).catch(function(error) { console.error(error); });