updating DTO

This commit is contained in:
2025-10-13 15:00:16 +02:00
parent 7a3fb74831
commit 2e6d54a7cc
6 changed files with 52 additions and 7 deletions

View File

@@ -0,0 +1,7 @@
namespace ApiEfCoreLibrary.DTO.Login.Request;
public class ConnectLoginDto
{
public string? Username { get; set; }
public string? Password { get; set; }
}

View File

@@ -5,5 +5,4 @@ public class CreateLoginDto
public string? Username { get; set; }
public string? FullName { get; set; }
public string? Password { get; set; }
public string? Salt { get; set; }
}

View File

@@ -6,5 +6,4 @@ public class UpdateLoginDto
public string? Username { get; set; }
public string? FullName { get; set; }
public string? Password { get; set; }
public string? Salt { get; set; }
}

View File

@@ -1,6 +1,5 @@
using ApiEfCoreLibrary.DTO.Login.Request;
using ApiEfCoreLibrary.DTO.Login.Response;
using BCrypt.Net;
namespace ApiEfCoreLibrary.Endpoints.Login;
using FastEndpoints;
@@ -15,12 +14,14 @@ public class CreateLoginEndpoint(LibraryDbContext database) : Endpoint<CreateLog
public override async Task HandleAsync(CreateLoginDto req, CancellationToken ct)
{
string? salt = BCrypt.Net.BCrypt.GenerateSalt(24);
var login = new Models.Login()
{
Username = req.Username,
FullName = req.FullName,
Password = BCrypt.Net.BCrypt.HashPassword(req.Password + req.Salt),
Salt = BCrypt.Net.BCrypt.GenerateSalt(24)
Password = BCrypt.Net.BCrypt.HashPassword(req.Password + salt),
Salt = salt
};
database.Logins.Add(login);

View File

@@ -24,10 +24,12 @@ public class UpdateLoginEndpoint(LibraryDbContext database) : Endpoint<UpdateLog
return;
}
string? salt = BCrypt.Net.BCrypt.GenerateSalt(24);
login.Username = req.Username;
login.FullName = req.FullName;
login.Password = BCrypt.Net.BCrypt.HashPassword(req.Password + req.Salt);
login.Salt = BCrypt.Net.BCrypt.GenerateSalt(24);
login.Password = BCrypt.Net.BCrypt.HashPassword(req.Password + salt);
login.Salt = salt;
await database.SaveChangesAsync(ct);
GetLoginDto responseDto = new()

View File

@@ -0,0 +1,37 @@
using ApiEfCoreLibrary.DTO.Login.Request;
namespace ApiEfCoreLibrary.Endpoints.Login;
public class UserLoginEndpoint
{
public override void Configure()
{
Post("/api/login");
AllowAnonymous();
}
public override async Task HandleAsync(ConnectLoginDto req, CancellationToken ct)
{
if (await myAuthService.CredentialsAreValid(req.Username, req.Password, ct))
{
var jwtToken = JwtBearer.CreateToken(
o =>
{
o.SigningKey = "A secret token signing key";
o.ExpireAt = DateTime.UtcNow.AddDays(1);
o.User.Roles.Add("Manager", "Auditor");
o.User.Claims.Add(("UserName", req.Username));
o.User["UserId"] = "001"; //indexer based claim setting
});
await Send.OkAsync(
new
{
req.Username,
Token = jwtToken
});
}
else
ThrowError("The supplied credentials are invalid!");
}
}