diff --git a/src/libs/app.js b/src/libs/app.js
index 1184e1e026ac6d17e79a90e975d273f1a700f918..c444c924092a5b0da685c0f592c51b0d287e6614 100644
--- a/src/libs/app.js
+++ b/src/libs/app.js
@@ -79,6 +79,7 @@ app.use((req, res, next) => {
 app.use((err, req, res, next) => {
     res.status(err.status || 500);
     log.error('%s %d %s', req.method, res.statusCode, err.message);
+    log.error(`Route: ${req.originalUrl}`);
     log.error(err);
     res.json({ error: err.message }).end();
 });
diff --git a/src/libs/middlewares/downloadDatabase.js b/src/libs/middlewares/downloadDatabase.js
index d1566b8c11c334e688da4f34641c728820c10e2c..28dfdaf1bac4181315bf4ce3074fe64c5c8f34a5 100644
--- a/src/libs/middlewares/downloadDatabase.js
+++ b/src/libs/middlewares/downloadDatabase.js
@@ -44,6 +44,17 @@ module.exports = function download(table, mappingTable) {
                     Download.findOne({query: req.sql.toString()}, (err, download) => {
                         if(download) {
                             download.updatedAt = Date.now();
+                            if(download.userId != req.user._id) {
+                                let dl = new Download({
+                                    userId: req.user._id,
+                                    table,
+                                    mappingTable,
+                                    query: req.sql.toString()
+                                });
+                                dl.save((err) => {
+                                    if(err) log.error(err);
+                                });
+                            }
                         } else {
                             download = new Download({
                                 userId: req.user._id,
diff --git a/src/libs/routes/user.js b/src/libs/routes/user.js
index 24f67b710d5b13568c95cfac8fff0d223eb805c4..898e7107651dd898601539767b8bf96e84d42408 100644
--- a/src/libs/routes/user.js
+++ b/src/libs/routes/user.js
@@ -180,8 +180,10 @@ userApp.post('/', (req, res, next) => {
             log.error(err);
             res.json({msg: 'User created'});
           }
-          log.info(`Message ${info.messageId} sent: ${info.response}`);
-          log.info(`Usuário ${user.email} foi criado`);
+          if(info) {
+            log.info(`Message ${info.messageId} sent: ${info.response}`);
+            log.info(`Usuário ${user.email} foi criado`);
+          }
           res.json({msg: 'User created'});
         });
       });
@@ -190,6 +192,53 @@ userApp.post('/', (req, res, next) => {
 
 });
 
+userApp.put('/:id', passport.authenticate('bearer', { session: false }), (req, res, next) => {
+  console.log(req.params.id);
+  console.log(req.user._id);
+  User.findById(req.params.id, (err, user) => {
+    if (err) {
+      log.error(err);
+      return next({err});
+    }
+
+    if(!user) {
+      res.statusCode = 404;
+      return next({err: {
+        message: 'Usuário não encontrado'
+      }});
+    }
+
+    user.email = req.body.email || user.email;
+    user.name = req.body.name || user.name;
+    user.nickname = req.body.nickname || user.nickname || user.name;
+    user.cep = req.body.cep || user.cep;
+    user.complement = req.body.complement || user.complement;
+    user.address = req.body.address || user.address;
+    user.phone = req.body.phone || user.phone;
+    user.schooling = req.body.schooling || user.schooling;
+    user.course = req.body.course || user.course;
+    user.segment = req.body.segment || user.segment;
+    user.role = req.body.role || user.role;
+    user.institutionName = req.body.institutionName || user.institutionName;
+    user.state = req.body.state || user.state;
+    user.city = req.body.city || user.city;
+    user.receiveEmails = req.body.receiveEmails || user.receiveEmails;
+    user.citesegment = req.body.citesegment || user.citesegment;
+    user.citerole = req.body.citerole || user.citerole;
+
+    user.save(err => {
+      if(err) {
+        log.error(err);
+        return next({message: 'Erro ao atualizar usuário'});
+      }
+      let u = user.toObject();
+      delete u.hashedPassword;
+      delete u.salt;
+      res.json({user: u});
+    }) 
+  })
+});
+
 userApp.get('/reset/password', (req, res, next) => {
   let emailAddress = req.query.email;
   User.findOne({email: emailAddress}, (err, user)=> {