pruebas #1

Merged
danielGe merged 6 commits from pruebas into master 2021-01-19 21:55:52 +00:00
17 changed files with 1169 additions and 20 deletions
+6 -1
View File
@@ -1,2 +1,7 @@
node_modules
.env
.env
routes/imagenesCarrusel
routes/imagenLibro
routes/pdf
+505
View File
@@ -4,6 +4,11 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
},
"accepts": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
@@ -27,6 +32,30 @@
"printj": "~1.1.0"
}
},
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"append-field": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
"integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY="
},
"aproba": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
"integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
},
"are-we-there-yet": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
"integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
"requires": {
"delegates": "^1.0.0",
"readable-stream": "^2.0.6"
}
},
"array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
@@ -37,6 +66,15 @@
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
"bcrypt": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.0.tgz",
"integrity": "sha512-jB0yCBl4W/kVHM2whjfyqnxTmOHkCX4kHEa5nYKSoGeYe8YrjTYTc87/6bwt1g8cmV0QrbhKriETg9jWtcREhg==",
"requires": {
"node-addon-api": "^3.0.0",
"node-pre-gyp": "0.15.0"
}
},
"big-integer": {
"version": "1.6.48",
"resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz",
@@ -87,6 +125,11 @@
"concat-map": "0.0.1"
}
},
"buffer-equal-constant-time": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
"integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
},
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@@ -163,6 +206,16 @@
"traverse": ">=0.3.0 <0.4"
}
},
"chownr": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
},
"code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
},
"codepage": {
"version": "1.14.0",
"resolved": "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz",
@@ -189,6 +242,17 @@
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"concat-stream": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
"requires": {
"buffer-from": "^1.0.0",
"inherits": "^2.0.3",
"readable-stream": "^2.2.2",
"typedarray": "^0.0.6"
}
},
"connect-busboy": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/connect-busboy/-/connect-busboy-0.0.2.tgz",
@@ -197,6 +261,11 @@
"busboy": "*"
}
},
"console-control-strings": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
},
"content-disposition": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
@@ -256,6 +325,16 @@
"ms": "2.0.0"
}
},
"deep-extend": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
},
"delegates": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
"integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
},
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
@@ -266,6 +345,11 @@
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
},
"detect-libc": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
"integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
},
"dicer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz",
@@ -295,6 +379,14 @@
"readable-stream": "^2.0.2"
}
},
"ecdsa-sig-formatter": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
"integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
"requires": {
"safe-buffer": "^5.0.1"
}
},
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -362,6 +454,14 @@
"vary": "~1.1.2"
}
},
"express-fileupload": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.2.0.tgz",
"integrity": "sha512-oe4WpKcSppXnl5peornawWUa6tKmIc1/kJxMNRGJR1A0v4zyLL6VsFR6wZ8P2a4Iq3aGx8xae3Vlr+MOMQhFPw==",
"requires": {
"busboy": "^0.3.1"
}
},
"finalhandler": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
@@ -391,6 +491,14 @@
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
},
"fs-minipass": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
"integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
"requires": {
"minipass": "^2.6.0"
}
},
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -407,6 +515,21 @@
"rimraf": "2"
}
},
"gauge": {
"version": "2.7.4",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
"requires": {
"aproba": "^1.0.3",
"console-control-strings": "^1.0.0",
"has-unicode": "^2.0.0",
"object-assign": "^4.1.0",
"signal-exit": "^3.0.0",
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1",
"wide-align": "^1.1.0"
}
},
"glob": {
"version": "7.1.6",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
@@ -425,6 +548,11 @@
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
"integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw=="
},
"has-unicode": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
"integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
},
"http-errors": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
@@ -445,6 +573,14 @@
"safer-buffer": ">= 2.1.2 < 3"
}
},
"ignore-walk": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz",
"integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",
"requires": {
"minimatch": "^3.0.4"
}
},
"immediate": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
@@ -464,16 +600,53 @@
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"ini": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
},
"ipaddr.js": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
},
"is-fullwidth-code-point": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"requires": {
"number-is-nan": "^1.0.0"
}
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"jsonwebtoken": {
"version": "8.5.1",
"resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
"integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
"requires": {
"jws": "^3.2.2",
"lodash.includes": "^4.3.0",
"lodash.isboolean": "^3.0.3",
"lodash.isinteger": "^4.0.4",
"lodash.isnumber": "^3.0.3",
"lodash.isplainobject": "^4.0.6",
"lodash.isstring": "^4.0.1",
"lodash.once": "^4.0.0",
"ms": "^2.1.1",
"semver": "^5.6.0"
},
"dependencies": {
"ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
}
}
},
"jszip": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz",
@@ -511,6 +684,25 @@
}
}
},
"jwa": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
"integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
"requires": {
"buffer-equal-constant-time": "1.0.1",
"ecdsa-sig-formatter": "1.0.11",
"safe-buffer": "^5.0.1"
}
},
"jws": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
"integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
"requires": {
"jwa": "^1.4.1",
"safe-buffer": "^5.0.1"
}
},
"libbase64": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz",
@@ -551,6 +743,41 @@
"resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz",
"integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc="
},
"lodash.includes": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
"integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
},
"lodash.isboolean": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
"integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
},
"lodash.isinteger": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
"integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
},
"lodash.isnumber": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
"integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
},
"lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
"integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
},
"lodash.isstring": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
"integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
},
"lodash.once": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
"integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
},
"mailcomposer": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.12.0.tgz",
@@ -623,6 +850,23 @@
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
},
"minipass": {
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
"integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
}
},
"minizlib": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
"integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
"requires": {
"minipass": "^2.9.0"
}
},
"mkdirp": {
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
@@ -636,6 +880,62 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"multer": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz",
"integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==",
"requires": {
"append-field": "^1.0.0",
"busboy": "^0.2.11",
"concat-stream": "^1.5.2",
"mkdirp": "^0.5.1",
"object-assign": "^4.1.1",
"on-finished": "^2.3.0",
"type-is": "^1.6.4",
"xtend": "^4.0.0"
},
"dependencies": {
"busboy": {
"version": "0.2.14",
"resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz",
"integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=",
"requires": {
"dicer": "0.2.5",
"readable-stream": "1.1.x"
}
},
"dicer": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz",
"integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=",
"requires": {
"readable-stream": "1.1.x",
"streamsearch": "0.1.2"
}
},
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
},
"readable-stream": {
"version": "1.1.14",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.1",
"isarray": "0.0.1",
"string_decoder": "~0.10.x"
}
},
"string_decoder": {
"version": "0.10.31",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
}
}
},
"mysql": {
"version": "2.18.1",
"resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz",
@@ -647,11 +947,58 @@
"sqlstring": "2.3.1"
}
},
"needle": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz",
"integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==",
"requires": {
"debug": "^3.2.6",
"iconv-lite": "^0.4.4",
"sax": "^1.2.4"
},
"dependencies": {
"debug": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
}
}
},
"negotiator": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
},
"node-addon-api": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz",
"integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw=="
},
"node-pre-gyp": {
"version": "0.15.0",
"resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.15.0.tgz",
"integrity": "sha512-7QcZa8/fpaU/BKenjcaeFF9hLz2+7S9AqyXFhlH/rilsQ/hPZKK32RtR5EQHJElgu+q5RfbJ34KriI79UWaorA==",
"requires": {
"detect-libc": "^1.0.2",
"mkdirp": "^0.5.3",
"needle": "^2.5.0",
"nopt": "^4.0.1",
"npm-packlist": "^1.1.6",
"npmlog": "^4.0.2",
"rc": "^1.2.7",
"rimraf": "^2.6.1",
"semver": "^5.3.0",
"tar": "^4.4.2"
}
},
"node-xlsx": {
"version": "0.15.0",
"resolved": "https://registry.npmjs.org/node-xlsx/-/node-xlsx-0.15.0.tgz",
@@ -679,6 +1026,54 @@
"nodemailer-fetch": "1.6.0"
}
},
"nopt": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
"integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
"requires": {
"abbrev": "1",
"osenv": "^0.1.4"
}
},
"npm-bundled": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz",
"integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==",
"requires": {
"npm-normalize-package-bin": "^1.0.1"
}
},
"npm-normalize-package-bin": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
"integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA=="
},
"npm-packlist": {
"version": "1.4.8",
"resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",
"integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
"requires": {
"ignore-walk": "^3.0.1",
"npm-bundled": "^1.0.1",
"npm-normalize-package-bin": "^1.0.1"
}
},
"npmlog": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
"integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
"requires": {
"are-we-there-yet": "~1.1.2",
"console-control-strings": "~1.1.0",
"gauge": "~2.7.3",
"set-blocking": "~2.0.0"
}
},
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -700,6 +1095,25 @@
"wrappy": "1"
}
},
"os-homedir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
},
"os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
},
"osenv": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
"integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
"requires": {
"os-homedir": "^1.0.0",
"os-tmpdir": "^1.0.0"
}
},
"pako": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
@@ -760,6 +1174,17 @@
"unpipe": "1.0.0"
}
},
"rc": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
"requires": {
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
"minimist": "^1.2.0",
"strip-json-comments": "~2.0.1"
}
},
"read-excel-file": {
"version": "4.0.7",
"resolved": "https://registry.npmjs.org/read-excel-file/-/read-excel-file-4.0.7.tgz",
@@ -803,6 +1228,16 @@
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
},
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
},
"send": {
"version": "0.17.1",
"resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
@@ -850,6 +1285,11 @@
"send": "0.17.1"
}
},
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
},
"setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
@@ -860,6 +1300,11 @@
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
},
"signal-exit": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
"integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
},
"sqlstring": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
@@ -883,6 +1328,16 @@
"resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
"integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
},
"string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
"strip-ansi": "^3.0.0"
}
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -891,6 +1346,33 @@
"safe-buffer": "~5.1.0"
}
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"requires": {
"ansi-regex": "^2.0.0"
}
},
"strip-json-comments": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
},
"tar": {
"version": "4.4.13",
"resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
"integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
"requires": {
"chownr": "^1.1.1",
"fs-minipass": "^1.2.5",
"minipass": "^2.8.6",
"minizlib": "^1.2.1",
"mkdirp": "^0.5.0",
"safe-buffer": "^5.1.2",
"yallist": "^3.0.3"
}
},
"toidentifier": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
@@ -910,6 +1392,11 @@
"mime-types": "~2.1.24"
}
},
"typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
},
"unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
@@ -946,6 +1433,14 @@
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
},
"wide-align": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
"integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
"requires": {
"string-width": "^1.0.2 || 2"
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@@ -974,6 +1469,16 @@
"version": "0.0.27",
"resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.27.tgz",
"integrity": "sha512-fg03WRxtkCV6ohClePNAECYsmpKKTv5L8y/X3Dn1hQrec3POx2jHZ/0P2qQ6HvsrU1BmeqXcof3NGGueG6LxwQ=="
},
"xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
},
"yallist": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
}
}
}
+4
View File
@@ -13,10 +13,14 @@
"author": "George",
"license": "ISC",
"dependencies": {
"bcrypt": "^5.0.0",
"connect-busboy": "0.0.2",
"cors": "^2.8.5",
"dotenv": "^8.2.0",
"express": "^4.17.1",
"express-fileupload": "^1.2.0",
"jsonwebtoken": "^8.5.1",
"multer": "^1.4.2",
"mysql": "^2.18.1",
"node-xlsx": "^0.15.0",
"nodemailer": "^6.4.13",
+233
View File
@@ -0,0 +1,233 @@
const connection = require('../conf/connection.js');;
const express = require('express');
const fileUpload = require('express-fileupload');
var path = require('path');
const fs = require("fs");
var app = express()
app.use(fileUpload());
function query(consulta) {
return new Promise(function(resolve, reject) {
connection.query(`${consulta}`, (error, results, files) => {
if (error) reject(error);
resolve(results);
});
})
}
function corregir(cad){
var recor = String.fromCharCode(13);
cad = cad.split(recor);
let nuevocad="";
for(let i=0; i<cad.length; i++){
if(i!==0 && cad[i]!=="\n" )
nuevocad = nuevocad + cad[i];
else
if(cad[i]!== "\n")
nuevocad = cad[i]
}
return nuevocad;
}
app.post('/actualizarLibro', async(req, res) => {
let data = req.body;
if(req.body.type==='addLibro'){
if(req.body.seccion === 'datos'){
console.log('entro a datos', req.body);
try{
let titulo = corregir(data.titulo);
let autor = corregir(data.autor);
let categoria = data.categoria;
let paginas = data.paginas;
let isbn = data.isbn;
let precio = data.precio;
let edicion = corregir(data.edicion);
let year = data.year;
let descripcion = corregir(data.descripcion);
let version = data.version;
let sqlInsertString = `INSERT INTO Libro values ( null, '${isbn}' , '${titulo}', '${categoria}', '${autor}', ${paginas}, '${edicion}', '${precio}', '${version}', '${descripcion}', ${year}); `;
let idLibro = null;
await query(sqlInsertString);
let sqlString = `SELECT LAST_INSERT_ID() as idLibro;`;
let sqlAnswer = await query(sqlString);
idLibro = sqlAnswer[0].idLibro;
res.status(200).json({error: false, msj: 'Datos guardados', value: true, idLibro: idLibro});
return;
}
catch (error){
console.log(error);
res.status(400).json({error: true, mensaje: 'Ocurrio un error al guardar en la BD', descripcion: error, value: false});
return;
}
}
if (req.body.seccion === 'imagen'){
console.log('entro a imagen', req.body);
if (req.files === null || req.files.imagen===null)
{
res.status(400).json({error: true, msj: `No se pudo cargar los archivos de imagen y pdf`, value: false});
return;
}
try{
let idLibro = req.body.idLibro;
let imagen = req.files.imagen;
let stringUpdate = `INSERT INTO Imagen values (null, ${idLibro}, '${imagen.name}' )`;
await query(stringUpdate);
imagen.mv( path.join('.', `/routes/imagenLibro/${imagen.name}`), function(err) {
if (err) return res.status(400).json({ error: true, msj: "Error al guardar la imagen del libro", value: false });
});
res.status(200).json({error: false, msj: 'Se agrego con exito el libro', value: true});
return;
}
catch (error){
console.log(error);
res.status(400).json({error: true, mensaje: 'Ocurrio un error al guardar en la BD', descripcion: error, value: false});
return;
}
}
if(req.body.seccion === 'pdf'){
console.log('entro a pdf', req.body);
if (req.files === null || req.files.pdf===null)
{
res.status(400).send(`No se pudo cargar los archivos de imagen y pdf`);
return;
}
try{
let idLibro = req.body.idLibro;
let pdf = req.files.pdf;
stringUpdate = `INSERT INTO Visualizacion values (null, ${idLibro}, '${pdf.name}' );`;
await query(stringUpdate);
pdf.mv( path.join('.', `/routes/pdf/${pdf.name}`), function(err) {
if (err) return res.status(400).json({ error: true, msj: "Error al guardar el pdf del libro", value: false });
});
res.status(200).json({error: false, msj: 'Se agrego con exito el libro', value: true});
return;
}
catch (error){
console.log(error);
res.status(400).json({error: true, mensaje: 'Ocurrio un error al guardar en la BD', descripcion: error, value: false});
return;
}
}
res.status(200).json({error: false, msj: 'termino'});
return;
}
else{
console.log('entro a actulizar: ');
console.log('archivos', req.files);
console.log('datos', req.body)
if(typeof(data.idLibro) === 'undefined'){
res.status(400).json({error: true, msj: 'Falta el Id del libro como parametro'});
return;
}
try{
let stringUpdate = `Update Libro set `;
let con=0;
if ( typeof(data.titulo) !== 'undefined'){
stringUpdate += `titulo = '${data.titulo}'`;
con++;
}
if ( typeof(data.autor) !== 'undefined'){
stringUpdate = (con>0) ? `${stringUpdate},`: stringUpdate;
stringUpdate += ` autor = '${data.autor}'`;
con++;
}
if ( typeof(data.categoria) !== 'undefined'){
stringUpdate = (con>0) ? `${stringUpdate},`: stringUpdate;
stringUpdate += ` categoria = '${data.categoria}'`;
con++;
}
if ( typeof(data.paginas) !== 'undefined'){
stringUpdate = (con>0) ? `${stringUpdate},`: stringUpdate;
stringUpdate += ` paginas = '${data.paginas}'`;
con++;
}
if ( typeof(data.isbn) !== 'undefined'){
stringUpdate = (con>0) ? `${stringUpdate},`: stringUpdate;
stringUpdate += ` isbn = '${data.isbn}'`;
con++;
}
if ( typeof(data.precio) !== 'undefined'){
stringUpdate = (con>0) ? `${stringUpdate},`: stringUpdate;
stringUpdate += ` precio = '${data.precio}'`;
con++;
}
if ( typeof(data.edicion) !== 'undefined'){
stringUpdate = (con>0) ? `${stringUpdate},`: stringUpdate;
stringUpdate += ` impresion = '${data.edicion}'`;
con++;
}
if ( typeof(data.year) !== 'undefined'){
stringUpdate = (con>0) ? `${stringUpdate},`: stringUpdate;
stringUpdate += ` year = '${data.year}'`;
con++;
}
if ( typeof(data.descripcion) !== 'undefined'){
stringUpdate = (con>0) ? `${stringUpdate},`: stringUpdate;
stringUpdate += ` descripcion = '${data.descripcion}'`;
con++;
}
if ( typeof(data.version) !== 'undefined'){
stringUpdate = (con>0) ? `${stringUpdate},`: stringUpdate;
stringUpdate += ` version = '${data.version}'`;
}
stringUpdate += ` where idLibro = ${data.idLibro};`;
try{
if(con>0)
await query(stringUpdate);
}
catch (error){
console.log(error);
res.status(400).json({error: true, msj: 'Error al actualizar en la base de datos '});
return;
}
if (req.files !== null && req.files.imagen !== undefined) {
let imagen = req.files.imagen;
console.log(imagen);
let stringUpdate =`Update Imagen set ruta = "${imagen.name}" where idLibro = ${data.idLibro};`;
console.log(stringUpdate)
let answerUpdata = await query(stringUpdate);
console.log(answerUpdata);
imagen.mv( path.join('.', `/routes/imagenLibro/${imagen.name}`), function(err) {
if (err){
console.log(err);
return res.status(400).json({ error: true, msj: "Error al guardar la imagen del libro" });
}
});
}
if (req.files !== null && req.files.pdf !== undefined) {
let pdf = req.files.pdf;
stringUpdate = `Update Visualizacion set ruta = "${pdf.name}" where idLibro = ${data.idLibro};`;
await query(stringUpdate);
pdf.mv( path.join('.', `/routes/pdf/${pdf.name}`), function(err) {
if (err) {
console.log(err);
return res.status(400).json({ error: true, msj: "Error al guardar el pdf del libro" });
}
});
}
res.status(200).json({error: false, msj: 'Se agrego con exito el libro'});
return;
}
catch(error){
console.log(error);
res.status(400).json({error: true, msj: 'Sucedio un error al Actualizar el libro', desc: error});
return;
}
}
});
module.exports = app;
+29
View File
@@ -0,0 +1,29 @@
const express = require('express')
var app = express();
var fs = require('fs');
var path = require('path');
app.post('/agregarImagenCarrusel', async(req, res) => {
console.log(req.body);
try{
req.pipe(req.busboy);
req.busboy.on('file',async function (fieldname, file, filename) {
try{
let saveTo = path.join('.', `/routes/imagenesCarrusel/${filename}`);
file.pipe(fs.createWriteStream(saveTo));
}
catch(error){
console.log(error);res.status(400).json({error: true, msj: `No se pudo guardar la imagen`});
return;
}
});
res.status(200).json({error: false, msj: `Se inserto con exito`});
return;
}
catch(error){
console.log(`No se pudo guardar la imagen`);
res.status(400).json({error: true, msj: `No se pudo cargar el libro`});
return;
}
});
module.exports = app
+119
View File
@@ -0,0 +1,119 @@
const connection = require('../conf/connection.js');;
const express = require('express');
const fileUpload = require('express-fileupload');
var path = require('path');
const nodemailer = require("nodemailer");
const fs = require("fs");
const { commit } = require('../conf/connection.js');
var app = express()
app.use(fileUpload());
function query(consulta) {
return new Promise(function(resolve, reject) {
connection.query(`${consulta}`, (error, results, files) => {
if (error) reject(error);
resolve(results);
});
})
}
function corregir(cad){
var recor = String.fromCharCode(13);
cad = cad.split(recor);
let nuevocad="";
for(let i=0; i<cad.length; i++){
if(i!==0 && cad[i]!=="\n" )
nuevocad = nuevocad + cad[i];
else
if(cad[i]!== "\n")
nuevocad = cad[i]
}
return nuevocad;
}
app.post('/agregarLibro', async(req, res) => {
console.log('archivos: ',req.files);
// console.log(req.body);
let data = req.body;
if (req.files===null)
{
res.status(400).json({error: true, msj: `No se pudo cargar los archivos de imagen y pdf`});
return;
}
if (req.files.imagen===null)
{
res.status(400).json({error: true, msj: `No se pudo cargar el archivo de la imagen`});
return;
}
if (req.files.pdf===null)
{
res.status(400).json({error: true, msj: `No se pudo cargar el archivo del pdf`});
return;
}
try{
let titulo = corregir(data.titulo);
let autor = corregir(data.autor);
let categoria = data.categoria;
let paginas = data.paginas;
let isbn = data.isbn;
let precio = data.precio;
let edicion = corregir(data.edicion);
let year = data.year;
let descripcion = corregir(data.descripcion);
let version = data.version;
let sqlInsertString = `INSERT INTO Libro values ( null, '${isbn}' , '${titulo}', '${categoria}', '${autor}', ${paginas}, '${edicion}', '${precio}', '${version}', '${descripcion}', ${year}); `;
let idLibro = null;
try{
await query(sqlInsertString);
let sqlString = `SELECT LAST_INSERT_ID() as idLibro;`;
let sqlAnswer = await query(sqlString);
idLibro = sqlAnswer[0].idLibro;
}
catch (error){
console.log(error);
res.status(400).json({error: true, mensaje: 'Ocurrio un error al guardar en la BD', descripcion: error});
return;
}
if (req.files!==null && req.files.imagen !== null) {
let imagen = req.files.imagen;
console.log(imagen);
let stringUpdate = `INSERT INTO Imagen values (null, ${idLibro}, '${imagen.name}' )`;
console.log(stringUpdate)
await query(stringUpdate);
imagen.mv( path.join('.', `/routes/imagenLibro/${imagen.name}`), function(err) {
if (err) return res.status(400).json({ error: true, msj: "Error al guardar la imagen del libro" });
});
}
if (req.files!==null && req.files.pdf !== null) {
let pdf = req.files.pdf;
stringUpdate = `INSERT INTO Visualizacion values (null, ${idLibro}, '${pdf.name}' );`;
await query(stringUpdate);
pdf.mv( path.join('.', `/routes/pdf/${pdf.name}`), function(err) {
if (err) return res.status(400).json({ error: true, msj: "Error al guardar el pdf del libro" });
});
res.status(200).json({error: false, msj: 'Se agrego con exito el libro'});
return;
}
}
catch (error){
console.log(error);
res.status(400).json({error: true, msj: `No se pudo agregar el libro`, desc: error});
console.log(`Ocurrio un error al insertar en la base de datos msj: ${error}`);
return;
}
res.status(200).json({error: false, msj: 'Se agrego con exito el libro'});
return;
});
module.exports = app;
-2
View File
@@ -36,8 +36,6 @@ function corregir(cad){
}
return nuevocad;
}
+39
View File
@@ -0,0 +1,39 @@
const express = require('express');
const jtw = require('jsonwebtoken');
const { beginTransaction } = require('../conf/connection');
var app = express()
function verifyToken(req, res, next){
console.log(JSON.stringify(req.headers));
const bearerHeader = req.headers['authorization'];
console.log(bearerHeader);
if(typeof bearerHeader !== 'undefined'){
const bearerToken = bearerHeader.split(" ")[1];
req.token = bearerToken;
next();
}
else{
res.sendStatus(403);
return;
}
}
app.post('/checkToken', verifyToken ,(req, res) => {
console.log(req.body);
jtw.verify(req.body.token, 'key',{expiresIn: '1h'}, (error, authData)=>{
if(error){
res.sendStatus(403);
}
else{
res.json({
mjs: 'token autenticado',
datos: authData
});
return;
}
})
});
module.exports = app
+28
View File
@@ -0,0 +1,28 @@
const express = require('express')
var app = express();
var fs = require('fs');
var path = require('path');
app.post('/eliminarImagenCarrusel', async(req, res) => {
let data = req.body;
if( typeof( data.nombre ) === 'undefined' ){
res.status(400).json({error: true, msj: 'Falta el nombre de la imagen del carrusel'});
return;
}
console.log(` Este es el nombre: ${data.nombre}`);
try{
let ruta = path.join('.', `/routes/imagenesCarrusel/${data.nombre}`);
fs.unlinkSync(ruta);
res.status(200).json({error: false, msj: 'Imagen Eliminada con exito'});
return;
}
catch(error){
console.log(`Este es el error : ${error}`);
res.status(400).json({error: true, msj: 'No se pudo eliminar la imagen', desc: error});
return;
}
});
module.exports = app
+67
View File
@@ -0,0 +1,67 @@
const connection = require('../conf/connection.js');;
const express = require('express');
const fileUpload = require('express-fileupload');
var path = require('path');
const nodemailer = require("nodemailer");
const fs = require("fs");
const { commit } = require('../conf/connection.js');
var app = express()
app.use(fileUpload());
function query(consulta) {
return new Promise(function(resolve, reject) {
connection.query(`${consulta}`, (error, results, files) => {
if (error) reject(error);
resolve(results);
});
})
}
app.post('/eliminarLibro', async(req, res) => {
let data = req.body;
try{
let sqlSelectImage = `SELECT ruta from Imagen where idLibro = ${data.idLibro};`;
let imageName = await query(sqlSelectImage);
let sqlSelectVizualizacion= `SELECT ruta from Visualizacion where idLibro = ${data.idLibro};`;
let vizualizacionName = await query(sqlSelectVizualizacion);
let sqlDeleteStrign = `DELETE FROM PdfLibro where idLibro=${data.idLibro};`;
await query(sqlDeleteStrign);
sqlDeleteStrign = `DELETE FROM Imagen where idLibro=${data.idLibro};`;
await query(sqlDeleteStrign);
sqlDeleteStrign = `DELETE FROM Visualizacion where idLibro=${data.idLibro};`;
await query(sqlDeleteStrign);
sqlDeleteStrign = `DELETE FROM Libro where idLibro=${data.idLibro};`;
await query(sqlDeleteStrign);
let rutaVizualizavcion = path.join('.', `/routes/pdf/${vizualizacionName}`);
try{
vizualizacionName = vizualizacionName[0].ruta;
fs.unlinkSync(rutaVizualizavcion);
}
catch(error){
console.log(error);
}
let rutaImage = path.join('.', `/routes/imagenLibro/${imageName}`);
try{
imageName = imageName[0].ruta;
fs.unlinkSync(rutaImage);
}
catch(error){
console.log(error);
}
res.status(200).json({error: false, msj: 'Imagen Eliminada con exito'});
return;
}
catch(error){
console.log(`Este es el error : ${error}`);
res.status(400).json({error: true, msj: 'No se pudo eliminar la libro', desc: error});
return;
}
});
module.exports = app
+3 -6
View File
@@ -19,12 +19,9 @@ function query(consulta) {
app.get('/getLibros', async(req, res) => {
try{
let sqlString = `SELECT idLibro, titulo, categoria, autor FROM Libro;`;
console.log(` Esta es la cadena : ${sqlString}`);
let respuestaSql = await query(sqlString);
let sqlString = `SELECT idLibro, titulo, categoria, autor FROM Libro;`;
//console.log(` Esta es la cadena : ${sqlString}`);
let respuestaSql = await query(sqlString);
res.status(200).json({error:false, msj: 'exito', data: respuestaSql})
}
catch(error){
+32
View File
@@ -0,0 +1,32 @@
const connection = require('../conf/connection.js');
const express = require('express')
var app = express();
function query(consulta) {
return new Promise(function(resolve, reject) {
connection.query(`${consulta}`, (error, results, files) => {
if (error) reject(error);
resolve(results);
});
})
}
app.get('/getTodosLibros', async(req, res) => {
try{
let sqlString = `SELECT * FROM Libro ORDER BY year DESC;`;
let respuestaSql = await query(sqlString);
res.status(200).json({error:false, msj: 'exito', data: respuestaSql})
}
catch(error){
res.status(400).json({error: true, msj: 'No se pudo obtener los libros similares', desc: error});
return;
}
});
module.exports = app;
Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 KiB

+8 -1
View File
@@ -12,5 +12,12 @@ app.use(require('./getLibros'));
app.use(require('./temaLibro'));
app.use(require('./getPDF'));
app.use(require('./email'));
app.use(require('./eliminarImagenCarrusel'));
app.use(require('./agregarImagenCarrusel'));
app.use(require('./actualizarLibro'));
app.use(require('./getTodosLibros'));
app.use(require('./agregarLibro'));
app.use(require('./eliminarLibro'));
app.use(require('./checkToken'));
app.use(require('./loginAdmin'));
module.exports = app;
+3 -8
View File
@@ -19,27 +19,22 @@ function query(consulta) {
app.get('/libroImagen', async(req, res) => {
console.log(`Entro a imagenes`);
let data = req.query;
if( typeof( data.idLibro ) === 'undefined' ){
res.status(400).json({error: true, msj: 'Falta el ID del libro como parametro'});
return;
}
console.log(` Este es el id: ${data.idLibro}`);
//console.log(` Este es el id: ${data.idLibro}`);
try{
let sqlString = `SELECT * from Imagen where idLibro=${data.idLibro}`;
console.log(` Esta es la cadena : ${sqlString}`);
//console.log(` Esta es la cadena : ${sqlString}`);
let respuestaSql = await query(sqlString);
if(respuestaSql.length === 0 ){
console.log(`No se encontro el libro msj:`);
//console.log(`No se encontro el libro msj:`);
res.status(400).json({error: true, msj: 'No se encontro el libro solicitado'});
return;
}
respuestaSql = respuestaSql[0];
console.log(` esta es la respuesta ${respuestaSql}`);
for(let key in respuestaSql)
console.log(` __ ${key} : ${respuestaSql[key]}`);
let img = fs.readFileSync(path.join('.', `/routes/imagenLibro/${respuestaSql.ruta}`));
res.writeHead(200, {'Content-Type': 'image/jpg' });
res.end(img, 'binary')
+84
View File
@@ -0,0 +1,84 @@
const connection = require('../conf/connection.js');
const express = require('express');
const bcrypt = require('bcrypt');
const jtw = require('jsonwebtoken');
var app = express()
function query(consulta) {
return new Promise(function(resolve, reject) {
connection.query(`${consulta}`, (error, results, files) => {
if (error) reject(error);
resolve(results);
});
})
}
function depurado(cadena) {
if (cadena != null) {
cadena = cadena.replace(/'/g, "''");
cadena = cadena.replace(/;/g, "m");
return cadena;
} else
return null;
}
app.post('/loginAdmin', async(req, res) => {
if(typeof req.body.usuario === 'indefined' || typeof req.body.password === 'undefined'){
res.status(400).json({ error: false, msj: "Falta usuario o contraseña como parametros" });
return;
}
console.log(req.body);
try {
let data = req.body;
let usuario = depurado(data.usuario);
let cad = `select * from Admin where usuario='${usuario}'`;
let respuesta = query(cad);
let pass = data.password;
let n_pasword = await bcrypt.hash(pass, 10);
console.log(n_pasword);
respuesta.then(async response => {
console.log(response, response.length);
if (response.length == 0) {
res.status(400).json({ error: false, msj: "Usuario o contraseña invalidos" });
return;
} else {
let ban = bcrypt.compareSync(data.password, response[0].password);
if (ban == true) {
const usuario = {
idAdmin : response[0].idAdmin,
user: response[0].nombre,
}
jtw.sign({user: usuario}, 'key', (err, token)=>{
if(err){
res.status(400).json({ error: false, msj: "No se pudo auntentificar" });
return;
}
res.status(200).json({ error: false, msj: "bienvenido", token, entro: true });
return;
})
} else {
res.status(400).json({ error: false, msj: "Usuario o contraseña invalidos" });
return;
}
}
}).catch(err => {
res.status(400).json({ error: true, msj: err });
return;
})
} catch (err) {
console.log("error al autentificar: ", err);
res.status(400).json({ error: true, msj: err });
return;
}
});
module.exports = app
+9 -2
View File
@@ -48,8 +48,8 @@ CREATE TABLE `Compra` (
CREATE TABLE `Admin` (
`idAdmin` integer PRIMARY KEY NOT NULL AUTO_INCREMENT,
`usuario` varchar(100),
`password` varchar(350)
`usuario` varchar(100),
`password` varchar(350)
);
ALTER TABLE `Imagen` ADD FOREIGN KEY (`idLibro`) REFERENCES `Libro` (`idLibro`);
@@ -61,3 +61,10 @@ ALTER TABLE `Compra` ADD FOREIGN KEY (`idLibro`) REFERENCES `Libro` (`idLibro`);
ALTER TABLE `Video` ADD FOREIGN KEY (`idLibro`) REFERENCES `Libro` (`idLibro`);
ALTER TABLE `PdfLibro` ADD FOREIGN KEY (`idLibro`) REFERENCES `Libro` (`idLibro`);
ALTER TABLE 'Libro' ADD nombre varchar(100);
-- "password": "p0rtal4dmin2021"
INSERT INTO Admin values (null, 'PotalEditAdmin', '$2b$10$0GeS8v9lUwhOHOS/2MoBIuJusNdM1Zi7SD.asnQrsyWA9oOTd9.YK', 'Administrador');