updating DTO
This commit is contained in:
7
ApiEfCoreLibrary/DTO/Login/Request/ConnectLoginDto.cs
Normal file
7
ApiEfCoreLibrary/DTO/Login/Request/ConnectLoginDto.cs
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
namespace ApiEfCoreLibrary.DTO.Login.Request;
|
||||||
|
|
||||||
|
public class ConnectLoginDto
|
||||||
|
{
|
||||||
|
public string? Username { get; set; }
|
||||||
|
public string? Password { get; set; }
|
||||||
|
}
|
@@ -5,5 +5,4 @@ public class CreateLoginDto
|
|||||||
public string? Username { get; set; }
|
public string? Username { get; set; }
|
||||||
public string? FullName { get; set; }
|
public string? FullName { get; set; }
|
||||||
public string? Password { get; set; }
|
public string? Password { get; set; }
|
||||||
public string? Salt { get; set; }
|
|
||||||
}
|
}
|
@@ -6,5 +6,4 @@ public class UpdateLoginDto
|
|||||||
public string? Username { get; set; }
|
public string? Username { get; set; }
|
||||||
public string? FullName { get; set; }
|
public string? FullName { get; set; }
|
||||||
public string? Password { get; set; }
|
public string? Password { get; set; }
|
||||||
public string? Salt { get; set; }
|
|
||||||
}
|
}
|
@@ -1,6 +1,5 @@
|
|||||||
using ApiEfCoreLibrary.DTO.Login.Request;
|
using ApiEfCoreLibrary.DTO.Login.Request;
|
||||||
using ApiEfCoreLibrary.DTO.Login.Response;
|
using ApiEfCoreLibrary.DTO.Login.Response;
|
||||||
using BCrypt.Net;
|
|
||||||
|
|
||||||
namespace ApiEfCoreLibrary.Endpoints.Login;
|
namespace ApiEfCoreLibrary.Endpoints.Login;
|
||||||
using FastEndpoints;
|
using FastEndpoints;
|
||||||
@@ -15,12 +14,14 @@ public class CreateLoginEndpoint(LibraryDbContext database) : Endpoint<CreateLog
|
|||||||
|
|
||||||
public override async Task HandleAsync(CreateLoginDto req, CancellationToken ct)
|
public override async Task HandleAsync(CreateLoginDto req, CancellationToken ct)
|
||||||
{
|
{
|
||||||
|
string? salt = BCrypt.Net.BCrypt.GenerateSalt(24);
|
||||||
|
|
||||||
var login = new Models.Login()
|
var login = new Models.Login()
|
||||||
{
|
{
|
||||||
Username = req.Username,
|
Username = req.Username,
|
||||||
FullName = req.FullName,
|
FullName = req.FullName,
|
||||||
Password = BCrypt.Net.BCrypt.HashPassword(req.Password + req.Salt),
|
Password = BCrypt.Net.BCrypt.HashPassword(req.Password + salt),
|
||||||
Salt = BCrypt.Net.BCrypt.GenerateSalt(24)
|
Salt = salt
|
||||||
};
|
};
|
||||||
|
|
||||||
database.Logins.Add(login);
|
database.Logins.Add(login);
|
||||||
|
@@ -24,10 +24,12 @@ public class UpdateLoginEndpoint(LibraryDbContext database) : Endpoint<UpdateLog
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string? salt = BCrypt.Net.BCrypt.GenerateSalt(24);
|
||||||
|
|
||||||
login.Username = req.Username;
|
login.Username = req.Username;
|
||||||
login.FullName = req.FullName;
|
login.FullName = req.FullName;
|
||||||
login.Password = BCrypt.Net.BCrypt.HashPassword(req.Password + req.Salt);
|
login.Password = BCrypt.Net.BCrypt.HashPassword(req.Password + salt);
|
||||||
login.Salt = BCrypt.Net.BCrypt.GenerateSalt(24);
|
login.Salt = salt;
|
||||||
await database.SaveChangesAsync(ct);
|
await database.SaveChangesAsync(ct);
|
||||||
|
|
||||||
GetLoginDto responseDto = new()
|
GetLoginDto responseDto = new()
|
||||||
|
37
ApiEfCoreLibrary/Endpoints/Login/UserLoginEndpoint.cs
Normal file
37
ApiEfCoreLibrary/Endpoints/Login/UserLoginEndpoint.cs
Normal 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!");
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user