Fixed new user username formating
This commit is contained in:
@@ -40,8 +40,10 @@ public class ClientCredentialsTokenHandler(ILogger<ClientCredentialsTokenHandler
|
||||
|
||||
if (!response.IsSuccessStatusCode)
|
||||
{
|
||||
logger.LogWarning("HTTP request failed with status {StatusCode} for {Method} {RequestUri}",
|
||||
response.StatusCode, request.Method, request.RequestUri);
|
||||
var content = await response.Content.ReadAsStringAsync(cancellationToken);
|
||||
logger.LogWarning("HTTP request failed with status {StatusCode} for {Method} {RequestUri}. Details: {Details}",
|
||||
response.StatusCode, request.Method, request.RequestUri, content);
|
||||
|
||||
}
|
||||
|
||||
return response;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using PostFundManagement.Application.Abstractions.Services;
|
||||
using PostFundManagement.Application.Abstractions.Services;
|
||||
using PostFundManagement.Application.Services.Shared;
|
||||
using PostFundManagement.Domain;
|
||||
using PostFundManagement.Domain.Abstractions;
|
||||
@@ -147,10 +147,30 @@ public sealed class UserService(IDbContextFactory<ApplicationDbContext> contextF
|
||||
if (await context.Users.AnyAsync(u => u.Email == email, cancellationToken))
|
||||
return Result.Fail(ValidationError.Create("User with this email already exists."));
|
||||
|
||||
// Normalize and sanitize request.UserName for ASP.NET Core Identity / Skoruba
|
||||
// IdentityServer rejects user names containing whitespace or disallowed characters
|
||||
var userName = request.UserName?.Trim();
|
||||
if (string.IsNullOrWhiteSpace(userName))
|
||||
{
|
||||
userName = email;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Replace whitespace with dots and filter to allowed Identity characters
|
||||
userName = System.Text.RegularExpressions.Regex.Replace(userName, @"\s+", ".").ToLowerInvariant();
|
||||
userName = System.Text.RegularExpressions.Regex.Replace(userName, @"[^a-z0-9_.\-@+]", "");
|
||||
if (string.IsNullOrWhiteSpace(userName))
|
||||
{
|
||||
userName = email;
|
||||
}
|
||||
}
|
||||
request.UserName = userName;
|
||||
request.Email = email;
|
||||
|
||||
var createUserResult = await skorubaService.CreateUserAsync(request, cancellationToken);
|
||||
|
||||
if (createUserResult.IsFailed)
|
||||
return Result.Fail(CreateError.Create("Failed to create user."));
|
||||
return Result.Fail(CreateError.Create(createUserResult.Errors.FirstOrDefault()?.Message ?? "Failed to create user."));
|
||||
|
||||
var newUserId = Guid.Parse(createUserResult.Value.Trim());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user