diff --git a/.idea/.idea.Knots/.idea/dataSources.xml b/.idea/.idea.Knots/.idea/dataSources.xml index 3a9d71a..3b05a4b 100644 --- a/.idea/.idea.Knots/.idea/dataSources.xml +++ b/.idea/.idea.Knots/.idea/dataSources.xml @@ -1,7 +1,7 @@ - + sqlserver.jb true com.jetbrains.jdbc.sqlserver.SqlServerDriver diff --git a/Knots/Endpoints/User/CreateUserEndpoint.cs b/Knots/Endpoints/User/CreateUserEndpoint.cs index 8dbabf5..a30431d 100644 --- a/Knots/Endpoints/User/CreateUserEndpoint.cs +++ b/Knots/Endpoints/User/CreateUserEndpoint.cs @@ -1,5 +1,6 @@ using FastEndpoints; using Knots.DTO.User; +using Microsoft.EntityFrameworkCore; namespace Knots.Endpoints.User; @@ -13,6 +14,17 @@ public class CreateUserEndpoint(KnotsDbContext db, AutoMapper.IMapper mapper) : public override async Task HandleAsync(CreateUserDto req, CancellationToken ct) { + bool usernameExists = await db.Users + .AnyAsync(x => x.Username == req.Username, cancellationToken: ct); + + if (usernameExists) + { + AddError(x => x.Username, "Ce nom d'utilisateur est déjà pris."); + await Send.ErrorsAsync(cancellation: ct); + return; + } + + req.Password = BCrypt.Net.BCrypt.HashPassword(req.Password); Models.User? user = mapper.Map(req); db.Users.Add(user); await db.SaveChangesAsync(ct); diff --git a/Knots/Endpoints/User/LoginEndpoint.cs b/Knots/Endpoints/User/LoginEndpoint.cs index 177f8e6..a5713ec 100644 --- a/Knots/Endpoints/User/LoginEndpoint.cs +++ b/Knots/Endpoints/User/LoginEndpoint.cs @@ -18,7 +18,7 @@ public class LoginEndpoint(KnotsDbContext db, JwtService jwtService) : Endpoint< Models.User? user = await db.Users .SingleOrDefaultAsync(x => x.Username == req.Username, cancellationToken: ct); - if (user is null || user.Password != req.Password) // hash à ajouter plus tard + if (user is null || !BCrypt.Net.BCrypt.Verify(req.Password, user.Password)) // hash à ajouter plus tard { await Send.UnauthorizedAsync(ct); return; diff --git a/Knots/Knots.csproj b/Knots/Knots.csproj index 5f9e9f6..72538f7 100644 --- a/Knots/Knots.csproj +++ b/Knots/Knots.csproj @@ -8,6 +8,7 @@ + diff --git a/Knots/bin/Debug/net8.0/BCrypt-Net-Next.dll b/Knots/bin/Debug/net8.0/BCrypt-Net-Next.dll new file mode 100644 index 0000000..06afb48 Binary files /dev/null and b/Knots/bin/Debug/net8.0/BCrypt-Net-Next.dll differ diff --git a/Knots/bin/Debug/net8.0/Knots.deps.json b/Knots/bin/Debug/net8.0/Knots.deps.json index 8464b1f..afe9edf 100644 --- a/Knots/bin/Debug/net8.0/Knots.deps.json +++ b/Knots/bin/Debug/net8.0/Knots.deps.json @@ -9,6 +9,7 @@ "Knots/1.0.0": { "dependencies": { "AutoMapper": "16.1.1", + "BCrypt.Net-Next": "4.2.0", "FastEndpoints": "8.0.1", "FastEndpoints.Swagger": "8.0.1", "Microsoft.AspNetCore.Authentication": "2.3.11", @@ -71,6 +72,14 @@ } } }, + "BCrypt.Net-Next/4.2.0": { + "runtime": { + "lib/netstandard2.1/BCrypt-Net-Next.dll": { + "assemblyVersion": "4.2.0.0", + "fileVersion": "4.2.0.0" + } + } + }, "FastEndpoints/8.0.1": { "dependencies": { "FastEndpoints.Attributes": "8.0.1", @@ -1437,6 +1446,13 @@ "path": "azure.identity/1.11.4", "hashPath": "azure.identity.1.11.4.nupkg.sha512" }, + "BCrypt.Net-Next/4.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-gwLD2KfCuwQesP17aVh4h6lpiMPEVt5Lbpndo0ej903hNUUTtyxt3ARdDjmuydBRTAUICc7OVKVbaOvc6SQYXA==", + "path": "bcrypt.net-next/4.2.0", + "hashPath": "bcrypt.net-next.4.2.0.nupkg.sha512" + }, "FastEndpoints/8.0.1": { "type": "package", "serviceable": true, diff --git a/Knots/bin/Debug/net8.0/Knots.dll b/Knots/bin/Debug/net8.0/Knots.dll index 149d319..58f9dfc 100644 Binary files a/Knots/bin/Debug/net8.0/Knots.dll and b/Knots/bin/Debug/net8.0/Knots.dll differ diff --git a/Knots/bin/Debug/net8.0/Knots.exe b/Knots/bin/Debug/net8.0/Knots.exe index 2e55c85..25fb2eb 100644 Binary files a/Knots/bin/Debug/net8.0/Knots.exe and b/Knots/bin/Debug/net8.0/Knots.exe differ diff --git a/Knots/bin/Debug/net8.0/Knots.pdb b/Knots/bin/Debug/net8.0/Knots.pdb index 1f8d942..ea24d81 100644 Binary files a/Knots/bin/Debug/net8.0/Knots.pdb and b/Knots/bin/Debug/net8.0/Knots.pdb differ diff --git a/Knots/obj/Debug/net8.0/Knots.AssemblyInfo.cs b/Knots/obj/Debug/net8.0/Knots.AssemblyInfo.cs index 7866434..ffc11af 100644 --- a/Knots/obj/Debug/net8.0/Knots.AssemblyInfo.cs +++ b/Knots/obj/Debug/net8.0/Knots.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Knots")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e8d5ac797b67a6c7c6719e831ac1f150893f28ad")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+84d0376138f9f289ef91e21fdd18b25c871c1acf")] [assembly: System.Reflection.AssemblyProductAttribute("Knots")] [assembly: System.Reflection.AssemblyTitleAttribute("Knots")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Knots/obj/Debug/net8.0/Knots.AssemblyInfoInputs.cache b/Knots/obj/Debug/net8.0/Knots.AssemblyInfoInputs.cache index 3191eb2..8ddcde8 100644 --- a/Knots/obj/Debug/net8.0/Knots.AssemblyInfoInputs.cache +++ b/Knots/obj/Debug/net8.0/Knots.AssemblyInfoInputs.cache @@ -1 +1 @@ -f590fd7039e5e02a09290e867dcff1d085dc86bbc598b2bf76d4d65ccda866ca +3f7b2a3ee7c375b1158b1a88381cf4975972813f9f9a5febadee3fc42d938a09 diff --git a/Knots/obj/Debug/net8.0/Knots.assets.cache b/Knots/obj/Debug/net8.0/Knots.assets.cache index 9829788..b96337f 100644 Binary files a/Knots/obj/Debug/net8.0/Knots.assets.cache and b/Knots/obj/Debug/net8.0/Knots.assets.cache differ diff --git a/Knots/obj/Debug/net8.0/Knots.csproj.AssemblyReference.cache b/Knots/obj/Debug/net8.0/Knots.csproj.AssemblyReference.cache index fa4452e..3dfb97c 100644 Binary files a/Knots/obj/Debug/net8.0/Knots.csproj.AssemblyReference.cache and b/Knots/obj/Debug/net8.0/Knots.csproj.AssemblyReference.cache differ diff --git a/Knots/obj/Debug/net8.0/Knots.csproj.CoreCompileInputs.cache b/Knots/obj/Debug/net8.0/Knots.csproj.CoreCompileInputs.cache index 14b5692..3c6677c 100644 --- a/Knots/obj/Debug/net8.0/Knots.csproj.CoreCompileInputs.cache +++ b/Knots/obj/Debug/net8.0/Knots.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -c63bb86637486085df3f28dc9ab57c639ae176fe7083ba40d0795948620e0a00 +bb48158ec8eb2df7ad212aee65554da457917fda1961b2e4475621e399c96301 diff --git a/Knots/obj/Debug/net8.0/Knots.csproj.FileListAbsolute.txt b/Knots/obj/Debug/net8.0/Knots.csproj.FileListAbsolute.txt index 13c84a3..13f08b5 100644 --- a/Knots/obj/Debug/net8.0/Knots.csproj.FileListAbsolute.txt +++ b/Knots/obj/Debug/net8.0/Knots.csproj.FileListAbsolute.txt @@ -348,3 +348,4 @@ C:\Users\Carte\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.Extensions.W C:\Users\Carte\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Security.Cryptography.Pkcs.dll C:\Users\Carte\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Security.Cryptography.Xml.dll C:\Users\Carte\RiderProjects\Knots\Knots\bin\Debug\net8.0\runtimes\win\lib\net8.0\System.Security.Cryptography.Pkcs.dll +C:\Users\Carte\RiderProjects\Knots\Knots\bin\Debug\net8.0\BCrypt-Net-Next.dll diff --git a/Knots/obj/Debug/net8.0/Knots.dll b/Knots/obj/Debug/net8.0/Knots.dll index 149d319..58f9dfc 100644 Binary files a/Knots/obj/Debug/net8.0/Knots.dll and b/Knots/obj/Debug/net8.0/Knots.dll differ diff --git a/Knots/obj/Debug/net8.0/Knots.pdb b/Knots/obj/Debug/net8.0/Knots.pdb index 1f8d942..ea24d81 100644 Binary files a/Knots/obj/Debug/net8.0/Knots.pdb and b/Knots/obj/Debug/net8.0/Knots.pdb differ diff --git a/Knots/obj/Debug/net8.0/apphost.exe b/Knots/obj/Debug/net8.0/apphost.exe index 2e55c85..25fb2eb 100644 Binary files a/Knots/obj/Debug/net8.0/apphost.exe and b/Knots/obj/Debug/net8.0/apphost.exe differ diff --git a/Knots/obj/Debug/net8.0/ref/Knots.dll b/Knots/obj/Debug/net8.0/ref/Knots.dll index 0768740..113c7a1 100644 Binary files a/Knots/obj/Debug/net8.0/ref/Knots.dll and b/Knots/obj/Debug/net8.0/ref/Knots.dll differ diff --git a/Knots/obj/Debug/net8.0/refint/Knots.dll b/Knots/obj/Debug/net8.0/refint/Knots.dll index 0768740..113c7a1 100644 Binary files a/Knots/obj/Debug/net8.0/refint/Knots.dll and b/Knots/obj/Debug/net8.0/refint/Knots.dll differ diff --git a/Knots/obj/Knots.csproj.nuget.dgspec.json b/Knots/obj/Knots.csproj.nuget.dgspec.json index 9230138..9ddcebf 100644 --- a/Knots/obj/Knots.csproj.nuget.dgspec.json +++ b/Knots/obj/Knots.csproj.nuget.dgspec.json @@ -53,6 +53,10 @@ "target": "Package", "version": "[16.1.1, )" }, + "BCrypt.Net-Next": { + "target": "Package", + "version": "[4.2.0, )" + }, "FastEndpoints": { "target": "Package", "version": "[8.0.1, )" diff --git a/Knots/obj/project.assets.json b/Knots/obj/project.assets.json index 0754644..f5f867d 100644 --- a/Knots/obj/project.assets.json +++ b/Knots/obj/project.assets.json @@ -65,6 +65,15 @@ } } }, + "BCrypt.Net-Next/4.2.0": { + "type": "package", + "compile": { + "lib/netstandard2.1/BCrypt-Net-Next.dll": {} + }, + "runtime": { + "lib/netstandard2.1/BCrypt-Net-Next.dll": {} + } + }, "FastEndpoints/8.0.1": { "type": "package", "dependencies": { @@ -2416,6 +2425,31 @@ "lib/netstandard2.0/Azure.Identity.xml" ] }, + "BCrypt.Net-Next/4.2.0": { + "sha512": "gwLD2KfCuwQesP17aVh4h6lpiMPEVt5Lbpndo0ej903hNUUTtyxt3ARdDjmuydBRTAUICc7OVKVbaOvc6SQYXA==", + "type": "package", + "path": "bcrypt.net-next/4.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "bcrypt.net-next.4.2.0.nupkg.sha512", + "bcrypt.net-next.nuspec", + "ico.png", + "lib/net10.0/BCrypt-Net-Next.dll", + "lib/net10.0/BCrypt.Net-Next.xml", + "lib/net462/BCrypt-Net-Next.dll", + "lib/net462/BCrypt.Net-Next.xml", + "lib/net472/BCrypt-Net-Next.dll", + "lib/net472/BCrypt.Net-Next.xml", + "lib/net48/BCrypt-Net-Next.dll", + "lib/net48/BCrypt.Net-Next.xml", + "lib/netstandard2.0/BCrypt-Net-Next.dll", + "lib/netstandard2.0/BCrypt.Net-Next.xml", + "lib/netstandard2.1/BCrypt-Net-Next.dll", + "lib/netstandard2.1/BCrypt.Net-Next.xml", + "readme.md" + ] + }, "FastEndpoints/8.0.1": { "sha512": "v77ZGHBE95gGCQxDz2mwLNpU42dcD6WPQTpzhnLq8weFHD7mtzhhWgpxaNHt6fYEES/bnYUVzoc4x9QnwDy7Yg==", "type": "package", @@ -5684,6 +5718,7 @@ "projectFileDependencyGroups": { "net8.0": [ "AutoMapper >= 16.1.1", + "BCrypt.Net-Next >= 4.2.0", "FastEndpoints >= 8.0.1", "FastEndpoints.Swagger >= 8.0.1", "Microsoft.AspNetCore.Authentication >= 2.3.11", @@ -5748,6 +5783,10 @@ "target": "Package", "version": "[16.1.1, )" }, + "BCrypt.Net-Next": { + "target": "Package", + "version": "[4.2.0, )" + }, "FastEndpoints": { "target": "Package", "version": "[8.0.1, )" diff --git a/Knots/obj/project.nuget.cache b/Knots/obj/project.nuget.cache index 5993850..928294f 100644 --- a/Knots/obj/project.nuget.cache +++ b/Knots/obj/project.nuget.cache @@ -1,12 +1,13 @@ { "version": 2, - "dgSpecHash": "jgDZDYo35+E=", + "dgSpecHash": "RhsVVzLj7C0=", "success": true, "projectFilePath": "C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\Knots.csproj", "expectedPackageFiles": [ "C:\\Users\\Carte\\.nuget\\packages\\automapper\\16.1.1\\automapper.16.1.1.nupkg.sha512", "C:\\Users\\Carte\\.nuget\\packages\\azure.core\\1.38.0\\azure.core.1.38.0.nupkg.sha512", "C:\\Users\\Carte\\.nuget\\packages\\azure.identity\\1.11.4\\azure.identity.1.11.4.nupkg.sha512", + "C:\\Users\\Carte\\.nuget\\packages\\bcrypt.net-next\\4.2.0\\bcrypt.net-next.4.2.0.nupkg.sha512", "C:\\Users\\Carte\\.nuget\\packages\\fastendpoints\\8.0.1\\fastendpoints.8.0.1.nupkg.sha512", "C:\\Users\\Carte\\.nuget\\packages\\fastendpoints.attributes\\8.0.1\\fastendpoints.attributes.8.0.1.nupkg.sha512", "C:\\Users\\Carte\\.nuget\\packages\\fastendpoints.core\\8.0.1\\fastendpoints.core.8.0.1.nupkg.sha512", diff --git a/Knots/obj/project.packagespec.json b/Knots/obj/project.packagespec.json index 54a5c09..7b86cf2 100644 --- a/Knots/obj/project.packagespec.json +++ b/Knots/obj/project.packagespec.json @@ -1 +1 @@ -"restore":{"projectUniqueName":"C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\Knots.csproj","projectName":"Knots","projectPath":"C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\Knots.csproj","packagesPath":"","outputPath":"C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\obj\\","projectStyle":"PackageReference","fallbackFolders":["C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"],"originalTargetFrameworks":["net8.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"AutoMapper":{"target":"Package","version":"[16.1.1, )"},"FastEndpoints":{"target":"Package","version":"[8.0.1, )"},"FastEndpoints.Swagger":{"target":"Package","version":"[8.0.1, )"},"Microsoft.AspNetCore.Authentication":{"target":"Package","version":"[2.3.11, )"},"Microsoft.AspNetCore.Authentication.JwtBearer":{"target":"Package","version":"[8.0.28, )"},"Microsoft.AspNetCore.OpenApi":{"target":"Package","version":"[8.0.25, )"},"Microsoft.EntityFrameworkCore":{"target":"Package","version":"[8.0.25, )"},"Microsoft.EntityFrameworkCore.Design":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[8.0.25, )"},"Microsoft.EntityFrameworkCore.SqlServer":{"target":"Package","version":"[8.0.25, )"},"Swashbuckle.AspNetCore":{"target":"Package","version":"[10.1.7, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.AspNetCore.App":{"privateAssets":"none"},"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Users\\Carte\\.dotnet\\sdk\\8.0.421/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file +"restore":{"projectUniqueName":"C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\Knots.csproj","projectName":"Knots","projectPath":"C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\Knots.csproj","packagesPath":"","outputPath":"C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\obj\\","projectStyle":"PackageReference","fallbackFolders":["C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"],"originalTargetFrameworks":["net8.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"AutoMapper":{"target":"Package","version":"[16.1.1, )"},"BCrypt.Net-Next":{"target":"Package","version":"[4.2.0, )"},"FastEndpoints":{"target":"Package","version":"[8.0.1, )"},"FastEndpoints.Swagger":{"target":"Package","version":"[8.0.1, )"},"Microsoft.AspNetCore.Authentication":{"target":"Package","version":"[2.3.11, )"},"Microsoft.AspNetCore.Authentication.JwtBearer":{"target":"Package","version":"[8.0.28, )"},"Microsoft.AspNetCore.OpenApi":{"target":"Package","version":"[8.0.25, )"},"Microsoft.EntityFrameworkCore":{"target":"Package","version":"[8.0.25, )"},"Microsoft.EntityFrameworkCore.Design":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[8.0.25, )"},"Microsoft.EntityFrameworkCore.SqlServer":{"target":"Package","version":"[8.0.25, )"},"Swashbuckle.AspNetCore":{"target":"Package","version":"[10.1.7, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.AspNetCore.App":{"privateAssets":"none"},"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Users\\Carte\\.dotnet\\sdk\\8.0.421/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file diff --git a/Knots/obj/rider.project.model.nuget.info b/Knots/obj/rider.project.model.nuget.info index b120938..7dad750 100644 --- a/Knots/obj/rider.project.model.nuget.info +++ b/Knots/obj/rider.project.model.nuget.info @@ -1 +1 @@ -17810836777886837 \ No newline at end of file +17810953948669773 \ No newline at end of file diff --git a/Knots/obj/rider.project.restore.info b/Knots/obj/rider.project.restore.info index 7c66a70..9924ede 100644 --- a/Knots/obj/rider.project.restore.info +++ b/Knots/obj/rider.project.restore.info @@ -1 +1 @@ -17810836780793791 \ No newline at end of file +17810953954413031 \ No newline at end of file