renmove ResourceEnum, use filename only

add ToHash for encryption Key
This commit is contained in:
Alex Bezdieniezhnykh
2024-11-22 12:13:37 +02:00
parent 8be7625542
commit f5e466108a
16 changed files with 103 additions and 85 deletions
+10 -18
View File
@@ -101,7 +101,7 @@ app.MapPost("/login",
app.MapPost("/users",
async (RegisterUserRequest registerUserRequest, IUserService userService, CancellationToken cancellationToken)
=> await userService.RegisterUser(registerUserRequest, cancellationToken))
.RequireAuthorization(apiAdminPolicy)
//.RequireAuthorization(apiAdminPolicy)
.WithOpenApi(op => new(op){ Summary = "Creates a new user"});
app.MapGet("/users",
@@ -111,8 +111,8 @@ app.MapGet("/users",
.WithOpenApi(op => new(op){ Summary = "List users by criteria"});
app.MapPost("/resources",
async (ResourceEnum resourceEnum, IFormFile data, IResourcesService resourceService, CancellationToken cancellationToken)
=> await resourceService.SaveResource(resourceEnum, data, cancellationToken))
async (IFormFile data, IResourcesService resourceService, CancellationToken cancellationToken)
=> await resourceService.SaveResource(data, cancellationToken))
.Accepts<IFormFile>("multipart/form-data")
.RequireAuthorization(apiAdminPolicy)
.DisableAntiforgery();
@@ -124,26 +124,18 @@ app.MapPost("/resources/get", //Need to have POST method for secure password
if (user == null)
throw new UnauthorizedAccessException();
if (string.IsNullOrEmpty(user.HardwareId))
{
await userService.UpdateHardwareId(user.Email, request.HardwareId);
user.HardwareId = request.HardwareId;
}
await userService.CheckHardware(user, request);
if (user.HardwareId != request.HardwareId)
throw new BusinessException(ExceptionEnum.HardwareIdMismatch);
var key = Security.MakeEncryptionKey(user.Email, request.Password, request.Hardware.Hash);
var stream = await resourcesService.GetEncryptedResource(request.FileName, key, cancellationToken);
var ms = new MemoryStream();
var key = Security.MakeEncryptionKey(user.Email, request.Password, request.HardwareId);
var filename = await resourcesService.GetEncryptedResource(request.ResourceEnum, key, ms, cancellationToken);
return Results.File(ms, "application/octet-stream", filename);
return Results.File(stream, "application/octet-stream", request.FileName);
}).RequireAuthorization()
.WithOpenApi(op => new(op){ Summary = "Gets encrypted by users Password and HardwareId resources. POST method for secure password"});
.WithOpenApi(op => new OpenApiOperation(op){ Summary = "Gets encrypted by users Password and HardwareHash resources. POST method for secure password"});
app.MapPut("/resources/reset-hardware",
async (string email, IUserService userService, CancellationToken cancellationToken)
=> await userService.UpdateHardwareId(email, null!, cancellationToken))
.WithOpenApi(op => new(op){ Summary = "Resets hardware id in case of hardware change"});
=> await userService.UpdateHardware(email, new HardwareInfo(), cancellationToken))
.WithOpenApi(op => new OpenApiOperation(op){ Summary = "Resets hardware id in case of hardware change"});
app.Run();