Example #1
0
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');
	});
});
Example #2
0
	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;
	}
Example #3
0
	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);
		})
	})
Example #4
0
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);
});