First commit
This commit is contained in:
commit
e2a99fb434
121 changed files with 3140 additions and 0 deletions
BIN
.vs/Metrolog/v17/.wsuo
Normal file
BIN
.vs/Metrolog/v17/.wsuo
Normal file
Binary file not shown.
12
.vs/Metrolog/v17/DocumentLayout.json
Normal file
12
.vs/Metrolog/v17/DocumentLayout.json
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"Version": 1,
|
||||
"WorkspaceRootPath": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\",
|
||||
"Documents": [],
|
||||
"DocumentGroupContainers": [
|
||||
{
|
||||
"Orientation": 0,
|
||||
"VerticalTabListWidth": 256,
|
||||
"DocumentGroups": []
|
||||
}
|
||||
]
|
||||
}
|
7
.vs/VSWorkspaceState.json
Normal file
7
.vs/VSWorkspaceState.json
Normal file
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"ExpandedNodes": [
|
||||
""
|
||||
],
|
||||
"SelectedNode": "\\C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog",
|
||||
"PreviewInSolutionExplorer": false
|
||||
}
|
30
Metrolog-API/.dockerignore
Normal file
30
Metrolog-API/.dockerignore
Normal file
|
@ -0,0 +1,30 @@
|
|||
**/.classpath
|
||||
**/.dockerignore
|
||||
**/.env
|
||||
**/.git
|
||||
**/.gitignore
|
||||
**/.project
|
||||
**/.settings
|
||||
**/.toolstarget
|
||||
**/.vs
|
||||
**/.vscode
|
||||
**/*.*proj.user
|
||||
**/*.dbmdl
|
||||
**/*.jfm
|
||||
**/azds.yaml
|
||||
**/bin
|
||||
**/charts
|
||||
**/docker-compose*
|
||||
**/Dockerfile*
|
||||
**/node_modules
|
||||
**/npm-debug.log
|
||||
**/obj
|
||||
**/secrets.dev.yaml
|
||||
**/values.dev.yaml
|
||||
LICENSE
|
||||
README.md
|
||||
!**/.gitignore
|
||||
!.git/HEAD
|
||||
!.git/config
|
||||
!.git/packed-refs
|
||||
!.git/refs/heads/**
|
4
Metrolog-API/.env.sample
Normal file
4
Metrolog-API/.env.sample
Normal file
|
@ -0,0 +1,4 @@
|
|||
JWT_SECRET=default
|
||||
JWT_EXPIRATION_MINUTES=30
|
||||
MONGODB_CONNECTION_STRING=mongodb://10.1.20.122:27017
|
||||
MONGODB_DATABASE=metrolog
|
BIN
Metrolog-API/.vs/Metrolog-API/DesignTimeBuild/.dtbcache.v2
Normal file
BIN
Metrolog-API/.vs/Metrolog-API/DesignTimeBuild/.dtbcache.v2
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Metrolog-API/.vs/Metrolog-API/v17/.futdcache.v2
Normal file
BIN
Metrolog-API/.vs/Metrolog-API/v17/.futdcache.v2
Normal file
Binary file not shown.
BIN
Metrolog-API/.vs/Metrolog-API/v17/.suo
Normal file
BIN
Metrolog-API/.vs/Metrolog-API/v17/.suo
Normal file
Binary file not shown.
210
Metrolog-API/.vs/Metrolog-API/v17/DocumentLayout.backup.json
Normal file
210
Metrolog-API/.vs/Metrolog-API/v17/DocumentLayout.backup.json
Normal file
|
@ -0,0 +1,210 @@
|
|||
{
|
||||
"Version": 1,
|
||||
"WorkspaceRootPath": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\",
|
||||
"Documents": [
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|c:\\users\\jan00\\documents\\programovani\\myprojects\\metrolog\\metrolog-api\\dockerfile||{8B382828-6202-11D1-8870-0000F87579D2}",
|
||||
"RelativeMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|solutionrelative:dockerfile||{8B382828-6202-11D1-8870-0000F87579D2}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|c:\\users\\jan00\\documents\\programovani\\myprojects\\metrolog\\metrolog-api\\.env.sample||{8B382828-6202-11D1-8870-0000F87579D2}",
|
||||
"RelativeMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|solutionrelative:.env.sample||{8B382828-6202-11D1-8870-0000F87579D2}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|c:\\users\\jan00\\documents\\programovani\\myprojects\\metrolog\\metrolog-api\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|c:\\users\\jan00\\documents\\programovani\\myprojects\\metrolog\\metrolog-api\\.env||{8B382828-6202-11D1-8870-0000F87579D2}",
|
||||
"RelativeMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|solutionrelative:.env||{8B382828-6202-11D1-8870-0000F87579D2}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|c:\\users\\jan00\\documents\\programovani\\myprojects\\metrolog\\metrolog-api\\controllers\\usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|solutionrelative:controllers\\usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|c:\\users\\jan00\\documents\\programovani\\myprojects\\metrolog\\metrolog-api\\static\\permissionsstatic.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|solutionrelative:static\\permissionsstatic.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|c:\\users\\jan00\\documents\\programovani\\myprojects\\metrolog\\metrolog-api\\services\\roleservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|solutionrelative:services\\roleservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|c:\\users\\jan00\\documents\\programovani\\myprojects\\metrolog\\metrolog-api\\services\\userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|solutionrelative:services\\userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|c:\\users\\jan00\\documents\\programovani\\myprojects\\metrolog\\metrolog-api\\controllers\\authcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|solutionrelative:controllers\\authcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|c:\\users\\jan00\\documents\\programovani\\myprojects\\metrolog\\metrolog-api\\controllers\\groupcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|solutionrelative:controllers\\groupcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|c:\\users\\jan00\\documents\\programovani\\myprojects\\metrolog\\metrolog-api\\services\\jwtservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|solutionrelative:services\\jwtservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
}
|
||||
],
|
||||
"DocumentGroupContainers": [
|
||||
{
|
||||
"Orientation": 0,
|
||||
"VerticalTabListWidth": 256,
|
||||
"DocumentGroups": [
|
||||
{
|
||||
"DockedWidth": 200,
|
||||
"SelectedChildIndex": 3,
|
||||
"Children": [
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 2,
|
||||
"Title": "Program.cs",
|
||||
"DocumentMoniker": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Program.cs",
|
||||
"RelativeDocumentMoniker": "Program.cs",
|
||||
"ToolTip": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Program.cs",
|
||||
"RelativeToolTip": "Program.cs",
|
||||
"ViewState": "AgIAAAkAAAAAAAAAAAAAABQAAAACAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-02-15T13:30:34.284Z",
|
||||
"IsPinned": true,
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 1,
|
||||
"Title": ".env.sample",
|
||||
"DocumentMoniker": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\.env.sample",
|
||||
"RelativeDocumentMoniker": ".env.sample",
|
||||
"ToolTip": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\.env.sample",
|
||||
"RelativeToolTip": ".env.sample",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|",
|
||||
"WhenOpened": "2025-02-15T13:30:08.17Z",
|
||||
"IsPinned": true,
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 5,
|
||||
"Title": "PermissionsStatic.cs",
|
||||
"DocumentMoniker": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Static\\PermissionsStatic.cs",
|
||||
"RelativeDocumentMoniker": "Static\\PermissionsStatic.cs",
|
||||
"ToolTip": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Static\\PermissionsStatic.cs",
|
||||
"RelativeToolTip": "Static\\PermissionsStatic.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAQAAAApAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-02-15T17:09:11.22Z",
|
||||
"IsPinned": true,
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "Dockerfile",
|
||||
"DocumentMoniker": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Dockerfile",
|
||||
"RelativeDocumentMoniker": "Dockerfile",
|
||||
"ToolTip": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Dockerfile",
|
||||
"RelativeToolTip": "Dockerfile",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAcAAAAiAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|",
|
||||
"WhenOpened": "2025-02-15T17:30:03.62Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 3,
|
||||
"Title": ".env",
|
||||
"DocumentMoniker": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\.env",
|
||||
"RelativeDocumentMoniker": ".env",
|
||||
"ToolTip": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\.env",
|
||||
"RelativeToolTip": ".env",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAMAAAAoAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|",
|
||||
"WhenOpened": "2025-02-15T17:26:33.778Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 7,
|
||||
"Title": "UserService.cs",
|
||||
"DocumentMoniker": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Services\\UserService.cs",
|
||||
"RelativeDocumentMoniker": "Services\\UserService.cs",
|
||||
"ToolTip": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Services\\UserService.cs",
|
||||
"RelativeToolTip": "Services\\UserService.cs",
|
||||
"ViewState": "AgIAAAoAAAAAAAAAAAAgwCEAAAA+AAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-02-15T14:09:14.191Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 6,
|
||||
"Title": "RoleService.cs",
|
||||
"DocumentMoniker": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Services\\RoleService.cs",
|
||||
"RelativeDocumentMoniker": "Services\\RoleService.cs",
|
||||
"ToolTip": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Services\\RoleService.cs",
|
||||
"RelativeToolTip": "Services\\RoleService.cs",
|
||||
"ViewState": "AgIAAAUAAAAAAAAAAAAxwBUAAAA4AAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-02-15T14:42:35.006Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 10,
|
||||
"Title": "JWTService.cs",
|
||||
"DocumentMoniker": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Services\\JWTService.cs",
|
||||
"RelativeDocumentMoniker": "Services\\JWTService.cs",
|
||||
"ToolTip": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Services\\JWTService.cs",
|
||||
"RelativeToolTip": "Services\\JWTService.cs",
|
||||
"ViewState": "AgIAAA4AAAAAAAAAAAAQwBMAAABIAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-02-15T16:00:03.021Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 8,
|
||||
"Title": "AuthController.cs",
|
||||
"DocumentMoniker": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Controllers\\AuthController.cs",
|
||||
"RelativeDocumentMoniker": "Controllers\\AuthController.cs",
|
||||
"ToolTip": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Controllers\\AuthController.cs",
|
||||
"RelativeToolTip": "Controllers\\AuthController.cs",
|
||||
"ViewState": "AgIAABkAAAAAAAAAAAAgwAgAAAAcAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-02-15T12:58:01.53Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 9,
|
||||
"Title": "GroupController.cs",
|
||||
"DocumentMoniker": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Controllers\\GroupController.cs",
|
||||
"RelativeDocumentMoniker": "Controllers\\GroupController.cs",
|
||||
"ToolTip": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Controllers\\GroupController.cs",
|
||||
"RelativeToolTip": "Controllers\\GroupController.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-02-15T13:02:53.183Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 4,
|
||||
"Title": "UserController.cs",
|
||||
"DocumentMoniker": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Controllers\\UserController.cs",
|
||||
"RelativeDocumentMoniker": "Controllers\\UserController.cs",
|
||||
"ToolTip": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Controllers\\UserController.cs",
|
||||
"RelativeToolTip": "Controllers\\UserController.cs",
|
||||
"ViewState": "AgIAAAYAAAAAAAAAAAAAAA0AAAALAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-02-15T12:58:30.303Z",
|
||||
"EditorCaption": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
142
Metrolog-API/.vs/Metrolog-API/v17/DocumentLayout.json
Normal file
142
Metrolog-API/.vs/Metrolog-API/v17/DocumentLayout.json
Normal file
|
@ -0,0 +1,142 @@
|
|||
{
|
||||
"Version": 1,
|
||||
"WorkspaceRootPath": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\",
|
||||
"Documents": [
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|c:\\users\\jan00\\documents\\programovani\\myprojects\\metrolog\\metrolog-api\\services\\roleservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|solutionrelative:services\\roleservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|c:\\users\\jan00\\documents\\programovani\\myprojects\\metrolog\\metrolog-api\\controllers\\rolecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|solutionrelative:controllers\\rolecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|c:\\users\\jan00\\documents\\programovani\\myprojects\\metrolog\\metrolog-api\\static\\permissionsstatic.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|solutionrelative:static\\permissionsstatic.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|c:\\users\\jan00\\documents\\programovani\\myprojects\\metrolog\\metrolog-api\\controllers\\authcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|solutionrelative:controllers\\authcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|c:\\users\\jan00\\documents\\programovani\\myprojects\\metrolog\\metrolog-api\\.env.sample||{8B382828-6202-11D1-8870-0000F87579D2}",
|
||||
"RelativeMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|solutionrelative:.env.sample||{8B382828-6202-11D1-8870-0000F87579D2}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|c:\\users\\jan00\\documents\\programovani\\myprojects\\metrolog\\metrolog-api\\dockerfile||{8B382828-6202-11D1-8870-0000F87579D2}",
|
||||
"RelativeMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|solutionrelative:dockerfile||{8B382828-6202-11D1-8870-0000F87579D2}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|c:\\users\\jan00\\documents\\programovani\\myprojects\\metrolog\\metrolog-api\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}|Metrolog-API.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
}
|
||||
],
|
||||
"DocumentGroupContainers": [
|
||||
{
|
||||
"Orientation": 0,
|
||||
"VerticalTabListWidth": 256,
|
||||
"DocumentGroups": [
|
||||
{
|
||||
"DockedWidth": 200,
|
||||
"SelectedChildIndex": 4,
|
||||
"Children": [
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 6,
|
||||
"Title": "Program.cs",
|
||||
"DocumentMoniker": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Program.cs",
|
||||
"RelativeDocumentMoniker": "Program.cs",
|
||||
"ToolTip": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Program.cs",
|
||||
"RelativeToolTip": "Program.cs",
|
||||
"ViewState": "AgIAAAkAAAAAAAAAAAAAABQAAAACAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-02-15T13:30:34.284Z",
|
||||
"IsPinned": true,
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 2,
|
||||
"Title": "PermissionsStatic.cs",
|
||||
"DocumentMoniker": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Static\\PermissionsStatic.cs",
|
||||
"RelativeDocumentMoniker": "Static\\PermissionsStatic.cs",
|
||||
"ToolTip": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Static\\PermissionsStatic.cs",
|
||||
"RelativeToolTip": "Static\\PermissionsStatic.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAcAAAAmAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-02-15T17:09:11.22Z",
|
||||
"IsPinned": true,
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 4,
|
||||
"Title": ".env.sample",
|
||||
"DocumentMoniker": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\.env.sample",
|
||||
"RelativeDocumentMoniker": ".env.sample",
|
||||
"ToolTip": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\.env.sample",
|
||||
"RelativeToolTip": ".env.sample",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAMAAAAZAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|",
|
||||
"WhenOpened": "2025-02-15T18:00:29.077Z",
|
||||
"IsPinned": true,
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 5,
|
||||
"Title": "Dockerfile",
|
||||
"DocumentMoniker": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Dockerfile",
|
||||
"RelativeDocumentMoniker": "Dockerfile",
|
||||
"ToolTip": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Dockerfile",
|
||||
"RelativeToolTip": "Dockerfile",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|",
|
||||
"WhenOpened": "2025-02-15T17:30:03.62Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "RoleService.cs",
|
||||
"DocumentMoniker": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Services\\RoleService.cs",
|
||||
"RelativeDocumentMoniker": "Services\\RoleService.cs",
|
||||
"ToolTip": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Services\\RoleService.cs",
|
||||
"RelativeToolTip": "Services\\RoleService.cs",
|
||||
"ViewState": "AgIAAAMAAAAAAAAAAAAAACUAAAA0AAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-02-15T14:42:35.006Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 1,
|
||||
"Title": "RoleController.cs",
|
||||
"DocumentMoniker": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Controllers\\RoleController.cs",
|
||||
"RelativeDocumentMoniker": "Controllers\\RoleController.cs",
|
||||
"ToolTip": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Controllers\\RoleController.cs",
|
||||
"RelativeToolTip": "Controllers\\RoleController.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAfAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-02-15T13:02:53.183Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 3,
|
||||
"Title": "AuthController.cs",
|
||||
"DocumentMoniker": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Controllers\\AuthController.cs",
|
||||
"RelativeDocumentMoniker": "Controllers\\AuthController.cs",
|
||||
"ToolTip": "C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API\\Controllers\\AuthController.cs",
|
||||
"RelativeToolTip": "Controllers\\AuthController.cs",
|
||||
"ViewState": "AgIAAA8AAAAAAAAAAAAQwC4AAAAAAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-02-15T12:58:01.53Z",
|
||||
"EditorCaption": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
BIN
Metrolog-API/.vs/ProjectEvaluation/metrolog-api.metadata.v9.bin
Normal file
BIN
Metrolog-API/.vs/ProjectEvaluation/metrolog-api.metadata.v9.bin
Normal file
Binary file not shown.
BIN
Metrolog-API/.vs/ProjectEvaluation/metrolog-api.projects.v9.bin
Normal file
BIN
Metrolog-API/.vs/ProjectEvaluation/metrolog-api.projects.v9.bin
Normal file
Binary file not shown.
BIN
Metrolog-API/.vs/ProjectEvaluation/metrolog-api.strings.v9.bin
Normal file
BIN
Metrolog-API/.vs/ProjectEvaluation/metrolog-api.strings.v9.bin
Normal file
Binary file not shown.
31
Metrolog-API/Attributes/PermissionAttribute.cs
Normal file
31
Metrolog-API/Attributes/PermissionAttribute.cs
Normal file
|
@ -0,0 +1,31 @@
|
|||
using Microsoft.AspNetCore.Mvc.Filters;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Metrolog_API.Attributes
|
||||
{
|
||||
public class PermissionAttribute : Attribute, IAuthorizationFilter
|
||||
{
|
||||
private readonly string _requiredPermission;
|
||||
|
||||
public PermissionAttribute(string requiredPermission)
|
||||
{
|
||||
_requiredPermission = requiredPermission;
|
||||
}
|
||||
|
||||
public void OnAuthorization(AuthorizationFilterContext context)
|
||||
{
|
||||
var user = context.HttpContext.User;
|
||||
if (!user.Identity.IsAuthenticated)
|
||||
{
|
||||
context.Result = new UnauthorizedResult();
|
||||
return;
|
||||
}
|
||||
|
||||
var permissions = user.Claims.Where(c => c.Type == "permission").Select(c => c.Value).ToList();
|
||||
if (!permissions.Contains(_requiredPermission))
|
||||
{
|
||||
context.Result = new ForbidResult();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
75
Metrolog-API/Controllers/AuthController.cs
Normal file
75
Metrolog-API/Controllers/AuthController.cs
Normal file
|
@ -0,0 +1,75 @@
|
|||
using Metrolog_API.Models;
|
||||
using Metrolog_API.Services;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
|
||||
|
||||
namespace Metrolog_API.Controllers
|
||||
{
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
public class AuthController : ControllerBase
|
||||
{
|
||||
private UserService _UserService;
|
||||
private RoleService _RoleService;
|
||||
private PasswordService _PasswordService;
|
||||
private JWTService _JwtService;
|
||||
private int _JwtExpirationMinutes;
|
||||
|
||||
public AuthController(UserService userService, RoleService roleService, PasswordService passwordService, JWTService jwtService)
|
||||
{
|
||||
_UserService = userService;
|
||||
_RoleService = roleService;
|
||||
_PasswordService = passwordService;
|
||||
_JwtService = jwtService;
|
||||
_JwtExpirationMinutes = int.Parse(System.Environment.GetEnvironmentVariable("JWT_EXPIRATION_MINUTES"));
|
||||
}
|
||||
|
||||
// POST api/<AuthController>/active
|
||||
[HttpGet("active")]
|
||||
public async Task<ActionResult> Get()
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
// POST api/<AuthController>/login
|
||||
[HttpPost("login")]
|
||||
public async Task<ActionResult<LoginResponseModel>> LoginPost([FromBody] LoginModel login)
|
||||
{
|
||||
UserModel? user = await _UserService.GetByEmailAsync(login.Email);
|
||||
|
||||
if (user == null || !_PasswordService.VerifyPassword(user.Password, login.Password)) //Verify user
|
||||
return NotFound(); //If user not exist or provide bad password return NotFound(404)
|
||||
|
||||
return Ok(new LoginResponseModel{ Token = await _JwtService.GenerateUserJwtToken(user), TokenExpire = DateTime.Now.AddMinutes(_JwtExpirationMinutes) });
|
||||
}
|
||||
|
||||
// POST api/<AuthController>/register
|
||||
[HttpPost("register")]
|
||||
public async Task<ActionResult> RegisterPost([FromBody] RegisterModel register)
|
||||
{
|
||||
if (register == null || string.IsNullOrEmpty(register.Name) || string.IsNullOrEmpty(register.Surname) || string.IsNullOrEmpty(register.Email) || string.IsNullOrEmpty(register.Password))
|
||||
return BadRequest("Input data Error");
|
||||
|
||||
if (await _UserService.GetByEmailAsync(register.Email) != null)
|
||||
return BadRequest("Email is already used");
|
||||
|
||||
UserModel user = new UserModel()
|
||||
{
|
||||
TitlesFrontName = "",
|
||||
TitlesBehindName = "",
|
||||
Name = register.Name,
|
||||
Surname = register.Surname,
|
||||
Email = register.Email,
|
||||
Password = _PasswordService.HashPassword(register.Password),
|
||||
Roles = await _RoleService.GetDefaultsAsync()
|
||||
};
|
||||
|
||||
await _UserService.CreateAsync(user);
|
||||
|
||||
return Ok("Register succes, Please login");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
43
Metrolog-API/Controllers/RoleController.cs
Normal file
43
Metrolog-API/Controllers/RoleController.cs
Normal file
|
@ -0,0 +1,43 @@
|
|||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
|
||||
|
||||
namespace Metrolog_API.Controllers
|
||||
{
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
public class RoleController : ControllerBase
|
||||
{
|
||||
// GET: api/<RoleController>
|
||||
[HttpGet]
|
||||
public IEnumerable<string> Get()
|
||||
{
|
||||
return new string[] { "value1", "value2" };
|
||||
}
|
||||
|
||||
// GET api/<RoleController>/5
|
||||
[HttpGet("{id}")]
|
||||
public string Get(int id)
|
||||
{
|
||||
return "value";
|
||||
}
|
||||
|
||||
// POST api/<RoleController>
|
||||
[HttpPost]
|
||||
public void Post([FromBody] string value)
|
||||
{
|
||||
}
|
||||
|
||||
// PUT api/<RoleController>/5
|
||||
[HttpPut("{id}")]
|
||||
public void Put(int id, [FromBody] string value)
|
||||
{
|
||||
}
|
||||
|
||||
// DELETE api/<RoleController>/5
|
||||
[HttpDelete("{id}")]
|
||||
public void Delete(int id)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
156
Metrolog-API/Controllers/UserController.cs
Normal file
156
Metrolog-API/Controllers/UserController.cs
Normal file
|
@ -0,0 +1,156 @@
|
|||
using Metrolog_API.Attributes;
|
||||
using Metrolog_API.Models;
|
||||
using Metrolog_API.Services;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System.Security.Claims;
|
||||
|
||||
// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
|
||||
|
||||
namespace Metrolog_API.Controllers
|
||||
{
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
[Authorize]
|
||||
public class UserController : ControllerBase
|
||||
{
|
||||
private UserService _UserService;
|
||||
private PasswordService _PasswordService;
|
||||
|
||||
|
||||
public UserController(UserService UserService, PasswordService passwordService)
|
||||
{
|
||||
_UserService = UserService;
|
||||
_PasswordService = passwordService;
|
||||
}
|
||||
|
||||
|
||||
// GET: api/<UserController>/me
|
||||
[HttpGet("me")]
|
||||
public async Task<ActionResult<UserModel>> ActualUserGet()
|
||||
{
|
||||
try
|
||||
{
|
||||
UserModel user = await _UserService.GetByEmailAsync(HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Email).Value);
|
||||
user.Password = "";
|
||||
return Ok(user);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return NoContent();
|
||||
}
|
||||
}
|
||||
|
||||
// PUT api/<UserController>/me
|
||||
[HttpPut("me")]
|
||||
public async Task<ActionResult<UserModel>> ActualUserPut([FromBody] UserModel newUser)
|
||||
{
|
||||
UserModel user = await _UserService.GetByEmailAsync(HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Email).Value);
|
||||
|
||||
newUser.Password = user.Password;
|
||||
newUser.Email = user.Email;
|
||||
newUser.Id = user.Id;
|
||||
|
||||
await _UserService.UpdateAsync(user.Id, newUser);
|
||||
|
||||
newUser.Password = "";
|
||||
return Ok(newUser);
|
||||
}
|
||||
|
||||
// PUT api/<UserController>/me
|
||||
[HttpPut("me/password")]
|
||||
public async Task<ActionResult> ActualUserPut([FromBody] PasswordChangeModel pass)
|
||||
{
|
||||
UserModel user = await _UserService.GetByEmailAsync(HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Email).Value);
|
||||
|
||||
if (_PasswordService.VerifyPassword(user.Password, pass.OldPassword))
|
||||
{
|
||||
user.Password = _PasswordService.HashPassword(pass.NewPassword);
|
||||
await _UserService.UpdateAsync(user.Id, user);
|
||||
return Ok();
|
||||
}
|
||||
else
|
||||
{
|
||||
return BadRequest("Old password not match");
|
||||
}
|
||||
}
|
||||
|
||||
// DELETE api/<UserController>/me
|
||||
[HttpDelete("me")]
|
||||
public async Task<ActionResult> ActualUserDelete()
|
||||
{
|
||||
UserModel user = await _UserService.GetByEmailAsync(HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Email).Value);
|
||||
await _UserService.RemoveAsync(user.Id);
|
||||
return Ok();
|
||||
}
|
||||
|
||||
|
||||
|
||||
// GET: api/<UserController>/[page]
|
||||
[HttpGet("{page}")]
|
||||
[Permission("User_List")]
|
||||
public async Task<ActionResult<List<UserModel>>> UserListGet(int page = 1)
|
||||
{
|
||||
List<UserModel> users = new();
|
||||
foreach (UserModel user in await _UserService.GetPageAsync(page))
|
||||
{
|
||||
user.Password = "";
|
||||
users.Add(user);
|
||||
}
|
||||
return Ok(users);
|
||||
}
|
||||
|
||||
// GET api/<UserController>/5
|
||||
[HttpGet("{id}")]
|
||||
[Permission("User_Detail")]
|
||||
public async Task<ActionResult<UserModel>> UserDetailGet(string id)
|
||||
{
|
||||
UserModel? user = await _UserService.GetByIdAsync(id);
|
||||
if (user == null)
|
||||
return NotFound();
|
||||
|
||||
user.Password = "";
|
||||
|
||||
return Ok(user);
|
||||
}
|
||||
|
||||
// PUT api/<UserController>/{id}
|
||||
[HttpPut("{id}")]
|
||||
[Permission("User_Update")]
|
||||
public async Task<ActionResult<UserModel>> Put(string id, [FromBody] UserModel newUser)
|
||||
{
|
||||
UserModel user = await _UserService.GetByIdAsync(id);
|
||||
|
||||
newUser.Password = user.Password;
|
||||
newUser.Id = user.Id;
|
||||
|
||||
await _UserService.UpdateAsync(user.Id, newUser);
|
||||
|
||||
newUser.Password = "";
|
||||
return Ok(newUser);
|
||||
}
|
||||
|
||||
// PUT api/<UserController>/{id}/password
|
||||
[HttpPut("{id}")]
|
||||
[Permission("User_Update")]
|
||||
public async Task<ActionResult> PasswordPut(string id, [FromBody] PasswordChangeModel pass)
|
||||
{
|
||||
UserModel user = await _UserService.GetByIdAsync(id);
|
||||
if(user == null)
|
||||
return NotFound("User not found");
|
||||
|
||||
user.Password = _PasswordService.HashPassword(pass.NewPassword);
|
||||
await _UserService.UpdateAsync(user.Id, user);
|
||||
return Ok();
|
||||
}
|
||||
|
||||
// DELETE api/<UserController>/5
|
||||
[HttpDelete("{id}")]
|
||||
[Permission("User_Remove")]
|
||||
public async Task<ActionResult> Delete(string id)
|
||||
{
|
||||
await _UserService.RemoveAsync(id);
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
}
|
34
Metrolog-API/Dockerfile
Normal file
34
Metrolog-API/Dockerfile
Normal file
|
@ -0,0 +1,34 @@
|
|||
# See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
|
||||
|
||||
# This stage is used when running from VS in fast mode (Default for Debug configuration)
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base
|
||||
USER $APP_UID
|
||||
WORKDIR /app
|
||||
EXPOSE 8080
|
||||
|
||||
#dev variables
|
||||
ENV JWT_SECRET="default"
|
||||
ENV JWT_EXPIRATION_MINUTES="30"
|
||||
ENV MONGODB_CONNECTION_STRING="mongodb://10.1.20.122:27017"
|
||||
ENV MONGODB_DATABASE="metrolog"
|
||||
|
||||
# This stage is used to build the service project
|
||||
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
|
||||
ARG BUILD_CONFIGURATION=Release
|
||||
WORKDIR /src
|
||||
COPY ["Metrolog-API.csproj", "."]
|
||||
RUN dotnet restore "./Metrolog-API.csproj"
|
||||
COPY . .
|
||||
WORKDIR "/src/."
|
||||
RUN dotnet build "./Metrolog-API.csproj" -c $BUILD_CONFIGURATION -o /app/build
|
||||
|
||||
# This stage is used to publish the service project to be copied to the final stage
|
||||
FROM build AS publish
|
||||
ARG BUILD_CONFIGURATION=Release
|
||||
RUN dotnet publish "./Metrolog-API.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
|
||||
|
||||
# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
|
||||
FROM base AS final
|
||||
WORKDIR /app
|
||||
COPY --from=publish /app/publish .
|
||||
ENTRYPOINT ["dotnet", "Metrolog-API.dll"]
|
19
Metrolog-API/Metrolog-API.csproj
Normal file
19
Metrolog-API/Metrolog-API.csproj
Normal file
|
@ -0,0 +1,19 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<RootNamespace>Metrolog_API</RootNamespace>
|
||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||
<DockerfileContext>.</DockerfileContext>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.2" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.0" />
|
||||
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.21.0" />
|
||||
<PackageReference Include="MongoDB.Driver" Version="3.2.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
8
Metrolog-API/Metrolog-API.csproj.user
Normal file
8
Metrolog-API/Metrolog-API.csproj.user
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ActiveDebugProfile>Container (Dockerfile)</ActiveDebugProfile>
|
||||
<Controller_SelectedScaffolderID>ApiControllerWithActionsScaffolder</Controller_SelectedScaffolderID>
|
||||
<Controller_SelectedScaffolderCategoryPath>root/Common/Api</Controller_SelectedScaffolderCategoryPath>
|
||||
</PropertyGroup>
|
||||
</Project>
|
6
Metrolog-API/Metrolog-API.http
Normal file
6
Metrolog-API/Metrolog-API.http
Normal file
|
@ -0,0 +1,6 @@
|
|||
@Metrolog_API_HostAddress = http://localhost:5249
|
||||
|
||||
GET {{Metrolog_API_HostAddress}}/weatherforecast/
|
||||
Accept: application/json
|
||||
|
||||
###
|
22
Metrolog-API/Metrolog-API.sln
Normal file
22
Metrolog-API/Metrolog-API.sln
Normal file
|
@ -0,0 +1,22 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.12.35527.113 d17.12
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Metrolog-API", "Metrolog-API.csproj", "{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9F2FA923-29FB-4269-9CF5-30AE92CA80D2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
8
Metrolog-API/Models/LoginModel.cs
Normal file
8
Metrolog-API/Models/LoginModel.cs
Normal file
|
@ -0,0 +1,8 @@
|
|||
namespace Metrolog_API.Models
|
||||
{
|
||||
public class LoginModel
|
||||
{
|
||||
public string Email { get; set; }
|
||||
public string Password { get; set; }
|
||||
}
|
||||
}
|
8
Metrolog-API/Models/LoginResponseModel.cs
Normal file
8
Metrolog-API/Models/LoginResponseModel.cs
Normal file
|
@ -0,0 +1,8 @@
|
|||
namespace Metrolog_API.Models
|
||||
{
|
||||
public class LoginResponseModel
|
||||
{
|
||||
public string Token { get; set; }
|
||||
public DateTime TokenExpire { get; set; }
|
||||
}
|
||||
}
|
8
Metrolog-API/Models/PasswordChangeModel.cs
Normal file
8
Metrolog-API/Models/PasswordChangeModel.cs
Normal file
|
@ -0,0 +1,8 @@
|
|||
namespace Metrolog_API.Models
|
||||
{
|
||||
public class PasswordChangeModel
|
||||
{
|
||||
public string? OldPassword { get; set; }
|
||||
public string NewPassword { get; set; }
|
||||
}
|
||||
}
|
13
Metrolog-API/Models/RegisterModel.cs
Normal file
13
Metrolog-API/Models/RegisterModel.cs
Normal file
|
@ -0,0 +1,13 @@
|
|||
using Metrolog_API.Services;
|
||||
|
||||
namespace Metrolog_API.Models
|
||||
{
|
||||
public class RegisterModel
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public string Surname { get; set; }
|
||||
public string Email { get; set; }
|
||||
public string Password { get; set; }
|
||||
|
||||
}
|
||||
}
|
24
Metrolog-API/Models/RoleModel.cs
Normal file
24
Metrolog-API/Models/RoleModel.cs
Normal file
|
@ -0,0 +1,24 @@
|
|||
using MongoDB.Bson.Serialization.Attributes;
|
||||
using MongoDB.Bson;
|
||||
|
||||
namespace Metrolog_API.Models
|
||||
{
|
||||
public class RoleModel
|
||||
{
|
||||
[BsonId]
|
||||
[BsonRepresentation(BsonType.ObjectId)]
|
||||
public string Id { get; set; } = string.Empty;
|
||||
|
||||
[BsonElement("Default")]
|
||||
public bool Default { get; set; }
|
||||
|
||||
[BsonElement("Name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[BsonElement("Description")]
|
||||
public string Description { get; set; }
|
||||
|
||||
[BsonElement("Permissions")]
|
||||
public List<string> Permissions { get; set; }
|
||||
}
|
||||
}
|
33
Metrolog-API/Models/UserModel.cs
Normal file
33
Metrolog-API/Models/UserModel.cs
Normal file
|
@ -0,0 +1,33 @@
|
|||
using MongoDB.Bson.Serialization.Attributes;
|
||||
using MongoDB.Bson;
|
||||
|
||||
namespace Metrolog_API.Models
|
||||
{
|
||||
public class UserModel
|
||||
{
|
||||
[BsonId]
|
||||
[BsonRepresentation(BsonType.ObjectId)]
|
||||
public string Id { get; set; } = string.Empty;
|
||||
|
||||
[BsonElement("TitlesFrontName")]
|
||||
public string TitlesFrontName { get; set; }
|
||||
|
||||
[BsonElement("Name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[BsonElement("Surname")]
|
||||
public string Surname { get; set; }
|
||||
|
||||
[BsonElement("TitleBehindName")]
|
||||
public string TitlesBehindName { get; set; }
|
||||
|
||||
[BsonElement("Email")]
|
||||
public string Email { get; set; }
|
||||
|
||||
[BsonElement("Password")]
|
||||
public string Password { get; set; }
|
||||
|
||||
[BsonElement("Roles")]
|
||||
public List<string> Roles { get; set; }
|
||||
}
|
||||
}
|
53
Metrolog-API/Program.cs
Normal file
53
Metrolog-API/Program.cs
Normal file
|
@ -0,0 +1,53 @@
|
|||
using Metrolog_API.Services;
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using Metrolog_API.Static;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
// Add services to the container.
|
||||
|
||||
builder.Services.AddControllers();
|
||||
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
|
||||
builder.Services.AddOpenApi();
|
||||
|
||||
//add authentication JWT configuration
|
||||
string? JwtSecret = System.Environment.GetEnvironmentVariable("JWT_SECRET");
|
||||
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
|
||||
.AddJwtBearer(options =>
|
||||
{
|
||||
options.TokenValidationParameters = new TokenValidationParameters
|
||||
{
|
||||
ValidateIssuerSigningKey = true,
|
||||
IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(JwtSecret)),
|
||||
ValidateIssuer = false, // issuer verify
|
||||
ValidateAudience = false, // Audience verify
|
||||
ValidateLifetime = true // Token expiration verify
|
||||
};
|
||||
});
|
||||
|
||||
builder.Services.AddAuthorization();
|
||||
|
||||
//add services
|
||||
builder.Services.AddSingleton<UserService>();
|
||||
builder.Services.AddSingleton<RoleService>();
|
||||
builder.Services.AddScoped<PasswordService>();
|
||||
builder.Services.AddSingleton<JWTService>();
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
// Configure the HTTP request pipeline.
|
||||
if (app.Environment.IsDevelopment())
|
||||
{
|
||||
app.MapOpenApi();
|
||||
}
|
||||
|
||||
app.UseAuthentication();
|
||||
app.UseAuthorization();
|
||||
|
||||
app.MapControllers();
|
||||
|
||||
app.Run();
|
||||
|
22
Metrolog-API/Properties/launchSettings.json
Normal file
22
Metrolog-API/Properties/launchSettings.json
Normal file
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"profiles": {
|
||||
"http": {
|
||||
"commandName": "Project",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
},
|
||||
"dotnetRunMessages": true,
|
||||
"applicationUrl": "http://localhost:5249"
|
||||
},
|
||||
"Container (Dockerfile)": {
|
||||
"commandName": "Docker",
|
||||
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_HTTP_PORTS": "8080"
|
||||
},
|
||||
"publishAllPorts": true,
|
||||
"useSSL": false
|
||||
}
|
||||
},
|
||||
"$schema": "https://json.schemastore.org/launchsettings.json"
|
||||
}
|
61
Metrolog-API/Services/JWTService.cs
Normal file
61
Metrolog-API/Services/JWTService.cs
Normal file
|
@ -0,0 +1,61 @@
|
|||
using Metrolog_API.Models;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using System.IdentityModel.Tokens.Jwt;
|
||||
using System.Security.Claims;
|
||||
using System.Text;
|
||||
|
||||
namespace Metrolog_API.Services
|
||||
{
|
||||
public class JWTService
|
||||
{
|
||||
private RoleService _RoleService;
|
||||
|
||||
private string _JwtSecret;
|
||||
private int _JwtExpirationMinutes;
|
||||
|
||||
public JWTService(RoleService roleService)
|
||||
{
|
||||
_RoleService = roleService;
|
||||
|
||||
_JwtSecret = System.Environment.GetEnvironmentVariable("JWT_SECRET");
|
||||
_JwtExpirationMinutes = int.Parse(System.Environment.GetEnvironmentVariable("JWT_EXPIRATION_MINUTES"));
|
||||
}
|
||||
public async Task<string> GenerateUserJwtToken(UserModel user)
|
||||
{
|
||||
JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();
|
||||
byte[] key = Encoding.ASCII.GetBytes(_JwtSecret);
|
||||
|
||||
List<Claim> claims = new List<Claim>
|
||||
{
|
||||
new Claim(ClaimTypes.Email, user.Email),
|
||||
new Claim(ClaimTypes.Name, $"{user.TitlesFrontName} {user.Name} {user.Surname} {user.TitlesBehindName}")
|
||||
};
|
||||
|
||||
// Add permissions to JWT
|
||||
foreach (string roleName in user.Roles)
|
||||
{
|
||||
RoleModel? role = await _RoleService.GetByNameAsync(roleName);
|
||||
if (role != null)
|
||||
{
|
||||
foreach (string permission in role.Permissions)
|
||||
{
|
||||
if (claims.Find(x => x.Value == permission) == null)
|
||||
{
|
||||
claims.Add(new Claim("permission", permission));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SecurityTokenDescriptor tokenDescriptor = new SecurityTokenDescriptor
|
||||
{
|
||||
Subject = new ClaimsIdentity(claims),
|
||||
Expires = DateTime.UtcNow.AddMinutes(2),
|
||||
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
|
||||
};
|
||||
|
||||
SecurityToken token = tokenHandler.CreateToken(tokenDescriptor);
|
||||
return tokenHandler.WriteToken(token);
|
||||
}
|
||||
}
|
||||
}
|
37
Metrolog-API/Services/PasswordService.cs
Normal file
37
Metrolog-API/Services/PasswordService.cs
Normal file
|
@ -0,0 +1,37 @@
|
|||
using System.Security.Cryptography;
|
||||
|
||||
namespace Metrolog_API.Services
|
||||
{
|
||||
public class PasswordService
|
||||
{
|
||||
private const int SaltSize = 16; // 128 bit
|
||||
private const int KeySize = 32; // 256 bit
|
||||
private const int Iterations = 100_000;
|
||||
|
||||
public string HashPassword(string password)
|
||||
{
|
||||
using var rng = RandomNumberGenerator.Create();
|
||||
byte[] salt = new byte[SaltSize];
|
||||
rng.GetBytes(salt);
|
||||
|
||||
using var pbkdf2 = new Rfc2898DeriveBytes(password, salt, Iterations, HashAlgorithmName.SHA256);
|
||||
byte[] key = pbkdf2.GetBytes(KeySize);
|
||||
|
||||
return $"{Convert.ToBase64String(salt)}.{Convert.ToBase64String(key)}";
|
||||
}
|
||||
|
||||
public bool VerifyPassword(string hashedPassword, string providedPassword)
|
||||
{
|
||||
var parts = hashedPassword.Split('.');
|
||||
if (parts.Length != 2) return false;
|
||||
|
||||
byte[] salt = Convert.FromBase64String(parts[0]);
|
||||
byte[] storedKey = Convert.FromBase64String(parts[1]);
|
||||
|
||||
using var pbkdf2 = new Rfc2898DeriveBytes(providedPassword, salt, Iterations, HashAlgorithmName.SHA256);
|
||||
byte[] newKey = pbkdf2.GetBytes(KeySize);
|
||||
|
||||
return newKey.SequenceEqual(storedKey);
|
||||
}
|
||||
}
|
||||
}
|
55
Metrolog-API/Services/RoleService.cs
Normal file
55
Metrolog-API/Services/RoleService.cs
Normal file
|
@ -0,0 +1,55 @@
|
|||
using Metrolog_API.Models;
|
||||
using MongoDB.Driver;
|
||||
|
||||
namespace Metrolog_API.Services
|
||||
{
|
||||
public class RoleService
|
||||
{
|
||||
private readonly IMongoCollection<RoleModel> _roles;
|
||||
|
||||
public RoleService(IConfiguration config)
|
||||
{
|
||||
var client = new MongoClient(System.Environment.GetEnvironmentVariable("MONGODB_CONNECTION_STRING"));
|
||||
var database = client.GetDatabase(System.Environment.GetEnvironmentVariable("MONGODB_DATABASE"));
|
||||
_roles = database.GetCollection<RoleModel>("roles");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Read all items in collection ordered by "Name" by page (100 items)
|
||||
/// </summary>
|
||||
/// <param name="page">Page number</param>
|
||||
/// <returns>List of roles on specified page</returns>
|
||||
public async Task<List<RoleModel>> GetPageAsync(int page = 1) =>
|
||||
await _roles.Find<RoleModel>(role => true).SortByDescending(x => x.Name).Skip((page - 1) * 100).Limit(100).ToListAsync();
|
||||
|
||||
/// <summary>
|
||||
/// Get Role by Name
|
||||
/// </summary>
|
||||
/// <param name="Name">Role Name</param>
|
||||
/// <returns>Role or null</returns>
|
||||
public async Task<RoleModel?> GetByNameAsync(string Name) =>
|
||||
await _roles.Find<RoleModel>(role => role.Name == Name).FirstAsync();
|
||||
|
||||
/// <summary>
|
||||
/// Get default role names
|
||||
/// </summary>
|
||||
/// <returns>Role Names</returns>
|
||||
public async Task<List<string>> GetDefaultsAsync()
|
||||
{
|
||||
List<string> names = new List<string>();
|
||||
foreach (RoleModel role in await _roles.Find<RoleModel>(role => role.Default == true).ToListAsync())
|
||||
{
|
||||
names.Add(role.Name);
|
||||
}
|
||||
return names;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
50
Metrolog-API/Services/UserService.cs
Normal file
50
Metrolog-API/Services/UserService.cs
Normal file
|
@ -0,0 +1,50 @@
|
|||
using Metrolog_API.Models;
|
||||
using MongoDB.Driver;
|
||||
|
||||
namespace Metrolog_API.Services
|
||||
{
|
||||
public class UserService
|
||||
{
|
||||
private readonly IMongoCollection<UserModel> _users;
|
||||
|
||||
public UserService(IConfiguration config)
|
||||
{
|
||||
var client = new MongoClient(System.Environment.GetEnvironmentVariable("MONGODB_CONNECTION_STRING"));
|
||||
var database = client.GetDatabase(System.Environment.GetEnvironmentVariable("MONGODB_DATABASE"));
|
||||
_users = database.GetCollection<UserModel>("users");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Read all items in collection ordered by "Surname" by page (100 items)
|
||||
/// </summary>
|
||||
/// <param name="page">Page number</param>
|
||||
/// <returns>List of users on specified page</returns>
|
||||
public async Task<List<UserModel>> GetPageAsync(int page = 1) =>
|
||||
await _users.Find<UserModel>(user => true).SortByDescending(x => x.Surname).Skip((page - 1) * 100).Limit(100).ToListAsync();
|
||||
|
||||
/// <summary>
|
||||
/// Get user by Email
|
||||
/// </summary>
|
||||
/// <param name="email">user Email</param>
|
||||
/// <returns>User</returns>
|
||||
public async Task<UserModel?> GetByEmailAsync(string email) =>
|
||||
await _users.Find<UserModel>(user => user.Email == email).FirstOrDefaultAsync();
|
||||
|
||||
|
||||
public async Task<UserModel?> GetByIdAsync(string id) =>
|
||||
await _users.Find<UserModel>(user => user.Id == id).FirstOrDefaultAsync();
|
||||
|
||||
/// <summary>
|
||||
/// Create user
|
||||
/// </summary>
|
||||
/// <param name="user">user</param>
|
||||
public async Task CreateAsync(UserModel user) =>
|
||||
await _users.InsertOneAsync(user);
|
||||
|
||||
public async Task UpdateAsync(string id, UserModel calibration) =>
|
||||
await _users.ReplaceOneAsync(c => c.Id == id, calibration);
|
||||
|
||||
public async Task RemoveAsync(string id) =>
|
||||
await _users.DeleteOneAsync(c => c.Id == id);
|
||||
}
|
||||
}
|
10
Metrolog-API/Static/PermissionsStatic.cs
Normal file
10
Metrolog-API/Static/PermissionsStatic.cs
Normal file
|
@ -0,0 +1,10 @@
|
|||
namespace Metrolog_API.Static
|
||||
{
|
||||
public static class PermissionsStatic
|
||||
{
|
||||
public static string User_List = "User_List"; //List all users
|
||||
public static string User_Detail = "User_Detail"; //View all users detail
|
||||
public static string User_Remove = "User_Remove"; //Remove all User
|
||||
public static string User_Update = "User_Update"; //Update all user
|
||||
}
|
||||
}
|
27
Metrolog-API/Static/RandomStringGeneratorStatic.cs
Normal file
27
Metrolog-API/Static/RandomStringGeneratorStatic.cs
Normal file
|
@ -0,0 +1,27 @@
|
|||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
|
||||
namespace Metrolog_API.Static
|
||||
{
|
||||
public static class RandomStringGeneratorStatic
|
||||
{
|
||||
public static string GenerateRandomString(int length = 64)
|
||||
{
|
||||
string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
var stringBuilder = new StringBuilder();
|
||||
var randomBytes = new byte[length];
|
||||
|
||||
using (var rng = RandomNumberGenerator.Create())
|
||||
{
|
||||
rng.GetBytes(randomBytes);
|
||||
}
|
||||
|
||||
for (int i = 0; i < length; i++)
|
||||
{
|
||||
stringBuilder.Append(chars[randomBytes[i] % chars.Length]);
|
||||
}
|
||||
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
8
Metrolog-API/appsettings.Development.json
Normal file
8
Metrolog-API/appsettings.Development.json
Normal file
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
}
|
||||
}
|
9
Metrolog-API/appsettings.json
Normal file
9
Metrolog-API/appsettings.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
},
|
||||
"AllowedHosts": "*"
|
||||
}
|
BIN
Metrolog-API/bin/Debug/net9.0/DnsClient.dll
Normal file
BIN
Metrolog-API/bin/Debug/net9.0/DnsClient.dll
Normal file
Binary file not shown.
393
Metrolog-API/bin/Debug/net9.0/Metrolog-API.deps.json
Normal file
393
Metrolog-API/bin/Debug/net9.0/Metrolog-API.deps.json
Normal file
|
@ -0,0 +1,393 @@
|
|||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v9.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v9.0": {
|
||||
"Metrolog-API/1.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Authentication.JwtBearer": "9.0.2",
|
||||
"Microsoft.AspNetCore.OpenApi": "9.0.0",
|
||||
"Microsoft.VisualStudio.Azure.Containers.Tools.Targets": "1.21.0",
|
||||
"MongoDB.Driver": "3.2.0"
|
||||
},
|
||||
"runtime": {
|
||||
"Metrolog-API.dll": {}
|
||||
}
|
||||
},
|
||||
"DnsClient/1.6.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Win32.Registry": "5.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net5.0/DnsClient.dll": {
|
||||
"assemblyVersion": "1.6.1.0",
|
||||
"fileVersion": "1.6.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Authentication.JwtBearer/9.0.2": {
|
||||
"dependencies": {
|
||||
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": {
|
||||
"assemblyVersion": "9.0.2.0",
|
||||
"fileVersion": "9.0.225.6704"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.OpenApi/9.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.OpenApi": "1.6.17"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.AspNetCore.OpenApi.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.52903"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/2.0.0": {},
|
||||
"Microsoft.IdentityModel.Abstractions/8.0.1": {
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.IdentityModel.Abstractions.dll": {
|
||||
"assemblyVersion": "8.0.1.0",
|
||||
"fileVersion": "8.0.1.50722"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.IdentityModel.JsonWebTokens/8.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.IdentityModel.Tokens": "8.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll": {
|
||||
"assemblyVersion": "8.0.1.0",
|
||||
"fileVersion": "8.0.1.50722"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.IdentityModel.Logging/8.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.IdentityModel.Abstractions": "8.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.IdentityModel.Logging.dll": {
|
||||
"assemblyVersion": "8.0.1.0",
|
||||
"fileVersion": "8.0.1.50722"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.IdentityModel.Protocols/8.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.IdentityModel.Tokens": "8.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.IdentityModel.Protocols.dll": {
|
||||
"assemblyVersion": "8.0.1.0",
|
||||
"fileVersion": "8.0.1.50722"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.IdentityModel.Protocols.OpenIdConnect/8.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.IdentityModel.Protocols": "8.0.1",
|
||||
"System.IdentityModel.Tokens.Jwt": "8.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": {
|
||||
"assemblyVersion": "8.0.1.0",
|
||||
"fileVersion": "8.0.1.50722"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.IdentityModel.Tokens/8.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.IdentityModel.Logging": "8.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.IdentityModel.Tokens.dll": {
|
||||
"assemblyVersion": "8.0.1.0",
|
||||
"fileVersion": "8.0.1.50722"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.NETCore.Platforms/5.0.0": {},
|
||||
"Microsoft.OpenApi/1.6.17": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.OpenApi.dll": {
|
||||
"assemblyVersion": "1.6.17.0",
|
||||
"fileVersion": "1.6.17.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.21.0": {},
|
||||
"Microsoft.Win32.Registry/5.0.0": {
|
||||
"dependencies": {
|
||||
"System.Security.AccessControl": "5.0.0",
|
||||
"System.Security.Principal.Windows": "5.0.0"
|
||||
}
|
||||
},
|
||||
"MongoDB.Bson/3.2.0": {
|
||||
"dependencies": {
|
||||
"System.Memory": "4.5.5",
|
||||
"System.Runtime.CompilerServices.Unsafe": "5.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/MongoDB.Bson.dll": {
|
||||
"assemblyVersion": "3.2.0.0",
|
||||
"fileVersion": "3.2.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"MongoDB.Driver/3.2.0": {
|
||||
"dependencies": {
|
||||
"DnsClient": "1.6.1",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "2.0.0",
|
||||
"MongoDB.Bson": "3.2.0",
|
||||
"SharpCompress": "0.30.1",
|
||||
"Snappier": "1.0.0",
|
||||
"System.Buffers": "4.5.1",
|
||||
"ZstdSharp.Port": "0.7.3"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/MongoDB.Driver.dll": {
|
||||
"assemblyVersion": "3.2.0.0",
|
||||
"fileVersion": "3.2.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"SharpCompress/0.30.1": {
|
||||
"runtime": {
|
||||
"lib/net5.0/SharpCompress.dll": {
|
||||
"assemblyVersion": "0.30.1.0",
|
||||
"fileVersion": "0.30.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Snappier/1.0.0": {
|
||||
"runtime": {
|
||||
"lib/net5.0/Snappier.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Buffers/4.5.1": {},
|
||||
"System.IdentityModel.Tokens.Jwt/8.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.IdentityModel.JsonWebTokens": "8.0.1",
|
||||
"Microsoft.IdentityModel.Tokens": "8.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/System.IdentityModel.Tokens.Jwt.dll": {
|
||||
"assemblyVersion": "8.0.1.0",
|
||||
"fileVersion": "8.0.1.50722"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Memory/4.5.5": {},
|
||||
"System.Runtime.CompilerServices.Unsafe/5.0.0": {},
|
||||
"System.Security.AccessControl/5.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "5.0.0",
|
||||
"System.Security.Principal.Windows": "5.0.0"
|
||||
}
|
||||
},
|
||||
"System.Security.Principal.Windows/5.0.0": {},
|
||||
"ZstdSharp.Port/0.7.3": {
|
||||
"runtime": {
|
||||
"lib/net7.0/ZstdSharp.dll": {
|
||||
"assemblyVersion": "0.7.3.0",
|
||||
"fileVersion": "0.7.3.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"Metrolog-API/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"DnsClient/1.6.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
|
||||
"path": "dnsclient/1.6.1",
|
||||
"hashPath": "dnsclient.1.6.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Authentication.JwtBearer/9.0.2": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-p3WhJqzvf6uuQiYpxARdC4Yr+UquZzzk7ZGun4MSufx3Mi9kmfjlU0e2MiBRHYWQdfx2HjU0ifaHJecJ7lXqug==",
|
||||
"path": "microsoft.aspnetcore.authentication.jwtbearer/9.0.2",
|
||||
"hashPath": "microsoft.aspnetcore.authentication.jwtbearer.9.0.2.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.OpenApi/9.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-FqUK5j1EOPNuFT7IafltZQ3cakqhSwVzH5ZW1MhZDe4pPXs9sJ2M5jom1Omsu+mwF2tNKKlRAzLRHQTZzbd+6Q==",
|
||||
"path": "microsoft.aspnetcore.openapi/9.0.0",
|
||||
"hashPath": "microsoft.aspnetcore.openapi.9.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/2.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-6ZCllUYGFukkymSTx3Yr0G/ajRxoNJp7/FqSxSB4fGISST54ifBhgu4Nc0ItGi3i6DqwuNd8SUyObmiC++AO2Q==",
|
||||
"path": "microsoft.extensions.logging.abstractions/2.0.0",
|
||||
"hashPath": "microsoft.extensions.logging.abstractions.2.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.IdentityModel.Abstractions/8.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-OtlIWcyX01olfdevPKZdIPfBEvbcioDyBiE/Z2lHsopsMD7twcKtlN9kMevHmI5IIPhFpfwCIiR6qHQz1WHUIw==",
|
||||
"path": "microsoft.identitymodel.abstractions/8.0.1",
|
||||
"hashPath": "microsoft.identitymodel.abstractions.8.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.IdentityModel.JsonWebTokens/8.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-s6++gF9x0rQApQzOBbSyp4jUaAlwm+DroKfL8gdOHxs83k8SJfUXhuc46rDB3rNXBQ1MVRxqKUrqFhO/M0E97g==",
|
||||
"path": "microsoft.identitymodel.jsonwebtokens/8.0.1",
|
||||
"hashPath": "microsoft.identitymodel.jsonwebtokens.8.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.IdentityModel.Logging/8.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-UCPF2exZqBXe7v/6sGNiM6zCQOUXXQ9+v5VTb9gPB8ZSUPnX53BxlN78v2jsbIvK9Dq4GovQxo23x8JgWvm/Qg==",
|
||||
"path": "microsoft.identitymodel.logging/8.0.1",
|
||||
"hashPath": "microsoft.identitymodel.logging.8.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.IdentityModel.Protocols/8.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-uA2vpKqU3I2mBBEaeJAWPTjT9v1TZrGWKdgK6G5qJd03CLx83kdiqO9cmiK8/n1erkHzFBwU/RphP83aAe3i3g==",
|
||||
"path": "microsoft.identitymodel.protocols/8.0.1",
|
||||
"hashPath": "microsoft.identitymodel.protocols.8.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.IdentityModel.Protocols.OpenIdConnect/8.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-AQDbfpL+yzuuGhO/mQhKNsp44pm5Jv8/BI4KiFXR7beVGZoSH35zMV3PrmcfvSTsyI6qrcR898NzUauD6SRigg==",
|
||||
"path": "microsoft.identitymodel.protocols.openidconnect/8.0.1",
|
||||
"hashPath": "microsoft.identitymodel.protocols.openidconnect.8.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.IdentityModel.Tokens/8.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-kDimB6Dkd3nkW2oZPDkMkVHfQt3IDqO5gL0oa8WVy3OP4uE8Ij+8TXnqg9TOd9ufjsY3IDiGz7pCUbnfL18tjg==",
|
||||
"path": "microsoft.identitymodel.tokens/8.0.1",
|
||||
"hashPath": "microsoft.identitymodel.tokens.8.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.NETCore.Platforms/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==",
|
||||
"path": "microsoft.netcore.platforms/5.0.0",
|
||||
"hashPath": "microsoft.netcore.platforms.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.OpenApi/1.6.17": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Le+kehlmrlQfuDFUt1zZ2dVwrhFQtKREdKBo+rexOwaCoYP0/qpgT9tLxCsZjsgR5Itk1UKPcbgO+FyaNid/bA==",
|
||||
"path": "microsoft.openapi/1.6.17",
|
||||
"hashPath": "microsoft.openapi.1.6.17.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.21.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-8NudeHOE56YsY59HYY89akRMup8Ho+7Y3cADTGjajjWroXVU9RQai2nA6PfteB8AuzmRHZ5NZQB2BnWhQEul5g==",
|
||||
"path": "microsoft.visualstudio.azure.containers.tools.targets/1.21.0",
|
||||
"hashPath": "microsoft.visualstudio.azure.containers.tools.targets.1.21.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Win32.Registry/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
|
||||
"path": "microsoft.win32.registry/5.0.0",
|
||||
"hashPath": "microsoft.win32.registry.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"MongoDB.Bson/3.2.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Lkown45o2rXhFRwkpOCRwy329kqjRuJVVGgVoJKXE8STkqB/msrMXk+4geYYUvykOy/zvGY+ETKbWfJFYP+3gA==",
|
||||
"path": "mongodb.bson/3.2.0",
|
||||
"hashPath": "mongodb.bson.3.2.0.nupkg.sha512"
|
||||
},
|
||||
"MongoDB.Driver/3.2.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-7y25rGE6rO4b3WMlYAsiU4d8iva6UPPM6irDXfJi2Jp9zn7muO1myOEcSzjPROZfgI8lLnKNIg5Ohe8d7c2qJA==",
|
||||
"path": "mongodb.driver/3.2.0",
|
||||
"hashPath": "mongodb.driver.3.2.0.nupkg.sha512"
|
||||
},
|
||||
"SharpCompress/0.30.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw==",
|
||||
"path": "sharpcompress/0.30.1",
|
||||
"hashPath": "sharpcompress.0.30.1.nupkg.sha512"
|
||||
},
|
||||
"Snappier/1.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-rFtK2KEI9hIe8gtx3a0YDXdHOpedIf9wYCEYtBEmtlyiWVX3XlCNV03JrmmAi/Cdfn7dxK+k0sjjcLv4fpHnqA==",
|
||||
"path": "snappier/1.0.0",
|
||||
"hashPath": "snappier.1.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Buffers/4.5.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
|
||||
"path": "system.buffers/4.5.1",
|
||||
"hashPath": "system.buffers.4.5.1.nupkg.sha512"
|
||||
},
|
||||
"System.IdentityModel.Tokens.Jwt/8.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-GJw3bYkWpOgvN3tJo5X4lYUeIFA2HD293FPUhKmp7qxS+g5ywAb34Dnd3cDAFLkcMohy5XTpoaZ4uAHuw0uSPQ==",
|
||||
"path": "system.identitymodel.tokens.jwt/8.0.1",
|
||||
"hashPath": "system.identitymodel.tokens.jwt.8.0.1.nupkg.sha512"
|
||||
},
|
||||
"System.Memory/4.5.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
|
||||
"path": "system.memory/4.5.5",
|
||||
"hashPath": "system.memory.4.5.5.nupkg.sha512"
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==",
|
||||
"path": "system.runtime.compilerservices.unsafe/5.0.0",
|
||||
"hashPath": "system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Security.AccessControl/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
|
||||
"path": "system.security.accesscontrol/5.0.0",
|
||||
"hashPath": "system.security.accesscontrol.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Security.Principal.Windows/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
|
||||
"path": "system.security.principal.windows/5.0.0",
|
||||
"hashPath": "system.security.principal.windows.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"ZstdSharp.Port/0.7.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-U9Ix4l4cl58Kzz1rJzj5hoVTjmbx1qGMwzAcbv1j/d3NzrFaESIurQyg+ow4mivCgkE3S413y+U9k4WdnEIkRA==",
|
||||
"path": "zstdsharp.port/0.7.3",
|
||||
"hashPath": "zstdsharp.port.0.7.3.nupkg.sha512"
|
||||
}
|
||||
}
|
||||
}
|
BIN
Metrolog-API/bin/Debug/net9.0/Metrolog-API.dll
Normal file
BIN
Metrolog-API/bin/Debug/net9.0/Metrolog-API.dll
Normal file
Binary file not shown.
BIN
Metrolog-API/bin/Debug/net9.0/Metrolog-API.exe
Normal file
BIN
Metrolog-API/bin/Debug/net9.0/Metrolog-API.exe
Normal file
Binary file not shown.
BIN
Metrolog-API/bin/Debug/net9.0/Metrolog-API.pdb
Normal file
BIN
Metrolog-API/bin/Debug/net9.0/Metrolog-API.pdb
Normal file
Binary file not shown.
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"runtimeOptions": {
|
||||
"tfm": "net9.0",
|
||||
"frameworks": [
|
||||
{
|
||||
"name": "Microsoft.NETCore.App",
|
||||
"version": "9.0.0"
|
||||
},
|
||||
{
|
||||
"name": "Microsoft.AspNetCore.App",
|
||||
"version": "9.0.0"
|
||||
}
|
||||
],
|
||||
"configProperties": {
|
||||
"System.GC.Server": true,
|
||||
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"Version": 1,
|
||||
"ManifestType": "Build",
|
||||
"Endpoints": []
|
||||
}
|
Binary file not shown.
BIN
Metrolog-API/bin/Debug/net9.0/Microsoft.AspNetCore.OpenApi.dll
Normal file
BIN
Metrolog-API/bin/Debug/net9.0/Microsoft.AspNetCore.OpenApi.dll
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Metrolog-API/bin/Debug/net9.0/Microsoft.IdentityModel.Tokens.dll
Normal file
BIN
Metrolog-API/bin/Debug/net9.0/Microsoft.IdentityModel.Tokens.dll
Normal file
Binary file not shown.
BIN
Metrolog-API/bin/Debug/net9.0/Microsoft.OpenApi.dll
Normal file
BIN
Metrolog-API/bin/Debug/net9.0/Microsoft.OpenApi.dll
Normal file
Binary file not shown.
BIN
Metrolog-API/bin/Debug/net9.0/MongoDB.Bson.dll
Normal file
BIN
Metrolog-API/bin/Debug/net9.0/MongoDB.Bson.dll
Normal file
Binary file not shown.
BIN
Metrolog-API/bin/Debug/net9.0/MongoDB.Driver.dll
Normal file
BIN
Metrolog-API/bin/Debug/net9.0/MongoDB.Driver.dll
Normal file
Binary file not shown.
BIN
Metrolog-API/bin/Debug/net9.0/SharpCompress.dll
Normal file
BIN
Metrolog-API/bin/Debug/net9.0/SharpCompress.dll
Normal file
Binary file not shown.
BIN
Metrolog-API/bin/Debug/net9.0/Snappier.dll
Normal file
BIN
Metrolog-API/bin/Debug/net9.0/Snappier.dll
Normal file
Binary file not shown.
Binary file not shown.
BIN
Metrolog-API/bin/Debug/net9.0/ZstdSharp.dll
Normal file
BIN
Metrolog-API/bin/Debug/net9.0/ZstdSharp.dll
Normal file
Binary file not shown.
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
}
|
||||
}
|
9
Metrolog-API/bin/Debug/net9.0/appsettings.json
Normal file
9
Metrolog-API/bin/Debug/net9.0/appsettings.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
},
|
||||
"AllowedHosts": "*"
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
/app/bin/Debug/net9.0/Metrolog-API.dll
|
1
Metrolog-API/obj/Container/AdditionalProbingPaths.cache
Normal file
1
Metrolog-API/obj/Container/AdditionalProbingPaths.cache
Normal file
|
@ -0,0 +1 @@
|
|||
--additionalProbingPath /.nuget/fallbackpackages2 --additionalProbingPath /.nuget/fallbackpackages
|
0
Metrolog-API/obj/Container/ContainerCreationResult.cache
Normal file
0
Metrolog-API/obj/Container/ContainerCreationResult.cache
Normal file
0
Metrolog-API/obj/Container/ContainerId.cache
Normal file
0
Metrolog-API/obj/Container/ContainerId.cache
Normal file
0
Metrolog-API/obj/Container/ContainerName.cache
Normal file
0
Metrolog-API/obj/Container/ContainerName.cache
Normal file
|
@ -0,0 +1 @@
|
|||
Unknown
|
0
Metrolog-API/obj/Container/ContainerRunContext.cache
Normal file
0
Metrolog-API/obj/Container/ContainerRunContext.cache
Normal file
1
Metrolog-API/obj/Container/ContainerRuntimeID.cache
Normal file
1
Metrolog-API/obj/Container/ContainerRuntimeID.cache
Normal file
|
@ -0,0 +1 @@
|
|||
linux-x64
|
0
Metrolog-API/obj/Container/DebuggeeArguments.cache
Normal file
0
Metrolog-API/obj/Container/DebuggeeArguments.cache
Normal file
0
Metrolog-API/obj/Container/DebuggeeProgram.cache
Normal file
0
Metrolog-API/obj/Container/DebuggeeProgram.cache
Normal file
|
@ -0,0 +1 @@
|
|||
True
|
1
Metrolog-API/obj/Container/ImageBuildContext.cache
Normal file
1
Metrolog-API/obj/Container/ImageBuildContext.cache
Normal file
|
@ -0,0 +1 @@
|
|||
NDre9WgTYeDBO/tshli+GMABybZPXzb5BKIVhu8EH9c=
|
1
Metrolog-API/obj/Container/ImageId.cache
Normal file
1
Metrolog-API/obj/Container/ImageId.cache
Normal file
|
@ -0,0 +1 @@
|
|||
sha256:f7ecb7939910d5012d57a0127950cb4b803f719c5dddd15a139fa5fa50db114f
|
1
Metrolog-API/obj/Container/LaunchedImageId.cache
Normal file
1
Metrolog-API/obj/Container/LaunchedImageId.cache
Normal file
|
@ -0,0 +1 @@
|
|||
sha256:f7ecb7939910d5012d57a0127950cb4b803f719c5dddd15a139fa5fa50db114f
|
1
Metrolog-API/obj/Container/OperatingSystemName.cache
Normal file
1
Metrolog-API/obj/Container/OperatingSystemName.cache
Normal file
|
@ -0,0 +1 @@
|
|||
Linux
|
1
Metrolog-API/obj/Container/TargetFramework.cache
Normal file
1
Metrolog-API/obj/Container/TargetFramework.cache
Normal file
|
@ -0,0 +1 @@
|
|||
DotNetCore
|
1
Metrolog-API/obj/Container/VolumeMappings.cache
Normal file
1
Metrolog-API/obj/Container/VolumeMappings.cache
Normal file
|
@ -0,0 +1 @@
|
|||
{"C:\\Users\\jan00\\vsdbg\\vs2017u5":"/remote_debugger","C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Sdks\\Microsoft.Docker.Sdk\\tools\\linux-x64\\net6.0":"/VSTools","C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\CommonExtensions\\Microsoft\\HotReload":"/HotReloadAgent","C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API":"/src/","C:\\Users\\jan00\\.nuget\\packages":"/.nuget/fallbackpackages2","C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages":"/.nuget/fallbackpackages"}
|
1
Metrolog-API/obj/Container/VolumeMappings2.cache
Normal file
1
Metrolog-API/obj/Container/VolumeMappings2.cache
Normal file
|
@ -0,0 +1 @@
|
|||
[{"SourcePath":"C:\\Users\\jan00\\vsdbg\\vs2017u5","TargetPath":"/remote_debugger","ReadOnly":false},{"SourcePath":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Sdks\\Microsoft.Docker.Sdk\\tools\\linux-x64\\net6.0","TargetPath":"/VSTools","ReadOnly":true},{"SourcePath":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\CommonExtensions\\Microsoft\\HotReload","TargetPath":"/HotReloadAgent","ReadOnly":true},{"SourcePath":"C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API","TargetPath":"/app","ReadOnly":false},{"SourcePath":"C:\\Users\\jan00\\Documents\\Programovani\\MyProjects\\Metrolog\\Metrolog-API","TargetPath":"/src/","ReadOnly":false},{"SourcePath":"C:\\Users\\jan00\\.nuget\\packages","TargetPath":"/.nuget/fallbackpackages2","ReadOnly":false},{"SourcePath":"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages","TargetPath":"/.nuget/fallbackpackages","ReadOnly":false}]
|
0
Metrolog-API/obj/Container/VsDbgScript.cache
Normal file
0
Metrolog-API/obj/Container/VsDbgScript.cache
Normal file
|
@ -0,0 +1,4 @@
|
|||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")]
|
23
Metrolog-API/obj/Debug/net9.0/Metrolog-API.AssemblyInfo.cs
Normal file
23
Metrolog-API/obj/Debug/net9.0/Metrolog-API.AssemblyInfo.cs
Normal file
|
@ -0,0 +1,23 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Metrolog-API")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("Metrolog-API")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("Metrolog-API")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
// Generated by the MSBuild WriteCodeFragment class.
|
||||
|
|
@ -0,0 +1 @@
|
|||
71c873f5af5416e3400d59ca8d53f09cd591911e1c42befc799b12b4eb9c364c
|
|
@ -0,0 +1,21 @@
|
|||
is_global = true
|
||||
build_property.TargetFramework = net9.0
|
||||
build_property.TargetPlatformMinVersion =
|
||||
build_property.UsingMicrosoftNETSdkWeb = true
|
||||
build_property.ProjectTypeGuids =
|
||||
build_property.InvariantGlobalization =
|
||||
build_property.PlatformNeutralAssembly =
|
||||
build_property.EnforceExtendedAnalyzerRules =
|
||||
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||
build_property.RootNamespace = Metrolog_API
|
||||
build_property.RootNamespace = Metrolog_API
|
||||
build_property.ProjectDir = C:\Users\jan00\Documents\Programovani\MyProjects\Metrolog\Metrolog-API\
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
build_property.RazorLangVersion = 9.0
|
||||
build_property.SupportLocalizedComponentNames =
|
||||
build_property.GenerateRazorMetadataSourceChecksumAttributes =
|
||||
build_property.MSBuildProjectDirectory = C:\Users\jan00\Documents\Programovani\MyProjects\Metrolog\Metrolog-API
|
||||
build_property._RazorSourceGeneratorDebug =
|
||||
build_property.EffectiveAnalysisLevelStyle = 9.0
|
||||
build_property.EnableCodeStyleSeverity =
|
17
Metrolog-API/obj/Debug/net9.0/Metrolog-API.GlobalUsings.g.cs
Normal file
17
Metrolog-API/obj/Debug/net9.0/Metrolog-API.GlobalUsings.g.cs
Normal file
|
@ -0,0 +1,17 @@
|
|||
// <auto-generated/>
|
||||
global using global::Microsoft.AspNetCore.Builder;
|
||||
global using global::Microsoft.AspNetCore.Hosting;
|
||||
global using global::Microsoft.AspNetCore.Http;
|
||||
global using global::Microsoft.AspNetCore.Routing;
|
||||
global using global::Microsoft.Extensions.Configuration;
|
||||
global using global::Microsoft.Extensions.DependencyInjection;
|
||||
global using global::Microsoft.Extensions.Hosting;
|
||||
global using global::Microsoft.Extensions.Logging;
|
||||
global using global::System;
|
||||
global using global::System.Collections.Generic;
|
||||
global using global::System.IO;
|
||||
global using global::System.Linq;
|
||||
global using global::System.Net.Http;
|
||||
global using global::System.Net.Http.Json;
|
||||
global using global::System.Threading;
|
||||
global using global::System.Threading.Tasks;
|
|
@ -0,0 +1,17 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Microsoft.AspNetCore.OpenApi")]
|
||||
|
||||
// Generated by the MSBuild WriteCodeFragment class.
|
||||
|
BIN
Metrolog-API/obj/Debug/net9.0/Metrolog-API.assets.cache
Normal file
BIN
Metrolog-API/obj/Debug/net9.0/Metrolog-API.assets.cache
Normal file
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue