From 3da67266bbc58dc31587cc6e87a5bd6853dd9143 Mon Sep 17 00:00:00 2001 From: nelo Date: Wed, 14 Jun 2017 08:54:45 +0200 Subject: [PATCH] promesa para obtener usuario --- services/client/common/models/my-model.js | 14 ++++++++++- .../methods/ticket-state/change-state.js | 23 +++++++++++-------- services/production/common/models/my-model.js | 14 ++++++++++- services/production/server/middleware.json | 12 +++++++++- .../server/middleware/currentUser.js | 13 +++++++++++ services/service/models/my-model.js | 13 +++++++++++ 6 files changed, 76 insertions(+), 13 deletions(-) create mode 100644 services/production/server/middleware/currentUser.js diff --git a/services/client/common/models/my-model.js b/services/client/common/models/my-model.js index 4d98e7f62b..bfa55efbd4 100644 --- a/services/client/common/models/my-model.js +++ b/services/client/common/models/my-model.js @@ -1,4 +1,3 @@ - module.exports = function(self) { self.setup = function() { @@ -26,7 +25,20 @@ module.exports = function(self) { for(let method in disableMethods) { //this.disableRemoteMethod(method, disableMethods[method]); } + }; + self.getUser = function() { + let loopBackContext = require('loopback-context'); + let currentUser = loopBackContext.getCurrentContext(); + let userId = currentUser.get('currentUser'); + return userId; + }; + + self.getEmployee = function() { + let app = require('../../server/server'); + let userId = self.getUser(); + let employee = app.models.Employee; + return employee.findOne({where: {userFk: userId}}); }; self.rawSql = function(query, params, cb) { diff --git a/services/production/common/methods/ticket-state/change-state.js b/services/production/common/methods/ticket-state/change-state.js index 99254bd66c..ce68022888 100644 --- a/services/production/common/methods/ticket-state/change-state.js +++ b/services/production/common/methods/ticket-state/change-state.js @@ -28,19 +28,22 @@ module.exports = function(TicketState) { }); TicketState.changeState = function(tickets, state, cb) { - changeState(tickets, state, cb); + TicketState.getEmployee().then(function(emp){ + changeState(emp, tickets, state, cb); + }); }; - var changeState = function(tickets, state, cb){ - TicketState.update(where(tickets), {"state": state}, function(error, response){ - if(!error) - cb(null, true); - cb(error); + var changeState = function(emp, tickets, state, cb){ + var inserts = []; + + tickets.forEach(function(t) { + inserts.push({ticketFk: t, stateFk: state, employeeFk: emp}); + }, this); + + TicketState.create(inserts, function(err, res){ + if(!err) + cb(null, res); }); } - var where = function(tickets){ - return {"where": {"ticketFk": {"inq": tickets } } }; - } - } \ No newline at end of file diff --git a/services/production/common/models/my-model.js b/services/production/common/models/my-model.js index 4d98e7f62b..bfa55efbd4 100644 --- a/services/production/common/models/my-model.js +++ b/services/production/common/models/my-model.js @@ -1,4 +1,3 @@ - module.exports = function(self) { self.setup = function() { @@ -26,7 +25,20 @@ module.exports = function(self) { for(let method in disableMethods) { //this.disableRemoteMethod(method, disableMethods[method]); } + }; + self.getUser = function() { + let loopBackContext = require('loopback-context'); + let currentUser = loopBackContext.getCurrentContext(); + let userId = currentUser.get('currentUser'); + return userId; + }; + + self.getEmployee = function() { + let app = require('../../server/server'); + let userId = self.getUser(); + let employee = app.models.Employee; + return employee.findOne({where: {userFk: userId}}); }; self.rawSql = function(query, params, cb) { diff --git a/services/production/server/middleware.json b/services/production/server/middleware.json index fbfff8165d..8100507708 100644 --- a/services/production/server/middleware.json +++ b/services/production/server/middleware.json @@ -28,10 +28,20 @@ "helmet#noSniff": {}, "helmet#noCache": { "enabled": false + }, + "loopback-context#per-request": { + "params": { + "enableHttpContext": true + } } }, "session": {}, - "auth": {}, + "auth": { + "loopback#token": {} + }, + "auth:after": { + "./middleware/currentUser": {} + }, "parse": {}, "routes": { "loopback#rest": { diff --git a/services/production/server/middleware/currentUser.js b/services/production/server/middleware/currentUser.js new file mode 100644 index 0000000000..6024b442ea --- /dev/null +++ b/services/production/server/middleware/currentUser.js @@ -0,0 +1,13 @@ +module.exports = function(options) { + return function storeCurrentUser(req, res, next) { + if (!req.accessToken) { + return next(); + } + let LoopBackContext = require('loopback-context'); + let loopbackContext = LoopBackContext.getCurrentContext(); + if (loopbackContext) { + loopbackContext.set('currentUser', req.accessToken.userId); + } + next(); + }; +}; diff --git a/services/service/models/my-model.js b/services/service/models/my-model.js index 4d98e7f62b..9246e02a94 100644 --- a/services/service/models/my-model.js +++ b/services/service/models/my-model.js @@ -1,3 +1,5 @@ +let loopBackContext = require('loopback-context'); +let app = require('../../server/server'); module.exports = function(self) { @@ -26,7 +28,18 @@ module.exports = function(self) { for(let method in disableMethods) { //this.disableRemoteMethod(method, disableMethods[method]); } + }; + self.getUser = function() { + let currentUser = loopBackContext.getCurrentContext(); + let userId = currentUser.get('currentUser'); + return userId; + }; + + self.getEmployee = function() { + let userId = self.getUser(); + let employee = app.models.Employee; + return employee.findOne({where: {userFk: userId}}); }; self.rawSql = function(query, params, cb) {