Spaces:
Sleeping
Sleeping
Merge pull request #7 from PBL6-team-CATS/feature/login
Browse files- backend/.env.example +2 -1
- backend/package-lock.json +510 -17
- backend/package.json +3 -0
- backend/src/modules/authentication/authentication.controller.ts +23 -26
- backend/src/modules/authentication/authentication.decorator.ts +5 -0
- backend/src/modules/authentication/authentication.guard.ts +49 -0
- backend/src/modules/authentication/authentication.module.ts +22 -2
- backend/src/modules/authentication/authentication.service.ts +19 -20
- backend/src/modules/authentication/constants.ts +5 -0
- backend/src/modules/authentication/dto/sign-in.dto.ts +9 -0
- backend/src/modules/user/user.controller.ts +8 -31
- backend/src/modules/user/user.module.ts +2 -3
- backend/src/modules/user/user.service.ts +11 -19
backend/.env.example
CHANGED
@@ -2,4 +2,5 @@ DB_HOST=dpg-cs6i9ll6l47c73ffheh0-a
|
|
2 |
DB_PORT=5432
|
3 |
DB_USER='pbl6_jw8s_user'
|
4 |
DB_PASSWORD=''
|
5 |
-
DB_NAME='pbl6_jw8s'
|
|
|
|
2 |
DB_PORT=5432
|
3 |
DB_USER='pbl6_jw8s_user'
|
4 |
DB_PASSWORD=''
|
5 |
+
DB_NAME='pbl6_jw8s'
|
6 |
+
JWT_KEY = ''
|
backend/package-lock.json
CHANGED
@@ -12,9 +12,12 @@
|
|
12 |
"@nestjs/common": "^10.0.0",
|
13 |
"@nestjs/config": "^3.2.3",
|
14 |
"@nestjs/core": "^10.0.0",
|
|
|
15 |
"@nestjs/mapped-types": "*",
|
16 |
"@nestjs/platform-express": "^10.0.0",
|
17 |
"@nestjs/typeorm": "^10.0.2",
|
|
|
|
|
18 |
"dotenv": "^16.4.5",
|
19 |
"mysql2": "^3.11.3",
|
20 |
"nest-access-control": "^3.1.0",
|
@@ -1555,6 +1558,50 @@
|
|
1555 |
"node": ">=8"
|
1556 |
}
|
1557 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1558 |
"node_modules/@nestjs/cli": {
|
1559 |
"version": "10.4.5",
|
1560 |
"resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-10.4.5.tgz",
|
@@ -1692,6 +1739,19 @@
|
|
1692 |
}
|
1693 |
}
|
1694 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1695 |
"node_modules/@nestjs/mapped-types": {
|
1696 |
"version": "2.0.5",
|
1697 |
"resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.0.5.tgz",
|
@@ -2073,6 +2133,15 @@
|
|
2073 |
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
|
2074 |
"dev": true
|
2075 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2076 |
"node_modules/@types/methods": {
|
2077 |
"version": "1.1.4",
|
2078 |
"resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz",
|
@@ -2089,7 +2158,6 @@
|
|
2089 |
"version": "20.16.5",
|
2090 |
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz",
|
2091 |
"integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==",
|
2092 |
-
"devOptional": true,
|
2093 |
"dependencies": {
|
2094 |
"undici-types": "~6.19.2"
|
2095 |
}
|
@@ -2155,6 +2223,12 @@
|
|
2155 |
"@types/superagent": "^8.1.0"
|
2156 |
}
|
2157 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
2158 |
"node_modules/@types/yargs": {
|
2159 |
"version": "17.0.33",
|
2160 |
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz",
|
@@ -2516,6 +2590,12 @@
|
|
2516 |
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
|
2517 |
"dev": true
|
2518 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
2519 |
"node_modules/accepts": {
|
2520 |
"version": "1.3.8",
|
2521 |
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
|
@@ -2579,6 +2659,18 @@
|
|
2579 |
"node": ">=0.4.0"
|
2580 |
}
|
2581 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2582 |
"node_modules/ajv": {
|
2583 |
"version": "8.12.0",
|
2584 |
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
|
@@ -2713,6 +2805,40 @@
|
|
2713 |
"resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
|
2714 |
"integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw=="
|
2715 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2716 |
"node_modules/arg": {
|
2717 |
"version": "4.1.3",
|
2718 |
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
|
@@ -2905,6 +3031,20 @@
|
|
2905 |
}
|
2906 |
]
|
2907 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2908 |
"node_modules/binary-extensions": {
|
2909 |
"version": "2.3.0",
|
2910 |
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
|
@@ -3075,6 +3215,12 @@
|
|
3075 |
"ieee754": "^1.1.13"
|
3076 |
}
|
3077 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
3078 |
"node_modules/buffer-from": {
|
3079 |
"version": "1.1.2",
|
3080 |
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
|
@@ -3209,6 +3355,15 @@
|
|
3209 |
"fsevents": "~2.3.2"
|
3210 |
}
|
3211 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3212 |
"node_modules/chrome-trace-event": {
|
3213 |
"version": "1.0.4",
|
3214 |
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
|
@@ -3239,6 +3394,17 @@
|
|
3239 |
"integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==",
|
3240 |
"dev": true
|
3241 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3242 |
"node_modules/cli-cursor": {
|
3243 |
"version": "3.1.0",
|
3244 |
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
|
@@ -3428,6 +3594,15 @@
|
|
3428 |
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
3429 |
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
3430 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3431 |
"node_modules/combined-stream": {
|
3432 |
"version": "1.0.8",
|
3433 |
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
@@ -3477,8 +3652,7 @@
|
|
3477 |
"node_modules/concat-map": {
|
3478 |
"version": "0.0.1",
|
3479 |
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
3480 |
-
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
|
3481 |
-
"dev": true
|
3482 |
},
|
3483 |
"node_modules/concat-stream": {
|
3484 |
"version": "1.6.2",
|
@@ -3499,6 +3673,12 @@
|
|
3499 |
"resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
|
3500 |
"integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw=="
|
3501 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
3502 |
"node_modules/content-disposition": {
|
3503 |
"version": "0.5.4",
|
3504 |
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
|
@@ -3713,6 +3893,12 @@
|
|
3713 |
"node": ">=0.4.0"
|
3714 |
}
|
3715 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
3716 |
"node_modules/denque": {
|
3717 |
"version": "2.1.0",
|
3718 |
"resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
|
@@ -3738,6 +3924,15 @@
|
|
3738 |
"npm": "1.2.8000 || >= 1.4.16"
|
3739 |
}
|
3740 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3741 |
"node_modules/detect-newline": {
|
3742 |
"version": "3.1.0",
|
3743 |
"resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
|
@@ -3811,6 +4006,15 @@
|
|
3811 |
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
|
3812 |
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
|
3813 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3814 |
"node_modules/ee-first": {
|
3815 |
"version": "1.1.1",
|
3816 |
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
@@ -4652,6 +4856,36 @@
|
|
4652 |
"node": ">=12"
|
4653 |
}
|
4654 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4655 |
"node_modules/fs-monkey": {
|
4656 |
"version": "1.0.6",
|
4657 |
"resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz",
|
@@ -4661,8 +4895,7 @@
|
|
4661 |
"node_modules/fs.realpath": {
|
4662 |
"version": "1.0.0",
|
4663 |
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
4664 |
-
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
|
4665 |
-
"dev": true
|
4666 |
},
|
4667 |
"node_modules/fsevents": {
|
4668 |
"version": "2.3.3",
|
@@ -4686,6 +4919,33 @@
|
|
4686 |
"url": "https://github.com/sponsors/ljharb"
|
4687 |
}
|
4688 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4689 |
"node_modules/generate-function": {
|
4690 |
"version": "2.3.1",
|
4691 |
"resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
|
@@ -4878,6 +5138,12 @@
|
|
4878 |
"url": "https://github.com/sponsors/ljharb"
|
4879 |
}
|
4880 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
4881 |
"node_modules/hasown": {
|
4882 |
"version": "2.0.2",
|
4883 |
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
|
@@ -4927,6 +5193,19 @@
|
|
4927 |
"node": ">= 0.8"
|
4928 |
}
|
4929 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4930 |
"node_modules/human-signals": {
|
4931 |
"version": "2.1.0",
|
4932 |
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
|
@@ -5024,7 +5303,6 @@
|
|
5024 |
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
5025 |
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
|
5026 |
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
|
5027 |
-
"dev": true,
|
5028 |
"dependencies": {
|
5029 |
"once": "^1.3.0",
|
5030 |
"wrappy": "1"
|
@@ -6099,6 +6377,49 @@
|
|
6099 |
"graceful-fs": "^4.1.6"
|
6100 |
}
|
6101 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6102 |
"node_modules/keyv": {
|
6103 |
"version": "4.5.4",
|
6104 |
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
|
@@ -6139,6 +6460,12 @@
|
|
6139 |
"node": ">= 0.8.0"
|
6140 |
}
|
6141 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
6142 |
"node_modules/lines-and-columns": {
|
6143 |
"version": "1.2.4",
|
6144 |
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
|
@@ -6174,6 +6501,42 @@
|
|
6174 |
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
6175 |
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
6176 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6177 |
"node_modules/lodash.memoize": {
|
6178 |
"version": "4.1.2",
|
6179 |
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
|
@@ -6186,6 +6549,12 @@
|
|
6186 |
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
|
6187 |
"dev": true
|
6188 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
6189 |
"node_modules/log-symbols": {
|
6190 |
"version": "4.1.0",
|
6191 |
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
|
@@ -6417,6 +6786,37 @@
|
|
6417 |
"node": ">=16 || 14 >=14.17"
|
6418 |
}
|
6419 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6420 |
"node_modules/mkdirp": {
|
6421 |
"version": "0.5.6",
|
6422 |
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
|
@@ -6559,6 +6959,12 @@
|
|
6559 |
"integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==",
|
6560 |
"dev": true
|
6561 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
6562 |
"node_modules/node-emoji": {
|
6563 |
"version": "1.11.0",
|
6564 |
"resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz",
|
@@ -6599,6 +7005,21 @@
|
|
6599 |
"integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
|
6600 |
"dev": true
|
6601 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6602 |
"node_modules/normalize-path": {
|
6603 |
"version": "3.0.0",
|
6604 |
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
|
@@ -6626,6 +7047,19 @@
|
|
6626 |
"node": ">=8"
|
6627 |
}
|
6628 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6629 |
"node_modules/object-assign": {
|
6630 |
"version": "4.1.1",
|
6631 |
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
@@ -6660,7 +7094,6 @@
|
|
6660 |
"version": "1.4.0",
|
6661 |
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
6662 |
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
6663 |
-
"dev": true,
|
6664 |
"dependencies": {
|
6665 |
"wrappy": "1"
|
6666 |
}
|
@@ -6842,7 +7275,6 @@
|
|
6842 |
"version": "1.0.1",
|
6843 |
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
6844 |
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
|
6845 |
-
"dev": true,
|
6846 |
"engines": {
|
6847 |
"node": ">=0.10.0"
|
6848 |
}
|
@@ -7475,7 +7907,6 @@
|
|
7475 |
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
7476 |
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
7477 |
"deprecated": "Rimraf versions prior to v4 are no longer supported",
|
7478 |
-
"dev": true,
|
7479 |
"dependencies": {
|
7480 |
"glob": "^7.1.3"
|
7481 |
},
|
@@ -7490,7 +7921,6 @@
|
|
7490 |
"version": "1.1.11",
|
7491 |
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
7492 |
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
7493 |
-
"dev": true,
|
7494 |
"dependencies": {
|
7495 |
"balanced-match": "^1.0.0",
|
7496 |
"concat-map": "0.0.1"
|
@@ -7501,7 +7931,6 @@
|
|
7501 |
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
7502 |
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
|
7503 |
"deprecated": "Glob versions prior to v9 are no longer supported",
|
7504 |
-
"dev": true,
|
7505 |
"dependencies": {
|
7506 |
"fs.realpath": "^1.0.0",
|
7507 |
"inflight": "^1.0.4",
|
@@ -7521,7 +7950,6 @@
|
|
7521 |
"version": "3.1.2",
|
7522 |
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
7523 |
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
7524 |
-
"dev": true,
|
7525 |
"dependencies": {
|
7526 |
"brace-expansion": "^1.1.7"
|
7527 |
},
|
@@ -7646,7 +8074,6 @@
|
|
7646 |
"version": "7.6.3",
|
7647 |
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
|
7648 |
"integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
|
7649 |
-
"dev": true,
|
7650 |
"bin": {
|
7651 |
"semver": "bin/semver.js"
|
7652 |
},
|
@@ -7726,6 +8153,12 @@
|
|
7726 |
"node": ">= 0.8.0"
|
7727 |
}
|
7728 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
7729 |
"node_modules/set-function-length": {
|
7730 |
"version": "1.2.2",
|
7731 |
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
|
@@ -8117,6 +8550,50 @@
|
|
8117 |
"node": ">=6"
|
8118 |
}
|
8119 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8120 |
"node_modules/terser": {
|
8121 |
"version": "5.33.0",
|
8122 |
"resolved": "https://registry.npmjs.org/terser/-/terser-5.33.0.tgz",
|
@@ -8738,8 +9215,7 @@
|
|
8738 |
"node_modules/undici-types": {
|
8739 |
"version": "6.19.8",
|
8740 |
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
|
8741 |
-
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw=="
|
8742 |
-
"devOptional": true
|
8743 |
},
|
8744 |
"node_modules/universalify": {
|
8745 |
"version": "2.0.1",
|
@@ -8842,6 +9318,15 @@
|
|
8842 |
"node": ">=10.12.0"
|
8843 |
}
|
8844 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8845 |
"node_modules/vary": {
|
8846 |
"version": "1.1.2",
|
8847 |
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
@@ -8995,6 +9480,15 @@
|
|
8995 |
"node": ">= 8"
|
8996 |
}
|
8997 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8998 |
"node_modules/word-wrap": {
|
8999 |
"version": "1.2.5",
|
9000 |
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
|
@@ -9038,8 +9532,7 @@
|
|
9038 |
"node_modules/wrappy": {
|
9039 |
"version": "1.0.2",
|
9040 |
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
9041 |
-
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
|
9042 |
-
"dev": true
|
9043 |
},
|
9044 |
"node_modules/write-file-atomic": {
|
9045 |
"version": "4.0.2",
|
|
|
12 |
"@nestjs/common": "^10.0.0",
|
13 |
"@nestjs/config": "^3.2.3",
|
14 |
"@nestjs/core": "^10.0.0",
|
15 |
+
"@nestjs/jwt": "^10.2.0",
|
16 |
"@nestjs/mapped-types": "*",
|
17 |
"@nestjs/platform-express": "^10.0.0",
|
18 |
"@nestjs/typeorm": "^10.0.2",
|
19 |
+
"bcrypt": "^5.1.1",
|
20 |
+
"class-validator": "^0.14.1",
|
21 |
"dotenv": "^16.4.5",
|
22 |
"mysql2": "^3.11.3",
|
23 |
"nest-access-control": "^3.1.0",
|
|
|
1558 |
"node": ">=8"
|
1559 |
}
|
1560 |
},
|
1561 |
+
"node_modules/@mapbox/node-pre-gyp": {
|
1562 |
+
"version": "1.0.11",
|
1563 |
+
"resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
|
1564 |
+
"integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==",
|
1565 |
+
"license": "BSD-3-Clause",
|
1566 |
+
"dependencies": {
|
1567 |
+
"detect-libc": "^2.0.0",
|
1568 |
+
"https-proxy-agent": "^5.0.0",
|
1569 |
+
"make-dir": "^3.1.0",
|
1570 |
+
"node-fetch": "^2.6.7",
|
1571 |
+
"nopt": "^5.0.0",
|
1572 |
+
"npmlog": "^5.0.1",
|
1573 |
+
"rimraf": "^3.0.2",
|
1574 |
+
"semver": "^7.3.5",
|
1575 |
+
"tar": "^6.1.11"
|
1576 |
+
},
|
1577 |
+
"bin": {
|
1578 |
+
"node-pre-gyp": "bin/node-pre-gyp"
|
1579 |
+
}
|
1580 |
+
},
|
1581 |
+
"node_modules/@mapbox/node-pre-gyp/node_modules/make-dir": {
|
1582 |
+
"version": "3.1.0",
|
1583 |
+
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
|
1584 |
+
"integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
|
1585 |
+
"license": "MIT",
|
1586 |
+
"dependencies": {
|
1587 |
+
"semver": "^6.0.0"
|
1588 |
+
},
|
1589 |
+
"engines": {
|
1590 |
+
"node": ">=8"
|
1591 |
+
},
|
1592 |
+
"funding": {
|
1593 |
+
"url": "https://github.com/sponsors/sindresorhus"
|
1594 |
+
}
|
1595 |
+
},
|
1596 |
+
"node_modules/@mapbox/node-pre-gyp/node_modules/make-dir/node_modules/semver": {
|
1597 |
+
"version": "6.3.1",
|
1598 |
+
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
1599 |
+
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
1600 |
+
"license": "ISC",
|
1601 |
+
"bin": {
|
1602 |
+
"semver": "bin/semver.js"
|
1603 |
+
}
|
1604 |
+
},
|
1605 |
"node_modules/@nestjs/cli": {
|
1606 |
"version": "10.4.5",
|
1607 |
"resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-10.4.5.tgz",
|
|
|
1739 |
}
|
1740 |
}
|
1741 |
},
|
1742 |
+
"node_modules/@nestjs/jwt": {
|
1743 |
+
"version": "10.2.0",
|
1744 |
+
"resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-10.2.0.tgz",
|
1745 |
+
"integrity": "sha512-x8cG90SURkEiLOehNaN2aRlotxT0KZESUliOPKKnjWiyJOcWurkF3w345WOX0P4MgFzUjGoZ1Sy0aZnxeihT0g==",
|
1746 |
+
"license": "MIT",
|
1747 |
+
"dependencies": {
|
1748 |
+
"@types/jsonwebtoken": "9.0.5",
|
1749 |
+
"jsonwebtoken": "9.0.2"
|
1750 |
+
},
|
1751 |
+
"peerDependencies": {
|
1752 |
+
"@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0"
|
1753 |
+
}
|
1754 |
+
},
|
1755 |
"node_modules/@nestjs/mapped-types": {
|
1756 |
"version": "2.0.5",
|
1757 |
"resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.0.5.tgz",
|
|
|
2133 |
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
|
2134 |
"dev": true
|
2135 |
},
|
2136 |
+
"node_modules/@types/jsonwebtoken": {
|
2137 |
+
"version": "9.0.5",
|
2138 |
+
"resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.5.tgz",
|
2139 |
+
"integrity": "sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==",
|
2140 |
+
"license": "MIT",
|
2141 |
+
"dependencies": {
|
2142 |
+
"@types/node": "*"
|
2143 |
+
}
|
2144 |
+
},
|
2145 |
"node_modules/@types/methods": {
|
2146 |
"version": "1.1.4",
|
2147 |
"resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz",
|
|
|
2158 |
"version": "20.16.5",
|
2159 |
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz",
|
2160 |
"integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==",
|
|
|
2161 |
"dependencies": {
|
2162 |
"undici-types": "~6.19.2"
|
2163 |
}
|
|
|
2223 |
"@types/superagent": "^8.1.0"
|
2224 |
}
|
2225 |
},
|
2226 |
+
"node_modules/@types/validator": {
|
2227 |
+
"version": "13.12.2",
|
2228 |
+
"resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.12.2.tgz",
|
2229 |
+
"integrity": "sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==",
|
2230 |
+
"license": "MIT"
|
2231 |
+
},
|
2232 |
"node_modules/@types/yargs": {
|
2233 |
"version": "17.0.33",
|
2234 |
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz",
|
|
|
2590 |
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
|
2591 |
"dev": true
|
2592 |
},
|
2593 |
+
"node_modules/abbrev": {
|
2594 |
+
"version": "1.1.1",
|
2595 |
+
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
2596 |
+
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
|
2597 |
+
"license": "ISC"
|
2598 |
+
},
|
2599 |
"node_modules/accepts": {
|
2600 |
"version": "1.3.8",
|
2601 |
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
|
|
|
2659 |
"node": ">=0.4.0"
|
2660 |
}
|
2661 |
},
|
2662 |
+
"node_modules/agent-base": {
|
2663 |
+
"version": "6.0.2",
|
2664 |
+
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
|
2665 |
+
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
|
2666 |
+
"license": "MIT",
|
2667 |
+
"dependencies": {
|
2668 |
+
"debug": "4"
|
2669 |
+
},
|
2670 |
+
"engines": {
|
2671 |
+
"node": ">= 6.0.0"
|
2672 |
+
}
|
2673 |
+
},
|
2674 |
"node_modules/ajv": {
|
2675 |
"version": "8.12.0",
|
2676 |
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
|
|
|
2805 |
"resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
|
2806 |
"integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw=="
|
2807 |
},
|
2808 |
+
"node_modules/aproba": {
|
2809 |
+
"version": "2.0.0",
|
2810 |
+
"resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
|
2811 |
+
"integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
|
2812 |
+
"license": "ISC"
|
2813 |
+
},
|
2814 |
+
"node_modules/are-we-there-yet": {
|
2815 |
+
"version": "2.0.0",
|
2816 |
+
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
|
2817 |
+
"integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
|
2818 |
+
"deprecated": "This package is no longer supported.",
|
2819 |
+
"license": "ISC",
|
2820 |
+
"dependencies": {
|
2821 |
+
"delegates": "^1.0.0",
|
2822 |
+
"readable-stream": "^3.6.0"
|
2823 |
+
},
|
2824 |
+
"engines": {
|
2825 |
+
"node": ">=10"
|
2826 |
+
}
|
2827 |
+
},
|
2828 |
+
"node_modules/are-we-there-yet/node_modules/readable-stream": {
|
2829 |
+
"version": "3.6.2",
|
2830 |
+
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
|
2831 |
+
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
|
2832 |
+
"license": "MIT",
|
2833 |
+
"dependencies": {
|
2834 |
+
"inherits": "^2.0.3",
|
2835 |
+
"string_decoder": "^1.1.1",
|
2836 |
+
"util-deprecate": "^1.0.1"
|
2837 |
+
},
|
2838 |
+
"engines": {
|
2839 |
+
"node": ">= 6"
|
2840 |
+
}
|
2841 |
+
},
|
2842 |
"node_modules/arg": {
|
2843 |
"version": "4.1.3",
|
2844 |
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
|
|
|
3031 |
}
|
3032 |
]
|
3033 |
},
|
3034 |
+
"node_modules/bcrypt": {
|
3035 |
+
"version": "5.1.1",
|
3036 |
+
"resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz",
|
3037 |
+
"integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==",
|
3038 |
+
"hasInstallScript": true,
|
3039 |
+
"license": "MIT",
|
3040 |
+
"dependencies": {
|
3041 |
+
"@mapbox/node-pre-gyp": "^1.0.11",
|
3042 |
+
"node-addon-api": "^5.0.0"
|
3043 |
+
},
|
3044 |
+
"engines": {
|
3045 |
+
"node": ">= 10.0.0"
|
3046 |
+
}
|
3047 |
+
},
|
3048 |
"node_modules/binary-extensions": {
|
3049 |
"version": "2.3.0",
|
3050 |
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
|
|
|
3215 |
"ieee754": "^1.1.13"
|
3216 |
}
|
3217 |
},
|
3218 |
+
"node_modules/buffer-equal-constant-time": {
|
3219 |
+
"version": "1.0.1",
|
3220 |
+
"resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
|
3221 |
+
"integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
|
3222 |
+
"license": "BSD-3-Clause"
|
3223 |
+
},
|
3224 |
"node_modules/buffer-from": {
|
3225 |
"version": "1.1.2",
|
3226 |
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
|
|
|
3355 |
"fsevents": "~2.3.2"
|
3356 |
}
|
3357 |
},
|
3358 |
+
"node_modules/chownr": {
|
3359 |
+
"version": "2.0.0",
|
3360 |
+
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
|
3361 |
+
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
|
3362 |
+
"license": "ISC",
|
3363 |
+
"engines": {
|
3364 |
+
"node": ">=10"
|
3365 |
+
}
|
3366 |
+
},
|
3367 |
"node_modules/chrome-trace-event": {
|
3368 |
"version": "1.0.4",
|
3369 |
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
|
|
|
3394 |
"integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==",
|
3395 |
"dev": true
|
3396 |
},
|
3397 |
+
"node_modules/class-validator": {
|
3398 |
+
"version": "0.14.1",
|
3399 |
+
"resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.1.tgz",
|
3400 |
+
"integrity": "sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ==",
|
3401 |
+
"license": "MIT",
|
3402 |
+
"dependencies": {
|
3403 |
+
"@types/validator": "^13.11.8",
|
3404 |
+
"libphonenumber-js": "^1.10.53",
|
3405 |
+
"validator": "^13.9.0"
|
3406 |
+
}
|
3407 |
+
},
|
3408 |
"node_modules/cli-cursor": {
|
3409 |
"version": "3.1.0",
|
3410 |
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
|
|
|
3594 |
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
3595 |
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
3596 |
},
|
3597 |
+
"node_modules/color-support": {
|
3598 |
+
"version": "1.1.3",
|
3599 |
+
"resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
|
3600 |
+
"integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
|
3601 |
+
"license": "ISC",
|
3602 |
+
"bin": {
|
3603 |
+
"color-support": "bin.js"
|
3604 |
+
}
|
3605 |
+
},
|
3606 |
"node_modules/combined-stream": {
|
3607 |
"version": "1.0.8",
|
3608 |
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
|
|
3652 |
"node_modules/concat-map": {
|
3653 |
"version": "0.0.1",
|
3654 |
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
3655 |
+
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
|
|
|
3656 |
},
|
3657 |
"node_modules/concat-stream": {
|
3658 |
"version": "1.6.2",
|
|
|
3673 |
"resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
|
3674 |
"integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw=="
|
3675 |
},
|
3676 |
+
"node_modules/console-control-strings": {
|
3677 |
+
"version": "1.1.0",
|
3678 |
+
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
|
3679 |
+
"integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
|
3680 |
+
"license": "ISC"
|
3681 |
+
},
|
3682 |
"node_modules/content-disposition": {
|
3683 |
"version": "0.5.4",
|
3684 |
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
|
|
|
3893 |
"node": ">=0.4.0"
|
3894 |
}
|
3895 |
},
|
3896 |
+
"node_modules/delegates": {
|
3897 |
+
"version": "1.0.0",
|
3898 |
+
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
|
3899 |
+
"integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
|
3900 |
+
"license": "MIT"
|
3901 |
+
},
|
3902 |
"node_modules/denque": {
|
3903 |
"version": "2.1.0",
|
3904 |
"resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
|
|
|
3924 |
"npm": "1.2.8000 || >= 1.4.16"
|
3925 |
}
|
3926 |
},
|
3927 |
+
"node_modules/detect-libc": {
|
3928 |
+
"version": "2.0.3",
|
3929 |
+
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
|
3930 |
+
"integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
|
3931 |
+
"license": "Apache-2.0",
|
3932 |
+
"engines": {
|
3933 |
+
"node": ">=8"
|
3934 |
+
}
|
3935 |
+
},
|
3936 |
"node_modules/detect-newline": {
|
3937 |
"version": "3.1.0",
|
3938 |
"resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
|
|
|
4006 |
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
|
4007 |
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
|
4008 |
},
|
4009 |
+
"node_modules/ecdsa-sig-formatter": {
|
4010 |
+
"version": "1.0.11",
|
4011 |
+
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
|
4012 |
+
"integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
|
4013 |
+
"license": "Apache-2.0",
|
4014 |
+
"dependencies": {
|
4015 |
+
"safe-buffer": "^5.0.1"
|
4016 |
+
}
|
4017 |
+
},
|
4018 |
"node_modules/ee-first": {
|
4019 |
"version": "1.1.1",
|
4020 |
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
|
|
4856 |
"node": ">=12"
|
4857 |
}
|
4858 |
},
|
4859 |
+
"node_modules/fs-minipass": {
|
4860 |
+
"version": "2.1.0",
|
4861 |
+
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
|
4862 |
+
"integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
|
4863 |
+
"license": "ISC",
|
4864 |
+
"dependencies": {
|
4865 |
+
"minipass": "^3.0.0"
|
4866 |
+
},
|
4867 |
+
"engines": {
|
4868 |
+
"node": ">= 8"
|
4869 |
+
}
|
4870 |
+
},
|
4871 |
+
"node_modules/fs-minipass/node_modules/minipass": {
|
4872 |
+
"version": "3.3.6",
|
4873 |
+
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
|
4874 |
+
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
|
4875 |
+
"license": "ISC",
|
4876 |
+
"dependencies": {
|
4877 |
+
"yallist": "^4.0.0"
|
4878 |
+
},
|
4879 |
+
"engines": {
|
4880 |
+
"node": ">=8"
|
4881 |
+
}
|
4882 |
+
},
|
4883 |
+
"node_modules/fs-minipass/node_modules/yallist": {
|
4884 |
+
"version": "4.0.0",
|
4885 |
+
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
4886 |
+
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
4887 |
+
"license": "ISC"
|
4888 |
+
},
|
4889 |
"node_modules/fs-monkey": {
|
4890 |
"version": "1.0.6",
|
4891 |
"resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz",
|
|
|
4895 |
"node_modules/fs.realpath": {
|
4896 |
"version": "1.0.0",
|
4897 |
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
4898 |
+
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
|
|
|
4899 |
},
|
4900 |
"node_modules/fsevents": {
|
4901 |
"version": "2.3.3",
|
|
|
4919 |
"url": "https://github.com/sponsors/ljharb"
|
4920 |
}
|
4921 |
},
|
4922 |
+
"node_modules/gauge": {
|
4923 |
+
"version": "3.0.2",
|
4924 |
+
"resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
|
4925 |
+
"integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
|
4926 |
+
"deprecated": "This package is no longer supported.",
|
4927 |
+
"license": "ISC",
|
4928 |
+
"dependencies": {
|
4929 |
+
"aproba": "^1.0.3 || ^2.0.0",
|
4930 |
+
"color-support": "^1.1.2",
|
4931 |
+
"console-control-strings": "^1.0.0",
|
4932 |
+
"has-unicode": "^2.0.1",
|
4933 |
+
"object-assign": "^4.1.1",
|
4934 |
+
"signal-exit": "^3.0.0",
|
4935 |
+
"string-width": "^4.2.3",
|
4936 |
+
"strip-ansi": "^6.0.1",
|
4937 |
+
"wide-align": "^1.1.2"
|
4938 |
+
},
|
4939 |
+
"engines": {
|
4940 |
+
"node": ">=10"
|
4941 |
+
}
|
4942 |
+
},
|
4943 |
+
"node_modules/gauge/node_modules/signal-exit": {
|
4944 |
+
"version": "3.0.7",
|
4945 |
+
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
|
4946 |
+
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
|
4947 |
+
"license": "ISC"
|
4948 |
+
},
|
4949 |
"node_modules/generate-function": {
|
4950 |
"version": "2.3.1",
|
4951 |
"resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
|
|
|
5138 |
"url": "https://github.com/sponsors/ljharb"
|
5139 |
}
|
5140 |
},
|
5141 |
+
"node_modules/has-unicode": {
|
5142 |
+
"version": "2.0.1",
|
5143 |
+
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
|
5144 |
+
"integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
|
5145 |
+
"license": "ISC"
|
5146 |
+
},
|
5147 |
"node_modules/hasown": {
|
5148 |
"version": "2.0.2",
|
5149 |
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
|
|
|
5193 |
"node": ">= 0.8"
|
5194 |
}
|
5195 |
},
|
5196 |
+
"node_modules/https-proxy-agent": {
|
5197 |
+
"version": "5.0.1",
|
5198 |
+
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
|
5199 |
+
"integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
|
5200 |
+
"license": "MIT",
|
5201 |
+
"dependencies": {
|
5202 |
+
"agent-base": "6",
|
5203 |
+
"debug": "4"
|
5204 |
+
},
|
5205 |
+
"engines": {
|
5206 |
+
"node": ">= 6"
|
5207 |
+
}
|
5208 |
+
},
|
5209 |
"node_modules/human-signals": {
|
5210 |
"version": "2.1.0",
|
5211 |
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
|
|
|
5303 |
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
5304 |
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
|
5305 |
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
|
|
|
5306 |
"dependencies": {
|
5307 |
"once": "^1.3.0",
|
5308 |
"wrappy": "1"
|
|
|
6377 |
"graceful-fs": "^4.1.6"
|
6378 |
}
|
6379 |
},
|
6380 |
+
"node_modules/jsonwebtoken": {
|
6381 |
+
"version": "9.0.2",
|
6382 |
+
"resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
|
6383 |
+
"integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
|
6384 |
+
"license": "MIT",
|
6385 |
+
"dependencies": {
|
6386 |
+
"jws": "^3.2.2",
|
6387 |
+
"lodash.includes": "^4.3.0",
|
6388 |
+
"lodash.isboolean": "^3.0.3",
|
6389 |
+
"lodash.isinteger": "^4.0.4",
|
6390 |
+
"lodash.isnumber": "^3.0.3",
|
6391 |
+
"lodash.isplainobject": "^4.0.6",
|
6392 |
+
"lodash.isstring": "^4.0.1",
|
6393 |
+
"lodash.once": "^4.0.0",
|
6394 |
+
"ms": "^2.1.1",
|
6395 |
+
"semver": "^7.5.4"
|
6396 |
+
},
|
6397 |
+
"engines": {
|
6398 |
+
"node": ">=12",
|
6399 |
+
"npm": ">=6"
|
6400 |
+
}
|
6401 |
+
},
|
6402 |
+
"node_modules/jwa": {
|
6403 |
+
"version": "1.4.1",
|
6404 |
+
"resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
|
6405 |
+
"integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
|
6406 |
+
"license": "MIT",
|
6407 |
+
"dependencies": {
|
6408 |
+
"buffer-equal-constant-time": "1.0.1",
|
6409 |
+
"ecdsa-sig-formatter": "1.0.11",
|
6410 |
+
"safe-buffer": "^5.0.1"
|
6411 |
+
}
|
6412 |
+
},
|
6413 |
+
"node_modules/jws": {
|
6414 |
+
"version": "3.2.2",
|
6415 |
+
"resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
|
6416 |
+
"integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
|
6417 |
+
"license": "MIT",
|
6418 |
+
"dependencies": {
|
6419 |
+
"jwa": "^1.4.1",
|
6420 |
+
"safe-buffer": "^5.0.1"
|
6421 |
+
}
|
6422 |
+
},
|
6423 |
"node_modules/keyv": {
|
6424 |
"version": "4.5.4",
|
6425 |
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
|
|
|
6460 |
"node": ">= 0.8.0"
|
6461 |
}
|
6462 |
},
|
6463 |
+
"node_modules/libphonenumber-js": {
|
6464 |
+
"version": "1.11.12",
|
6465 |
+
"resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.11.12.tgz",
|
6466 |
+
"integrity": "sha512-QkJn9/D7zZ1ucvT++TQSvZuSA2xAWeUytU+DiEQwbPKLyrDpvbul2AFs1CGbRAPpSCCk47aRAb5DX5mmcayp4g==",
|
6467 |
+
"license": "MIT"
|
6468 |
+
},
|
6469 |
"node_modules/lines-and-columns": {
|
6470 |
"version": "1.2.4",
|
6471 |
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
|
|
|
6501 |
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
6502 |
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
6503 |
},
|
6504 |
+
"node_modules/lodash.includes": {
|
6505 |
+
"version": "4.3.0",
|
6506 |
+
"resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
|
6507 |
+
"integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
|
6508 |
+
"license": "MIT"
|
6509 |
+
},
|
6510 |
+
"node_modules/lodash.isboolean": {
|
6511 |
+
"version": "3.0.3",
|
6512 |
+
"resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
|
6513 |
+
"integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
|
6514 |
+
"license": "MIT"
|
6515 |
+
},
|
6516 |
+
"node_modules/lodash.isinteger": {
|
6517 |
+
"version": "4.0.4",
|
6518 |
+
"resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
|
6519 |
+
"integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
|
6520 |
+
"license": "MIT"
|
6521 |
+
},
|
6522 |
+
"node_modules/lodash.isnumber": {
|
6523 |
+
"version": "3.0.3",
|
6524 |
+
"resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
|
6525 |
+
"integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
|
6526 |
+
"license": "MIT"
|
6527 |
+
},
|
6528 |
+
"node_modules/lodash.isplainobject": {
|
6529 |
+
"version": "4.0.6",
|
6530 |
+
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
|
6531 |
+
"integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
|
6532 |
+
"license": "MIT"
|
6533 |
+
},
|
6534 |
+
"node_modules/lodash.isstring": {
|
6535 |
+
"version": "4.0.1",
|
6536 |
+
"resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
|
6537 |
+
"integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
|
6538 |
+
"license": "MIT"
|
6539 |
+
},
|
6540 |
"node_modules/lodash.memoize": {
|
6541 |
"version": "4.1.2",
|
6542 |
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
|
|
|
6549 |
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
|
6550 |
"dev": true
|
6551 |
},
|
6552 |
+
"node_modules/lodash.once": {
|
6553 |
+
"version": "4.1.1",
|
6554 |
+
"resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
|
6555 |
+
"integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
|
6556 |
+
"license": "MIT"
|
6557 |
+
},
|
6558 |
"node_modules/log-symbols": {
|
6559 |
"version": "4.1.0",
|
6560 |
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
|
|
|
6786 |
"node": ">=16 || 14 >=14.17"
|
6787 |
}
|
6788 |
},
|
6789 |
+
"node_modules/minizlib": {
|
6790 |
+
"version": "2.1.2",
|
6791 |
+
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
|
6792 |
+
"integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
|
6793 |
+
"license": "MIT",
|
6794 |
+
"dependencies": {
|
6795 |
+
"minipass": "^3.0.0",
|
6796 |
+
"yallist": "^4.0.0"
|
6797 |
+
},
|
6798 |
+
"engines": {
|
6799 |
+
"node": ">= 8"
|
6800 |
+
}
|
6801 |
+
},
|
6802 |
+
"node_modules/minizlib/node_modules/minipass": {
|
6803 |
+
"version": "3.3.6",
|
6804 |
+
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
|
6805 |
+
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
|
6806 |
+
"license": "ISC",
|
6807 |
+
"dependencies": {
|
6808 |
+
"yallist": "^4.0.0"
|
6809 |
+
},
|
6810 |
+
"engines": {
|
6811 |
+
"node": ">=8"
|
6812 |
+
}
|
6813 |
+
},
|
6814 |
+
"node_modules/minizlib/node_modules/yallist": {
|
6815 |
+
"version": "4.0.0",
|
6816 |
+
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
6817 |
+
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
6818 |
+
"license": "ISC"
|
6819 |
+
},
|
6820 |
"node_modules/mkdirp": {
|
6821 |
"version": "0.5.6",
|
6822 |
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
|
|
|
6959 |
"integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==",
|
6960 |
"dev": true
|
6961 |
},
|
6962 |
+
"node_modules/node-addon-api": {
|
6963 |
+
"version": "5.1.0",
|
6964 |
+
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz",
|
6965 |
+
"integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==",
|
6966 |
+
"license": "MIT"
|
6967 |
+
},
|
6968 |
"node_modules/node-emoji": {
|
6969 |
"version": "1.11.0",
|
6970 |
"resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz",
|
|
|
7005 |
"integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
|
7006 |
"dev": true
|
7007 |
},
|
7008 |
+
"node_modules/nopt": {
|
7009 |
+
"version": "5.0.0",
|
7010 |
+
"resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
|
7011 |
+
"integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
|
7012 |
+
"license": "ISC",
|
7013 |
+
"dependencies": {
|
7014 |
+
"abbrev": "1"
|
7015 |
+
},
|
7016 |
+
"bin": {
|
7017 |
+
"nopt": "bin/nopt.js"
|
7018 |
+
},
|
7019 |
+
"engines": {
|
7020 |
+
"node": ">=6"
|
7021 |
+
}
|
7022 |
+
},
|
7023 |
"node_modules/normalize-path": {
|
7024 |
"version": "3.0.0",
|
7025 |
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
|
|
|
7047 |
"node": ">=8"
|
7048 |
}
|
7049 |
},
|
7050 |
+
"node_modules/npmlog": {
|
7051 |
+
"version": "5.0.1",
|
7052 |
+
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
|
7053 |
+
"integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
|
7054 |
+
"deprecated": "This package is no longer supported.",
|
7055 |
+
"license": "ISC",
|
7056 |
+
"dependencies": {
|
7057 |
+
"are-we-there-yet": "^2.0.0",
|
7058 |
+
"console-control-strings": "^1.1.0",
|
7059 |
+
"gauge": "^3.0.0",
|
7060 |
+
"set-blocking": "^2.0.0"
|
7061 |
+
}
|
7062 |
+
},
|
7063 |
"node_modules/object-assign": {
|
7064 |
"version": "4.1.1",
|
7065 |
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
|
|
7094 |
"version": "1.4.0",
|
7095 |
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
7096 |
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
|
|
7097 |
"dependencies": {
|
7098 |
"wrappy": "1"
|
7099 |
}
|
|
|
7275 |
"version": "1.0.1",
|
7276 |
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
7277 |
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
|
|
|
7278 |
"engines": {
|
7279 |
"node": ">=0.10.0"
|
7280 |
}
|
|
|
7907 |
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
7908 |
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
7909 |
"deprecated": "Rimraf versions prior to v4 are no longer supported",
|
|
|
7910 |
"dependencies": {
|
7911 |
"glob": "^7.1.3"
|
7912 |
},
|
|
|
7921 |
"version": "1.1.11",
|
7922 |
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
7923 |
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
|
|
7924 |
"dependencies": {
|
7925 |
"balanced-match": "^1.0.0",
|
7926 |
"concat-map": "0.0.1"
|
|
|
7931 |
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
7932 |
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
|
7933 |
"deprecated": "Glob versions prior to v9 are no longer supported",
|
|
|
7934 |
"dependencies": {
|
7935 |
"fs.realpath": "^1.0.0",
|
7936 |
"inflight": "^1.0.4",
|
|
|
7950 |
"version": "3.1.2",
|
7951 |
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
7952 |
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
|
|
7953 |
"dependencies": {
|
7954 |
"brace-expansion": "^1.1.7"
|
7955 |
},
|
|
|
8074 |
"version": "7.6.3",
|
8075 |
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
|
8076 |
"integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
|
|
|
8077 |
"bin": {
|
8078 |
"semver": "bin/semver.js"
|
8079 |
},
|
|
|
8153 |
"node": ">= 0.8.0"
|
8154 |
}
|
8155 |
},
|
8156 |
+
"node_modules/set-blocking": {
|
8157 |
+
"version": "2.0.0",
|
8158 |
+
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
|
8159 |
+
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
|
8160 |
+
"license": "ISC"
|
8161 |
+
},
|
8162 |
"node_modules/set-function-length": {
|
8163 |
"version": "1.2.2",
|
8164 |
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
|
|
|
8550 |
"node": ">=6"
|
8551 |
}
|
8552 |
},
|
8553 |
+
"node_modules/tar": {
|
8554 |
+
"version": "6.2.1",
|
8555 |
+
"resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
|
8556 |
+
"integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
|
8557 |
+
"license": "ISC",
|
8558 |
+
"dependencies": {
|
8559 |
+
"chownr": "^2.0.0",
|
8560 |
+
"fs-minipass": "^2.0.0",
|
8561 |
+
"minipass": "^5.0.0",
|
8562 |
+
"minizlib": "^2.1.1",
|
8563 |
+
"mkdirp": "^1.0.3",
|
8564 |
+
"yallist": "^4.0.0"
|
8565 |
+
},
|
8566 |
+
"engines": {
|
8567 |
+
"node": ">=10"
|
8568 |
+
}
|
8569 |
+
},
|
8570 |
+
"node_modules/tar/node_modules/minipass": {
|
8571 |
+
"version": "5.0.0",
|
8572 |
+
"resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
|
8573 |
+
"integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
|
8574 |
+
"license": "ISC",
|
8575 |
+
"engines": {
|
8576 |
+
"node": ">=8"
|
8577 |
+
}
|
8578 |
+
},
|
8579 |
+
"node_modules/tar/node_modules/mkdirp": {
|
8580 |
+
"version": "1.0.4",
|
8581 |
+
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
|
8582 |
+
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
|
8583 |
+
"license": "MIT",
|
8584 |
+
"bin": {
|
8585 |
+
"mkdirp": "bin/cmd.js"
|
8586 |
+
},
|
8587 |
+
"engines": {
|
8588 |
+
"node": ">=10"
|
8589 |
+
}
|
8590 |
+
},
|
8591 |
+
"node_modules/tar/node_modules/yallist": {
|
8592 |
+
"version": "4.0.0",
|
8593 |
+
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
8594 |
+
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
8595 |
+
"license": "ISC"
|
8596 |
+
},
|
8597 |
"node_modules/terser": {
|
8598 |
"version": "5.33.0",
|
8599 |
"resolved": "https://registry.npmjs.org/terser/-/terser-5.33.0.tgz",
|
|
|
9215 |
"node_modules/undici-types": {
|
9216 |
"version": "6.19.8",
|
9217 |
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
|
9218 |
+
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw=="
|
|
|
9219 |
},
|
9220 |
"node_modules/universalify": {
|
9221 |
"version": "2.0.1",
|
|
|
9318 |
"node": ">=10.12.0"
|
9319 |
}
|
9320 |
},
|
9321 |
+
"node_modules/validator": {
|
9322 |
+
"version": "13.12.0",
|
9323 |
+
"resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz",
|
9324 |
+
"integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==",
|
9325 |
+
"license": "MIT",
|
9326 |
+
"engines": {
|
9327 |
+
"node": ">= 0.10"
|
9328 |
+
}
|
9329 |
+
},
|
9330 |
"node_modules/vary": {
|
9331 |
"version": "1.1.2",
|
9332 |
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
|
|
9480 |
"node": ">= 8"
|
9481 |
}
|
9482 |
},
|
9483 |
+
"node_modules/wide-align": {
|
9484 |
+
"version": "1.1.5",
|
9485 |
+
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
|
9486 |
+
"integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
|
9487 |
+
"license": "ISC",
|
9488 |
+
"dependencies": {
|
9489 |
+
"string-width": "^1.0.2 || 2 || 3 || 4"
|
9490 |
+
}
|
9491 |
+
},
|
9492 |
"node_modules/word-wrap": {
|
9493 |
"version": "1.2.5",
|
9494 |
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
|
|
|
9532 |
"node_modules/wrappy": {
|
9533 |
"version": "1.0.2",
|
9534 |
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
9535 |
+
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
|
|
|
9536 |
},
|
9537 |
"node_modules/write-file-atomic": {
|
9538 |
"version": "4.0.2",
|
backend/package.json
CHANGED
@@ -28,9 +28,12 @@
|
|
28 |
"@nestjs/common": "^10.0.0",
|
29 |
"@nestjs/config": "^3.2.3",
|
30 |
"@nestjs/core": "^10.0.0",
|
|
|
31 |
"@nestjs/mapped-types": "*",
|
32 |
"@nestjs/platform-express": "^10.0.0",
|
33 |
"@nestjs/typeorm": "^10.0.2",
|
|
|
|
|
34 |
"dotenv": "^16.4.5",
|
35 |
"mysql2": "^3.11.3",
|
36 |
"nest-access-control": "^3.1.0",
|
|
|
28 |
"@nestjs/common": "^10.0.0",
|
29 |
"@nestjs/config": "^3.2.3",
|
30 |
"@nestjs/core": "^10.0.0",
|
31 |
+
"@nestjs/jwt": "^10.2.0",
|
32 |
"@nestjs/mapped-types": "*",
|
33 |
"@nestjs/platform-express": "^10.0.0",
|
34 |
"@nestjs/typeorm": "^10.0.2",
|
35 |
+
"bcrypt": "^5.1.1",
|
36 |
+
"class-validator": "^0.14.1",
|
37 |
"dotenv": "^16.4.5",
|
38 |
"mysql2": "^3.11.3",
|
39 |
"nest-access-control": "^3.1.0",
|
backend/src/modules/authentication/authentication.controller.ts
CHANGED
@@ -1,34 +1,31 @@
|
|
1 |
-
import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common';
|
2 |
-
import { AuthenticationService } from './authentication.service';
|
3 |
-
import { CreateAuthenticationDto } from './dto/create-authentication.dto';
|
4 |
-
import { UpdateAuthenticationDto } from './dto/update-authentication.dto';
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
@Controller('authentication')
|
7 |
export class AuthenticationController {
|
8 |
-
constructor(private
|
9 |
-
|
10 |
-
@Post()
|
11 |
-
create(@Body() createAuthenticationDto: CreateAuthenticationDto) {
|
12 |
-
return this.authenticationService.create(createAuthenticationDto);
|
13 |
-
}
|
14 |
-
|
15 |
-
@Get()
|
16 |
-
findAll() {
|
17 |
-
return this.authenticationService.findAll();
|
18 |
-
}
|
19 |
-
|
20 |
-
@Get(':id')
|
21 |
-
findOne(@Param('id') id: string) {
|
22 |
-
return this.authenticationService.findOne(+id);
|
23 |
-
}
|
24 |
|
25 |
-
@
|
26 |
-
|
27 |
-
|
|
|
|
|
28 |
}
|
29 |
|
30 |
-
@
|
31 |
-
|
32 |
-
|
|
|
33 |
}
|
34 |
}
|
|
|
|
|
|
|
|
|
|
|
1 |
|
2 |
+
import {
|
3 |
+
Body,
|
4 |
+
Controller,
|
5 |
+
Get,
|
6 |
+
HttpCode,
|
7 |
+
HttpStatus,
|
8 |
+
Post,
|
9 |
+
Request,
|
10 |
+
UseGuards
|
11 |
+
} from '@nestjs/common';
|
12 |
+
import { AuthenticationGuard } from './authentication.guard';
|
13 |
+
import { AuthenticationService } from './authentication.service';
|
14 |
+
import { Public } from './authentication.decorator';
|
15 |
@Controller('authentication')
|
16 |
export class AuthenticationController {
|
17 |
+
constructor(private AuthenticationService: AuthenticationService) {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
|
19 |
+
@Public()
|
20 |
+
@HttpCode(HttpStatus.OK)
|
21 |
+
@Post('login')
|
22 |
+
signIn(@Body() signInDto: Record<string, any>) {
|
23 |
+
return this.AuthenticationService.signIn(signInDto.username, signInDto.password);
|
24 |
}
|
25 |
|
26 |
+
// @UseGuards(AuthenticationGuard)
|
27 |
+
@Get('profile')
|
28 |
+
getProfile(@Request() req) {
|
29 |
+
return req.user;
|
30 |
}
|
31 |
}
|
backend/src/modules/authentication/authentication.decorator.ts
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
import { SetMetadata } from '@nestjs/common';
|
3 |
+
|
4 |
+
export const IS_PUBLIC_KEY = 'isPublic';
|
5 |
+
export const Public = () => SetMetadata(IS_PUBLIC_KEY, true);
|
backend/src/modules/authentication/authentication.guard.ts
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
import {
|
3 |
+
CanActivate,
|
4 |
+
ExecutionContext,
|
5 |
+
Injectable,
|
6 |
+
UnauthorizedException,
|
7 |
+
} from '@nestjs/common';
|
8 |
+
import { JwtService } from '@nestjs/jwt';
|
9 |
+
import { jwtConstants } from './constants';
|
10 |
+
import { Request } from 'express';
|
11 |
+
import { Reflector } from '@nestjs/core';
|
12 |
+
import { IS_PUBLIC_KEY } from './authentication.decorator';
|
13 |
+
@Injectable()
|
14 |
+
export class AuthenticationGuard implements CanActivate {
|
15 |
+
constructor(private jwtService: JwtService, private reflector: Reflector) {}
|
16 |
+
|
17 |
+
async canActivate(context: ExecutionContext): Promise<boolean> {
|
18 |
+
const isPublic = this.reflector.getAllAndOverride<boolean>(IS_PUBLIC_KEY, [
|
19 |
+
context.getHandler(),
|
20 |
+
context.getClass(),
|
21 |
+
]);
|
22 |
+
if (isPublic) {
|
23 |
+
// 💡 See this condition
|
24 |
+
return true;
|
25 |
+
}
|
26 |
+
|
27 |
+
const request = context.switchToHttp().getRequest();
|
28 |
+
const token = this.extractTokenFromHeader(request);
|
29 |
+
if (!token) {
|
30 |
+
throw new UnauthorizedException();
|
31 |
+
}
|
32 |
+
try {
|
33 |
+
const payload = await this.jwtService.verifyAsync(token, {
|
34 |
+
secret: jwtConstants.secret,
|
35 |
+
});
|
36 |
+
// 💡 We're assigning the payload to the request object here
|
37 |
+
// so that we can access it in our route handlers
|
38 |
+
request['user'] = payload;
|
39 |
+
} catch {
|
40 |
+
throw new UnauthorizedException();
|
41 |
+
}
|
42 |
+
return true;
|
43 |
+
}
|
44 |
+
|
45 |
+
private extractTokenFromHeader(request: Request): string | undefined {
|
46 |
+
const [type, token] = request.headers.authorization?.split(' ') ?? [];
|
47 |
+
return type === 'Bearer' ? token : undefined;
|
48 |
+
}
|
49 |
+
}
|
backend/src/modules/authentication/authentication.module.ts
CHANGED
@@ -1,9 +1,29 @@
|
|
|
|
1 |
import { Module } from '@nestjs/common';
|
2 |
import { AuthenticationService } from './authentication.service';
|
|
|
|
|
3 |
import { AuthenticationController } from './authentication.controller';
|
4 |
-
|
|
|
|
|
5 |
@Module({
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
controllers: [AuthenticationController],
|
7 |
-
|
8 |
})
|
9 |
export class AuthenticationModule {}
|
|
|
1 |
+
|
2 |
import { Module } from '@nestjs/common';
|
3 |
import { AuthenticationService } from './authentication.service';
|
4 |
+
import { UserModule } from '../user/user.module';
|
5 |
+
import { JwtModule } from '@nestjs/jwt';
|
6 |
import { AuthenticationController } from './authentication.controller';
|
7 |
+
import { jwtConstants } from './constants';
|
8 |
+
import { AuthenticationGuard } from './authentication.guard';
|
9 |
+
import { APP_GUARD } from '@nestjs/core';
|
10 |
@Module({
|
11 |
+
imports: [
|
12 |
+
UserModule,
|
13 |
+
JwtModule.register({
|
14 |
+
global: true,
|
15 |
+
secret: jwtConstants.secret,
|
16 |
+
signOptions: { expiresIn: '90s' },
|
17 |
+
}),
|
18 |
+
],
|
19 |
+
providers: [
|
20 |
+
AuthenticationService,
|
21 |
+
{
|
22 |
+
provide: APP_GUARD,
|
23 |
+
useClass: AuthenticationGuard,
|
24 |
+
}
|
25 |
+
],
|
26 |
controllers: [AuthenticationController],
|
27 |
+
exports: [AuthenticationService],
|
28 |
})
|
29 |
export class AuthenticationModule {}
|
backend/src/modules/authentication/authentication.service.ts
CHANGED
@@ -1,26 +1,25 @@
|
|
1 |
-
import { Injectable } from '@nestjs/common';
|
2 |
-
import { CreateAuthenticationDto } from './dto/create-authentication.dto';
|
3 |
-
import { UpdateAuthenticationDto } from './dto/update-authentication.dto';
|
4 |
|
|
|
|
|
|
|
|
|
5 |
@Injectable()
|
6 |
export class AuthenticationService {
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
findAll() {
|
12 |
-
return `This action returns all authentication`;
|
13 |
-
}
|
14 |
-
|
15 |
-
findOne(id: number) {
|
16 |
-
return `This action returns a #${id} authentication`;
|
17 |
-
}
|
18 |
-
|
19 |
-
update(id: number, updateAuthenticationDto: UpdateAuthenticationDto) {
|
20 |
-
return `This action updates a #${id} authentication`;
|
21 |
-
}
|
22 |
|
23 |
-
|
24 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
}
|
26 |
}
|
|
|
|
|
|
|
|
|
1 |
|
2 |
+
import { Injectable, UnauthorizedException } from '@nestjs/common';
|
3 |
+
import { UserService } from '../user/user.service';
|
4 |
+
import * as bcrypt from 'bcrypt';
|
5 |
+
import { JwtService } from '@nestjs/jwt';
|
6 |
@Injectable()
|
7 |
export class AuthenticationService {
|
8 |
+
constructor(
|
9 |
+
private usersService: UserService,
|
10 |
+
private jwtService: JwtService
|
11 |
+
) {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
|
13 |
+
async signIn(username: string, pass: string): Promise<{access_token: string}> {
|
14 |
+
const user = await this.usersService.findOne(username);
|
15 |
+
if (!user || await !bcrypt.compare(pass, user.hash_password)) {
|
16 |
+
throw new UnauthorizedException();
|
17 |
+
}
|
18 |
+
const payload = { sub: user.id, username: user.id };
|
19 |
+
// TODO: Generate a JWT and return it here
|
20 |
+
// instead of the user object
|
21 |
+
return {
|
22 |
+
access_token: await this.jwtService.signAsync(payload),
|
23 |
+
};
|
24 |
}
|
25 |
}
|
backend/src/modules/authentication/constants.ts
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
export const jwtConstants = {
|
3 |
+
secret: process.env.JWT_SECRET,
|
4 |
+
};
|
5 |
+
|
backend/src/modules/authentication/dto/sign-in.dto.ts
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { IsString } from 'class-validator';
|
2 |
+
|
3 |
+
export class SignInDto {
|
4 |
+
@IsString()
|
5 |
+
username: string;
|
6 |
+
|
7 |
+
@IsString()
|
8 |
+
password: string;
|
9 |
+
}
|
backend/src/modules/user/user.controller.ts
CHANGED
@@ -1,36 +1,13 @@
|
|
1 |
-
import {
|
2 |
-
|
3 |
-
|
4 |
-
Post,
|
5 |
-
Body,
|
6 |
-
Patch,
|
7 |
-
Param,
|
8 |
-
Delete,
|
9 |
-
} from '@nestjs/common';
|
10 |
-
import { UserService } from './user.service.js';
|
11 |
-
import { CreateUserDto } from './dto/create-user.dto.js';
|
12 |
|
13 |
@Controller('users')
|
14 |
-
export class
|
15 |
-
constructor(private readonly
|
16 |
|
17 |
-
@
|
18 |
-
async
|
19 |
-
return this.
|
20 |
-
}
|
21 |
-
|
22 |
-
@Get()
|
23 |
-
async findAll() {
|
24 |
-
return this.userService.findAll();
|
25 |
-
}
|
26 |
-
|
27 |
-
@Get(':id')
|
28 |
-
async findOne(@Param('id') id: string) {
|
29 |
-
return this.userService.findOne(id);
|
30 |
-
}
|
31 |
-
|
32 |
-
@Delete(':id')
|
33 |
-
async remove(@Param('id') id: string) {
|
34 |
-
return this.userService.remove(+id);
|
35 |
}
|
36 |
}
|
|
|
1 |
+
import { Controller, Get, Param } from '@nestjs/common';
|
2 |
+
import { UserService } from './user.service';
|
3 |
+
import { UserEntity } from 'src/entities/user.entity';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
5 |
@Controller('users')
|
6 |
+
export class UsersController {
|
7 |
+
constructor(private readonly usersService: UserService) {}
|
8 |
|
9 |
+
@Get(':username')
|
10 |
+
async getUser(@Param('username') username: string): Promise<UserEntity | undefined> {
|
11 |
+
return this.usersService.findOne(username);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
}
|
13 |
}
|
backend/src/modules/user/user.module.ts
CHANGED
@@ -1,9 +1,8 @@
|
|
1 |
import { Module } from '@nestjs/common';
|
2 |
-
import { UserService } from './user.service
|
3 |
-
import { UserController } from './user.controller.js';
|
4 |
|
5 |
@Module({
|
6 |
-
controllers: [UserController],
|
7 |
providers: [UserService],
|
|
|
8 |
})
|
9 |
export class UserModule {}
|
|
|
1 |
import { Module } from '@nestjs/common';
|
2 |
+
import { UserService } from './user.service';
|
|
|
3 |
|
4 |
@Module({
|
|
|
5 |
providers: [UserService],
|
6 |
+
exports: [UserService],
|
7 |
})
|
8 |
export class UserModule {}
|
backend/src/modules/user/user.service.ts
CHANGED
@@ -1,26 +1,18 @@
|
|
1 |
import { Injectable } from '@nestjs/common';
|
2 |
-
import {
|
3 |
-
import {
|
|
|
|
|
|
|
4 |
|
5 |
@Injectable()
|
6 |
export class UserService {
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
return 'This action adds a new user';
|
12 |
-
}
|
13 |
-
|
14 |
-
async findAll() {
|
15 |
-
const users = await UserEntity.find();
|
16 |
-
return users;
|
17 |
-
}
|
18 |
-
|
19 |
-
async findOne(id: string) {
|
20 |
-
return `This action returns a #${id} user`;
|
21 |
-
}
|
22 |
|
23 |
-
async
|
24 |
-
return
|
25 |
}
|
26 |
}
|
|
|
1 |
import { Injectable } from '@nestjs/common';
|
2 |
+
import { InjectRepository } from '@nestjs/typeorm';
|
3 |
+
import { Repository } from 'typeorm';
|
4 |
+
import { UserEntity } from 'src/entities/user.entity'
|
5 |
+
// This should be a real class/interface representing a user entity
|
6 |
+
export type User = any;
|
7 |
|
8 |
@Injectable()
|
9 |
export class UserService {
|
10 |
+
constructor(
|
11 |
+
@InjectRepository(UserEntity)
|
12 |
+
private usersRepository: Repository<UserEntity>,
|
13 |
+
) {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
|
15 |
+
async findOne(username: string): Promise<UserEntity | undefined> {
|
16 |
+
return this.usersRepository.findOne({ where: { id: username } });
|
17 |
}
|
18 |
}
|